安裝:
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 恢複增量備份時,指明增量備份的目錄
全備:
[[email protected] sss]# innobackupex -H192.168.65.4 -P3308 --user=root --password='123' /root/sss/
然後會在 /root/sss/ 目錄下生成一個以日期時間命名的檔案夾,内容如下:
[[email protected] 2019-09-10_23-01-15]# pwd
/root/sss/2019-09-10_23-01-15
[[email protected] 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
[[email protected] ~]# innobackupex --user=root --password='123' --apply-log /root/sss/2019-09-10_23-01-15/
如果成功,則最後會提示:190910 23:05:40 completed OK!
2.停止資料庫,并清理MySQL資料目錄裡的所有檔案
[[email protected] logs]# service mysqld stop
Shutting down MySQL.... SUCCESS!
3. --copy-back
[[email protected] ~]# 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!
檢視資料目錄:
[[email protected] 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.全備
要在全備的基礎上才能增量,也就是說在增量之前一定要有一個全備。
[[email protected] sss]# innobackupex -H192.168.65.4 -P3308 --user=root --password='123' /root/sss/
2.增量備
[[email protected] 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
[[email protected] sss]# innobackupex -H192.168.65.2 --user=root --password='123' --apply-log --redo-only /root/backup/2019-07-19_17-27-21/
2.對增備做prepare
[[email protected] 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資料目錄裡的所有檔案
[[email protected] logs]# service mysqld stop
Shutting down MySQL.... SUCCESS!
4. --copy-back
[[email protected] ~]# 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/ 為目标機器上的路徑)