阿里云RDS实例备份下载到Windows恢复到自建数据库-MySQL 5.7版本

背景

由于考虑在不影响线上环境的情况下,将线上数据库(RDS)的数据备份到我本地Windows数据库中,好排查数据库异常和方便做相应查询统计功能,所以就不使用传输数据的方式来做(线上库的数据很大,几百G的数据量),使用下载备份实例的方式还原某天的数据;废话不多说,一起来看下;

过程

开始的时候会根据RDS提供的数据恢复方法恢复,我感觉有点麻烦,就直接不用了,感兴趣的朋友可以去看下官网的文档;

https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186623.6.758.27d61c12Oc1TXD

于是网上百度了一下,看下其他人的解决方案,整理了一下:

方法一(推荐):

https://blog.csdn.net/leigelg/article/details/84825094

  1. 进入阿里云控制台备份实例

2.实例备份好过后,到备份恢复中找到刚才备份的实例点击下载

3.下载后的文件是一个hins6021863_data_20181204062825.tar,将文件解压 解压过后得到hins6021863_data_20181204062825 我们给这个文件加一个后缀.zip 变成了hins6021863_data_20181204062825.zip.继续解压,解压后得到数据库的文件

4.cmd进入数据库

查看数据库储存数据的位置,然后将文件夹拖入到储存数据的文件夹中就可以了

5.使用navicat就可以看到刚才导入的数据库了

到此,会存在一个问题,就是 每张表打开都报错:doesn't exist

解决这个问题也很简单,

1、拷贝RDS备份实例中data文件夹中ibdata1至自建库的data文件夹中(原本自建库的ibdata1备份一下,否则后面自建库的其他数据库表会出错);

2、停掉mysql服务,在配置表my.ini中添加/修改

 innodb_force_recovery = 6

 innodb_purge_threads = 1

3、重启mysql服务就可以了;

可以参照这篇文章

https://www.jianshu.com/p/1c0a8dc21e1d?utm_campaign=shakespeare

 

方法二:

https://www.cnblogs.com/101key/p/11593699.html

一、本地mysql数据库创建与备份库一致的数据库名,如testdb;

二、本地创建与备份库一致的数据库表,记得设置ALTER TABLE tableName1 ROW_FORMAT = compact;

三、停止mysql服务,在数据库的配置文件my.conf或my-default.ini中添加innodb_force_recovery=1  后再启动mysql服务;

四、将表结构和空间脱离

打开DOS命令窗口,依次执行以下命令:

> cd C:\Program Files\MySQL\MySQL Server 5.7\bin\

> mysql -hlocalhost -uroot -p123456

mysql > use testdb;

mysql > alter table tableName1 discard tablespace;

五、用winRAR解压类似“hins6413187_data_20190925065809”文件

六、在解压的数据库名文件夹下找到并复制tableName1.ibd到tableName1.frm同目录下

七、将表结构和空间建立关系

mysql > alter table tableName1 import tablespace;

搞定!

但有个问题是,这种操作很麻烦,只能单表操作,如果数据库表很多,那就凉凉

并且ALTER TABLE tableName1 ROW_FORMAT = compact;中的compact要根据RDS表的结构来,如果是 Dynamic就Dynamic,不一定按compact来;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值