参考以下两篇文档整理:
(文档1)https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186631.2.1.434247acfAIAwY
(文档2)https://yq.aliyun.com/articles/688509
以下为自己整理过程:
(该出是复制文档1中的原文:)
开源软件Percona Xtrabackup可以用于对数据库进行备份恢复,您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。
1、注意事项
本文使用Linux7的操作系统以及MySQL5.7版本为例进行演示。
操作系统中已安装数据恢复工具Percona XtraBackup,您可以从Percona XtraBackup官网下载安装。
MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2.3。
MySQL 5.7版本需要安装 Percona XtraBackup 2.4,安装指导请参见官方文档Percona XtraBackup 2.4。
MySQL 8.0版本需要安装 Percona XtraBackup 8.0,安装指导请参见官方文档Percona XtraBackup 8.0。
2019年2月20日后创建的MySQL 5.6实例,数据备份文件的格式为xbstream文件包 (_qp.xb 后缀)。
本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。
2、从RDS for MySQL备份文件到本地不走请参考“文档1”(https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186631.2.1.434247acfAIAwY)的“备份恢复操作步骤”
3、“文档1”中第“11”步骤中的“说明 本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径”,其中“/home/mysql/data”并不是数据库的“数据库目录”,一开始我按照文档理解以为是数据库目录,解压到之类导致mysql不能启动了,在这里耽误了不少时间,而是一个自定义的普通的目录而已,比如“/home/mydir”
4、第14步很重要,不能少 ,并且要放到第13步前面
5、“文档1”中第“13”步骤中的“innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data”,可以改为第3步中的路径,比如我改为了“innobackupex --defaults-file=/home/mydir/backup-my.cnf --apply-log /home/mydir”,也就是把从阿里云下载的压缩包解压到“/home/mydir”
6、第4步成功执行完后,把/home/mydir目录中数据库目录复制到你服务器上mysql的“数据库目录”中(也就是mysql配置文件 my.ini的datadir=
"xxxx"指向的目录,其中xxxx是你配置文件的实际位置
)
7、然后执行“文档1”中的第15步,第15步不能缺少,不然没有权限
执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
chown -R mysql:mysql /home/mydir
8、此时还没有完全恢复成功,如果此时用navicat链接数据库后会提示“table “xxx” doesn`t exist”,
重要的一步(参考了https://blog.csdn.net/anonymking/article/details/79589623,重点参考第3部和第4部):
总结与提示: 1、记得先关闭MySQL服务 2、建议使用专业工具进行数据备份,以免浪费时间。 1、知识准备:
datadir="D:/mysql/data" 2、数据备份:
3、部分备份出现问题 1、类型是 MyISAM 的表对应数据文件是 "xxx.frm"、"xxx.MYD"、"xxx.MYI",这种情况下直接拷贝没有问题。 2.1、类型是 InooDB 的表对应数据文件是 "xxx.frm",而这种情况下直接拷贝就出现问题了 -- “table “xxx” doesn`t exist”。 2.2、解决办法: InnoDB 数据库表拷贝是注意要把data文件夹下的 ibdata1 也同时拷贝过去(原来的 ibdata1备份其它位置后删除掉) 若还是出现问题的话就把新的data文件夹下的 ib_logfile* 文件备份其它位置后删除掉,或者说带着 ib_logfile* 文件也一起拷贝 最后记得启动MySQL服务就可以了 |
9、如果扔完无法重启mysql,并且报错如下:
Redirecting to /bin/systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
进入mysql错误日志,看到下面红色字体了吗?说明mysql没权读写,就是权限不够
2019-08-28T06:18:38.812920Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 2019-08-28T06:18:39.440028Z 0 [Note] Binlog end |
请把/home/mydir的 ibdata1、 ib_logfile*文件用命令
chown -R mysql:mysql ibdata1以及
chown -R mysql:mysql ib_logfile0
chown -R mysql:mysql ib_logfile1
等修改用户权限
然后再进行第8步,确保拷贝到数据库文件的存储位置的文件有mysql的读写权限