xtrabackup 備份mysql

全備命令
innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user backup_user --password 123456 /backup/full_20190527
備份的路徑爲
/backup/full_20190527

[root@localhost full_20190527.bk]#  ls -al
total 405608
drwxr-x---. 7 root  root      4096 May 26 23:08 .
drwxr-xr-x. 3 mysql root      4096 May 26 23:07 ..
-rw-r-----. 1 root  root       488 May 26 23:08 backup-my.cnf
-rw-r-----. 1 root  root     47047 May 26 23:08 ib_buffer_pool
-rw-r-----. 1 root  root 415236096 May 26 23:07 ibdata1
drwxr-x---. 2 root  root      4096 May 26 23:08 mysql
drwxr-x---. 2 root  root      4096 May 26 23:08 performance_schema
drwxr-x---. 2 root  root      4096 May 26 23:08 sbtest
drwxr-x---. 2 root  root     12288 May 26 23:08 sys
drwxr-x---. 2 root  root      4096 May 26 23:08 test
-rw-r-----. 1 root  root        21 May 26 23:08 xtrabackup_binlog_info
-rw-r-----. 1 root  root       119 May 26 23:08 xtrabackup_checkpoints
-rw-r-----. 1 root  root       535 May 26 23:08 xtrabackup_info
-rw-r-----. 1 root  root      2560 May 26 23:08 xtrabackup_logfile

這個是確認當前備份的binlog位置
[root@localhost full_20190527.bk]# cat xtrabackup_binlog_info 
mysql-bin.000013        640

這個是確認備份的lsn位置
[root@localhost full_20190527.bk]# cat xtrabackup_checkpoints 
backup_type = full-backuped
from_lsn = 0
to_lsn = 2558549859
last_lsn = 2558549868
compact = 0
recover_binlog_info = 0

將數據文件刪除
cd /data/3306/
rm -rf *

恢復數據,注意此時只是恢復數據庫,數據文件均還在備份的目錄
innobackupex --apply-log /backup/full_20190527
將恢復的數據拷貝回數據庫指定的目錄
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /backup/full_20190527

注意,目錄權限須要賦予給mysql
[root@localhost 3306]# ls -al
total 516192
drwxr-xr-x. 7 mysql mysql      4096 May 26 23:31 .
drwxr-xr-x. 3 mysql root       4096 Apr 16 23:33 ..
-rw-r-----. 1 root  root      47047 May 26 23:31 ib_buffer_pool
-rw-r-----. 1 root  root  415236096 May 26 23:31 ibdata1
-rw-r-----. 1 root  root   33554432 May 26 23:31 ib_logfile0
-rw-r-----. 1 root  root   33554432 May 26 23:31 ib_logfile1
-rw-r-----. 1 root  root   33554432 May 26 23:31 ib_logfile2
-rw-r-----. 1 root  root   12582912 May 26 23:31 ibtmp1
drwxr-x---. 2 root  root       4096 May 26 23:31 mysql
drwxr-x---. 2 root  root       4096 May 26 23:31 performance_schema
drwxr-x---. 2 root  root       4096 May 26 23:31 sbtest
drwxr-x---. 2 root  root      12288 May 26 23:31 sys
drwxr-x---. 2 root  root       4096 May 26 23:31 test
-rw-r-----. 1 root  root         26 May 26 23:31 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root  root        539 May 26 23:31 xtrabackup_info
-rw-r-----. 1 root  root          1 May 26 23:31 xtrabackup_master_key_id

