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

  

posted @ 2020-07-14 09:33  i小松i  阅读(1198)  评论(0编辑  收藏  举报