Xtrabackup物理備份恢復及主從搭建全過程


xtrabackup物理備份

  • 對Mysql數據庫進行備份,邏輯備份或工具傳輸可能會遇到查詢超時等各種問題。使用xtrabackup進行物理備份,且是熱備份。第一步進行熱備份:
## 下面腳本是使用qpress進行壓縮版本的產生qp壓縮文件,降低備份大小。xbstream解壓后出現的都是qp壓縮文件。qpress壓縮是默認的壓縮工具。
xtrabackup --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup
 --target-dir=/home/mysql/ --user=root --password=root
 --host 192.168.0.1 --port 3306 --parallel=10
 --compress-chunk-size=1024K  --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10
 --slave-info --stream=xbstream --compress --compress-threads=10 > mysql571.tar.gz
 ## 下面的是非壓縮版本,解壓xbstream后直接就是數據庫文件
 xtrabackup --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup 
 --target-dir=/home/mysql/ --user='root' --password='root' 
 --host 192.168.0.1 --port  23306 --parallel=10 
 --compress-chunk-size=1024K  --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10 --slave-info  --compress-threads=10 > mysql571.tar.gz
  • 備份時長與數據庫大小相關:一般500G以內在10-20分鍾,大於1T可能需要花費30分鍾以上。
  • 第2步拿熱備份文件傳到目標主機上,准備進行恢復。

xtrabackup恢復

  • 由於我們的物理備份是個壓縮文件,所以第1步需要解壓縮:
//需要xbstream命令,表示從aaa.stream備份文件解壓到/backup/tmp目錄下
xbstream --parallel=10 -xv < /data/mysql/aaa.xbstream -C /data/mysql/backup/tmp
//如果備份的時候使用了qpress進行壓縮,則需要進一步解壓縮qp文件,使用如下命令:
//注意它依賴qpress命令,可能需要單獨安裝
xtrabackup --decompress --remove-original --parallel=10 --target-dir=/data/mysql/backup/tmp
  • 第2步將備份過程中的事務等熱信息進行prepare:
xtrabackup --prepare --parallel=10 --target-dir=/data/mysql/backup/tmp
  • 第3步將備份文件恢復到目標地址:
    • 注意這一步驟恢復到目標地址,要求恢復目標數據庫是停運狀態,且目標地址的data,redolog,undolog,binlog都是空的才行。否則下面恢復會提示。
//如果是這個備份要恢復好幾個mysql,則可以采用copy-back將復制到目標地址:
xtrabackup --defaults-file=/home/mysql/conf/my.cnf --copy-back --parallel=10  --target-dir=/home/mysql/backup/tmp
//如果是一次性恢復,可以采用--move-back,將tmp下准備好的備份文件移到目標地址
xtrabackup --defaults-file=/data/mysql/conf/my.cnf --move-back --parallel=10  --target-dir=/data/mysql/backup/tmp

  • 恢復時長與數據庫大小相關。大庫第1步解壓縮耗時較多,第3步恢復目標耗時較多。一般500G數據庫,恢復到這邊耗時也在10-20分鍾。
  • 第4步,恢復完成后即可啟動目標數據庫。啟動后目標數據庫將於原備份數據庫,用戶密碼權限完全一致。
//恢復完成后,在data目錄中會有xtrabackup_info的恢復信息。可以用次信息進行主從搭建。
$ cat ../data/xtrabackup_info
uuid = ac94c92b-4e92-11ec-9ec8-fa163e09fc56
name =
tool_name = xtrabackup
tool_command = --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup --target-dir=/home/mysql/ --user=root --password=... --host 192.168.0.1 --port 20001 --parallel=10 --compress-chunk-size=1024K --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10 --slave-info --stream=xbstream
tool_version = 2.4.12
ibbackup_version = 2.4.12
server_version = 5.7.21
start_time = 2021-11-26 16:01:07
end_time = 2021-11-26 16:27:20
lock_time = 0
binlog_pos = filename 'mysql-bin.000127', position '514519689', GTID of the last change 'e8c1933c-f9bd-11e8-88c2-fa163e09fc56:1-30042640'
innodb_from_lsn = 0
innodb_to_lsn = 77942856651
partial = N
incremental = N
format = xbstream
compact = N
compressed = N
encrypted = N

Mysql主從搭建

  • 上面備份恢復完成后,將得到1個與源庫數據一致的數據庫,這倆可以搭建主從同步,也可以再恢復1個數據庫搭建1主2從多從的架構。
  • 第1步驟,編寫主從同步語句在mysql命令行中運行。如果原庫沒有主從信息,則只需要將從庫指向主庫進行同步即可。
//直接指定主庫進行同步
CHANGE MASTER TO
MASTER_HOST='192.168.0.1',
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_PORT=3306,
master_auto_position=1;
//開啟從主庫同步
start slave
//查看主從同步狀態。主要看master_host對不對,Slave_IO_running是否yes,Slave_SQL_running是否為yes
show slave status\G;
  • 第1步中如果原庫已經有過主從配置,恢復過來的時候也會有主從信息,需要先刪除原來的主從配置,再配置主從:
//將停止原來的關系,清除原來的主從關系。
stop slave;
reset slave all;
//如果需要重置GTID,則運行如下語句,GITD段來源於上面備份文件的xtrabackup_info中:
SET GLOBAL gtid_purged='e8c1933c-f9bd-11e8-88c2-fa163e09fc56:1-30042640';
  • 第2步,如果從庫需要做讀節點,主庫做讀寫節點,則可以給從庫做只讀配置:
set global read_only=on;
  • 最后就可以進行1主多從,讀寫分離的操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM