参考博客:
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
安装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 [[email protected] 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 [[email protected] 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/
查看本地数据库的数据目录位置:
自建数据库不支持如下参数,需要注释掉。
[[email protected] 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服务就可以了
把需要的库直接复制过去到原来的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连接之后查看数据是否恢复,如下图:
这样数据终于恢复了,哈哈
总结:
这样的数据只能在本地恢复,如果之前本地有很多的数据库,那么不建议这样做,要不然整个数据库就崩了。