使用Xtrabackup恢復以.xb結尾的數據備份


前言

從線上sql server備份的數據文件是以.xb結尾的.

想要在本地恢復到mysql中,xb結尾的數據還只能在linux系統中恢復,

所以用xshell連接公司本地的linux電腦,

安裝mysql,嘗試了線上安裝(網速早上好,其他時間段幾kb/s...emmmm)

后面到https://dev.mysql.com/downloads/mysql/5.7.html#downloads

下載mysql 5.7版本;

ftp上傳到服務器中,

解壓:tar xvf FileName.tar

依次安裝:

 rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm 
 rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm 
 rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm 
 rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

啟動mysql服務:server mysqld start

但是5.7版本以后會有默認密碼,可以通過:

cat /var/log/mysqld.log |grep password

查看.

而且如果想要遠程連接,還得設置一下:

先進入mysql

mysql -uroot -p

use mysql;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

就可以了.

但是我自己本地用,就偷下懶.

vim /etc/my.cnf
在空白行加上一句:skip-grant-tables(跳過驗證) 

這樣就可以連接linux下的mysql了;

下一步,想要恢復數據庫,要得要下載安裝xtrabackup

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 

rpm -qa |grep xtrabackup

ps:5.7版本得安裝24版的xtrabackup

准備恢復數據啦!

目前物理備份集文件有3種格式:

  • tar 壓縮包 (.tar.gz 后綴)
  • xbstream 壓縮包 (.xb.gz 后綴)
  • xbstream 文件包(_qp.xb 后綴)

對於tar 壓縮包 (.tar.gz 后綴),使用命令:

tar -izxvf <數據備份文件名>.tar.gz -C /home/mysql/data
對於xbstream 壓縮包 (.xb.gz 后綴),使用命令:

gzip -d -c <數據備份文件名>.xb.gz | xbstream -x -v -C /home/mysql/data


對於xbstream 文件包(_qp.xb 后綴),使用命令:

解包

cat <數據備份文件名>_qp.xb | xbstream -x -v -C /home/mysql/data

  

MySQL 5.6/5.7解壓

innobackupex --decompress --remove-original /home/mysql/data

  

MySQL 8.0解壓

xtrabackup --decompress --remove-original --target-dir=/home/mysql/data

  

執行如下命令,恢復解壓好的備份文件。

MySQL 5.6/5.7

innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data

  

MySQL 8.0

xtrabackup --prepare --target-dir=/home/mysql/data
xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/home/mysql/data

  

為避免版本問題,需修改backup-my.cnf參數,具體操作步驟如下。
執行如下命令,以文本方式編輯backup-my.cnf文件。

vi /home/mysql/data/backup-my.cnf 

自建數據庫不支持如下參數,需要注釋掉。

#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#rds_encrypt_data
#innodb_encrypt_algorithm
#redo_log_version
#master_key_id
#server_uuid

  

還有可能遇到一個問題是 出現什么log長度不一致,

只要把當前文件夾下報錯的log rm -rf xxxx 即可;

但還有可能遇到一個問題:解包並執行恢復后,重啟mysql報了一個錯誤

百度了半天,終於解決了;

chmod -R 777 /var/lib/mysql
對文件夾提權 

然后再次重啟就搞定啦!

 

 

補充:

解包:	xbstream -x -C ./ < ./cdb245337_backup_20200630000254.xb
		xtrabackup --decompress --target-dir=./
		xtrabackup --prepare  --target-dir=./
		innobackupex --defaults-file=/mysql/data/backup-my.cnf --apply-log ./
		chmod -R 777 /var/lib/mysql
		systemctl start mysqld

  


免責聲明!

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



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