RDS的xb文件恢复到本地mysql5.6版本数据库

安装qpress的软件

链接:https://pan.baidu.com/s/1njNRz3qSc0pYYSjbEzSI_Q      提取码:1nxe

yum -y localinstall  percona-xtrabackup-2.3.5-1.el7.x86_64.rpm
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
 
 
[root@haha data]# vim /etc/yum.repos.d/percona-release.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0   这里写成不检查
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
 
 
 
[root@haha data]# yum -y install qpress-11-1.el7.x86_64

创建数据恢复目录并恢复数据

解包:
cat hins9028927_data_20190927033738_qp.xb |xbstream -x -v -C /data/mysql/data/
解压:
innobackupex --decompress --remove-original /data/mysql/data/
 
执行如下命令,查询解压后生成的文件
ll /data/mysql/data/
 
执行如下命令,恢复解压好的备份文
innobackupex --defaults-file=/data/mysql/data/backup-my.cnf --apply-log /data/mysql/data/

查看本地数据库的数据目录位置:

 自建数据库不支持如下参数,需要注释掉。

[root@haha mysql]# vim /data/mysql/data/backup-my.cnf
 
# This MySQL options file was generated by innobackupex.
 
# The MySQL server
[mysqld]
#innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000
innodb_fast_checksum=false
innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0
skip-grant-tables
 
rds_encrypt_data=false
innodb_encrypt_algorithm=aes_128_ecb

 授权数据目录

chown -R mysql:mysql /data/mysql/data/
重启数据库
systemctl restart mysqld

注意:

一、数据备份:
1、完整备份:把 datadir 对应的 datadir 直接拷贝就可以
2、部分备份:data 文件夹下的文件夹都表示一个表,可以单独备份
二、部分备份出现问题:
1、类型是 MyISAM 的表对应数据文件是 "xxx.frm"、"xxx.MYD"、"xxx.MYI",这种情况下直接拷贝没有问题。
2.1、类型是 InooDB 的表对应数据文件是 "xxx.frm",而这种情况下直接拷贝就出现问题了 -- “table “xxx” doesn`t exist”。
2.2、解决办法:  InnoDB 数据库表拷贝是注意要把data文件夹下的 ibdata1 也同时拷贝过去  若还是出现问题的话就把新的data文件夹下的 ib_logfile* 文件删除掉,或者说带着 ib_logfile*
文件也一起拷贝  最后记得启动MySQL服务就可以了

 有时候需要知道默认的5.6版本用的是MyIsam引擎,而rds5.6使用的默认是innodb引擎,所以需要在配置文件中注明,需要和rds保持一致!!!

把需要的库直接复制过去到原来的mysql目录,即/var/lib/mysql下面,此时查看下db目录数据是否恢复,如果是显示 “table “xxx” doesn`t exist”,就是用上面注意里的方法解决即可。

cd /var/lib/mysql
mv ibdata1 /haha/
mv ib_logfile* /haha/
 
cd /data/mysql/data
mv db/ /var/lib/mysql
重启数据库
systemctl restart mysqld

 此时是用navicat连接之后查看数据是否恢复,如下图:

 这样数据终于恢复了,哈哈

总结:

这样的数据只能在本地恢复,如果之前本地有很多的数据库,那么不建议这样做,要不然整个数据库就崩了。

参考博客:

https://blog.csdn.net/pengjunlee/article/details/81212250     CentOS7下使用YUM安装MySQL5.6
 
https://blog.csdn.net/a18838964650/article/details/82800621  安装qpress软件
 
https://www.cnblogs.com/pangchunyu/p/11422830.html  文章介绍补充
 
https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186631.2.1.434247acfAIAwYhttps://home.firefoxchina.cn  阿里云rds的xb文件恢复到本地数据库
 
 https://blog.csdn.net/anonymking/article/details/79589623  解决MySQL 恢复数据库表时提示 table “xxx” doesn`t exist

转载原文:RDS的xb文件恢复到本地mysql5.6版本数据库

发表评论

邮箱地址不会被公开。 必填项已用*标注