1. 程式人生 > 實用技巧 >使用Xtrabackup恢復以.xb結尾的資料備份

使用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