安裝:
percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
二進制安裝包,解壓後直接可以使用。
常用參數:
--user=用戶名 連接數據庫使用的用戶名
--password=密碼 連接數據庫使用的用戶對應的密碼
--defaults-file=/etc/my.cnf 指定讀取的數據庫的配置文件
--datadir 指定數據還原的目錄
--database=數據庫名稱 指定某一數據庫備份,若不添加此參數就是對全庫做備份
--no-lock 不鎖表,僅適用於存儲引擎爲innodb,並且不在乎備份位置點時使用。如果有任何DDL語句正在執行或非InnoDB正在更新時,會導致備份數據不一致。如果考慮備份因爲獲得鎖失敗,可以考慮--safe-slave-backup立刻停止複製線程。
--stream=tar 使用tar命令打包,此參數慎用,如使用解壓時必須要帶-i的參數
--socket=/tmp/mysql.sock 指定mysql.sock所在位置,便於備份進程登錄mysql
--port=端口 指定備份數據庫的端口
--no-timestamp 不創建時間戳目錄來存儲備份,而是指定到自己想要的備份文件夾中
--apply-log 重做日誌,備份恢復前準備
--copy-back 備份恢復
--incremental 增量備份(增量備份僅適用於innodb和xtradb引擎)
--incremental-basedir 指明此次的增量備份是基於之前的哪一次備份
--redo-only 再次重做日誌,用於增量備份的恢復過程中
--incremental-dir 恢復增量備份時,指明增量備份的目錄
全備:
[root@test4 sss]# innobackupex -H192.168.65.4 -P3308 --user=root --password='123' /root/sss/
然後會在 /root/sss/ 目錄下生成一個以日期時間命名的文件夾,內容如下:
[root@test4 2019-09-10_23-01-15]# pwd
/root/sss/2019-09-10_23-01-15
[root@test4 2019-09-10_23-01-15]# ll
total 33848
-rw-r-----. 1 root root 444 Sep 10 23:01 backup-my.cnf
drwxr-x---. 2 root root 4096 Sep 10 23:01 employees
-rw-r-----. 1 root root 830 Sep 10 23:01 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Sep 10 23:01 ibdata1
drwxr-x---. 2 root root 4096 Sep 10 23:01 mysql
drwxr-x---. 2 root root 4096 Sep 10 23:01 performance_schema
drwxr-x---. 2 root root 12288 Sep 10 23:01 sys
drwxr-x---. 2 root root 4096 Sep 10 23:01 ttt
drwxr-x---. 2 root root 4096 Sep 10 23:01 ty
-rw-r-----. 1 root root 7340032 Sep 10 23:01 undo001
-rw-r-----. 1 root root 7340032 Sep 10 23:01 undo002
-rw-r-----. 1 root root 7340032 Sep 10 23:01 undo003
-rw-r-----. 1 root root 16 Sep 10 23:01 xtrabackup_binlog_info
-rw-r-----. 1 root root 117 Sep 10 23:01 xtrabackup_checkpoints
-rw-r-----. 1 root root 512 Sep 10 23:01 xtrabackup_info
-rw-r-----. 1 root root 2560 Sep 10 23:01 xtrabackup_logfile
恢復:
1.先 apply-log
[root@test4 ~]# innobackupex --user=root --password='123' --apply-log /root/sss/2019-09-10_23-01-15/
如果成功,則最後會提示:190910 23:05:40 completed OK!
2.停止數據庫,並清理MySQL數據目錄裏的所有文件
[root@test4 logs]# service mysqld stop
Shutting down MySQL.... SUCCESS!
3. --copy-back
[root@test4 ~]# innobackupex --user=root --password='123' /root/sss/2019-09-10_23-01-15/ --copy-back
如果配置文件不是放在默認位置,可以通過 --defaults-file 來指定,回覆的目錄都是根據my.cnf配置文件中的路徑定的,所以如果想回復到哪個目錄,直接修改配置文件中的相關路徑即可
如果成功,最後會提示:190910 23:11:20 completed OK!
查看數據目錄:
[root@test4 data]# ll
total 24620
drwxr-x---. 2 root root 4096 Sep 10 23:11 employees
-rw-r-----. 1 root root 830 Sep 10 23:11 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Sep 10 23:11 ibdata1
-rw-r-----. 1 root root 12582912 Sep 10 23:11 ibtmp1
drwxr-x---. 2 root root 4096 Sep 10 23:11 mysql
drwxr-x---. 2 root root 4096 Sep 10 23:11 performance_schema
drwxr-x---. 2 root root 12288 Sep 10 23:11 sys
drwxr-x---. 2 root root 4096 Sep 10 23:11 ttt
drwxr-x---. 2 root root 4096 Sep 10 23:11 ty
-rw-r-----. 1 root root 20 Sep 10 23:11 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root 512 Sep 10 23:11 xtrabackup_info
發現無文件已經還原好
4.修改文件屬性
5.啓動 MySQL 服務
如果啓動報沒有 error.log 的錯誤,直接在提示的路徑下新建一個空的文件即可;
增量備份:
1.全備
要在全備的基礎上才能增量,也就是說在增量之前一定要有一個全備。
[root@test4 sss]# innobackupex -H192.168.65.4 -P3308 --user=root --password='123' /root/sss/
2.增量備
[root@test4 sss]# innobackupex -H192.168.65.2 --user=root --password='123' --incremental-basedir=/root/backup/2019-07-19_17-27-21/ --incremental /root/increment/
其中 --incremental-basedir 參數指定的是全備的目錄,--incremental 指定的是增量備的目錄。
恢復:
1.對全備做prepare
[root@test4 sss]# innobackupex -H192.168.65.2 --user=root --password='123' --apply-log --redo-only /root/backup/2019-07-19_17-27-21/
2.對增備做prepare
[root@test4 sss]# innobackupex -H192.168.65.2 --user=root --password='123' --apply-log --redo-only /root/backup/2019-07-19_17-27-21/ --incremental-dir=/root/increment/2019-07-19_18-04-38/
前面一個路徑爲全備路徑
--incremental-dir 寫增備路徑
PS:如果還有增備需要恢復,則在做一次第二步,但 --incremental-dir 指定的是其他增備的路徑。
相當於在做增備恢復的時候,第二部的作用就是把其他的增備路徑下的文件全部集中到全備路徑下。
3.停止數據庫,並清理MySQL數據目錄裏的所有文件
[root@test4 logs]# service mysqld stop
Shutting down MySQL.... SUCCESS!
4. --copy-back
[root@test4 ~]# innobackupex --user=root --password='123' -H192.168.65.2 -P3306 --copy-back /root/backup/2019-07-19_17-27-21/
如果配置文件不是放在默認位置,可以通過 --defaults-file 來指定,數據目錄也可以通過 --datadir 來指定
如果成功,最後會提示:190910 23:11:20 completed OK!
遠程備份
innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user root --password 123 --stream=tar /root/binlog/ | gzip |ssh [email protected] "cat - > /root/binlog/$(date +%Y-%m-%d_%H:%m:%S).tar"
PS:在數據庫服務器上執行該語句,吧備份文件放到遠端機器上(192.168.65.3 爲目標機器 IP; /root/binlog/ 爲目標機器上的路徑)