全備命令 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)