[root@localhost 3306]# chown -R mysql.mysql *
[root@localhost 3306]# ls -al
total 516192
drwxr-xr-x. 7 mysql mysql      4096 May 26 23:31 .
drwxr-xr-x. 3 mysql root       4096 Apr 16 23:33 ..
-rw-r-----. 1 mysql mysql     47047 May 26 23:31 ib_buffer_pool
-rw-r-----. 1 mysql mysql 415236096 May 26 23:31 ibdata1
-rw-r-----. 1 mysql mysql  33554432 May 26 23:31 ib_logfile0
-rw-r-----. 1 mysql mysql  33554432 May 26 23:31 ib_logfile1
-rw-r-----. 1 mysql mysql  33554432 May 26 23:31 ib_logfile2
-rw-r-----. 1 mysql mysql  12582912 May 26 23:31 ibtmp1
drwxr-x---. 2 mysql mysql      4096 May 26 23:31 mysql
drwxr-x---. 2 mysql mysql      4096 May 26 23:31 performance_schema
drwxr-x---. 2 mysql mysql      4096 May 26 23:31 sbtest
drwxr-x---. 2 mysql mysql     12288 May 26 23:31 sys
drwxr-x---. 2 mysql mysql      4096 May 26 23:31 test
-rw-r-----. 1 mysql mysql        26 May 26 23:31 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 mysql mysql       539 May 26 23:31 xtrabackup_info
-rw-r-----. 1 mysql mysql         1 May 26 23:31 xtrabackup_master_key_id

增量備份,增量備份必須居於全量備份的基礎上,

mysql> select * from test;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

作一次全備
innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user backup_user --password 123456 /backup/full_20190527
作一次增量備份,注意incremental-basedir 指向的是全備
mysql> insert into test values(2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)
innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user backup_user --password 123456 --incremental /backup/full_20190527_1 --incremental-basedir=/backup/full_20190527

第二次增量備份,注意第二次和之後的ncremental-basedir 都是指向上一次的增量
mysql> insert into test values(3);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)
innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user backup_user --password 123456 --incremental /backup/full_20190527_2 --incremental-basedir=/backup/full_20190527_1


[root@localhost full_20190527_2]# cat ../full_20190527/xtrabackup_binlog_info 
mysql-bin.000001        159
[root@localhost full_20190527_2]# cat ../full_20190527/xtrabackup_checkpoints 
backup_type = full-prepared
from_lsn = 0
to_lsn = 2558553705
last_lsn = 2558553716
compact = 0
recover_binlog_info = 0

[root@localhost full_20190527_2]# cat ../full_20190527_1/xtrabackup_binlog_info 
mysql-bin.000001        919
[root@localhost full_20190527_2]# cat ../full_20190527_1/xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 2558553705
to_lsn = 2558554071
last_lsn = 2558554080
compact = 0
recover_binlog_info = 0


[root@localhost full_20190527_2]# cat xtrabackup_binlog_info 
mysql-bin.000001        1174
[root@localhost full_20190527_2]# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 2558554071
to_lsn = 2558554453
last_lsn = 2558554462
compact = 0
recover_binlog_info = 0




數據庫恢復
增量備份的恢復大致爲3個步驟
恢復徹底備份
恢復增量備份到徹底備份(開始恢復的增量備份要添加–redo-only參數,到最後一次增量備份去掉–redo-only參數)
對總體的徹底備份進行恢復,回滾那些未提交的數據

先將全備的數據恢復
innobackupex --apply-log --redo-only /backup/full_20190527
將第一次增量恢復到全備數據
innobackupex --apply-log --redo-only /backup/full_20190527 --incremental-dir=/backup/full_20190527_1

將第二次增量恢復到全備數據(注意恢復最後一個增量備份時須要去掉–redo-only參數,回滾xtrabackup日誌中那些還未提交的數據)
innobackupex --apply-log /backup/full_20190527 --incremental-dir=/backup/full_20190527_2

把全部合在一塊兒的徹底備份總體進行一次apply操做,回滾未提交的數據:
innobackupex --apply-log /backup/full_20190527

將恢復的數據拷貝回數據庫指定的目錄
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /backup/full_20190527

修改恢復文件的權限
chown -R mysql.mysql *

確認數據
mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)


恢復完以後,恢復後的數據庫會將binlog重置。 mysql

若是是跨庫,則能夠追加binlog的方式繼續恢復sql

若是是跨庫,能夠追加binlog,經過binglog追加歸檔
查看當前恢復binlog的位置

[root@localhost full_20190527_2]# cat xtrabackup_binlog_info 
mysql-bin.000001        1174


mysql> fulsh logs;

將binlog拷貝到目標庫

[root@localhost backup]# mysqlbinlog --no-defaults mysql-bin.000001 --start-position=1174|mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.

mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    7 |
+------+
6 rows in set (0.00 sec)
相關文章
相關標籤/搜索