Mysql8通过Data文件恢复数据

我们将现有的无数据的Mysql叫做MysqlA,另一个有数据Mysql叫做MysqlB。

备份Data文件

将MysqlB的Data文件复制到桌面进行备份,如果你不确定Data文件在哪可以用以下指令查询

show global variables like "%datadir%";

如果此时MysqlB已损坏,无法执行sql,那么此时分两种情况

你的Mysql是解压缩版

如果你的Mysql是解压缩版,那么大概率可以在系统环境变量中查询到Mysql\bin文件夹的位置,找到该文件夹后,往回退一级到Mysql文件夹下寻找Data文件,如果Data文件不存在,打开my.ini配置文件,寻找datadir参数后的文件路径,这就是Data文件夹的所在

你的Mysql是msi安装包版

安装包版的安装位置默认是

C:\Program Files\MySQL
C:\Program Files (x86)\MySQL
C:\ProgramData\MySQL

Data文件默认存放位置是

C:\ProgramData\MySQL\MySQL Server 8.0\Data

此时就可以正常备份Data文件了

备份ibdata1文件

如果你的MysqlA是空库,可以跳过这一步

如果MysqlA中也有数据不能丢失,那么需要备份以下文件,位置在此Mysql下的Data文件夹中

ibdata1
ib_logfile0
ib_logfile1
ib_buffer_pool
auto.cnf
mysql.ibd

数据恢复

首先将MysqlB的Data文件夹中,以MysqlB的库为名的文件夹复制到MysqlA的Data文件夹中
之后将MysqlB的Data文件夹中的以下文件复制并覆盖到MysqlA的Data文件夹中

ibdata1
ib_logfile0
ib_logfile1
ib_buffer_pool
auto.cnf
mysql.ibd
需要注意如果MysqlA有需要保留的数据,在复制并覆盖文件之前需要先对MysqlA的以上文件进行备份

如果你的MysqlA没有数据需要保留,那么到这一步MysqlB的所有数据就恢复完成了
如果你的MysqlA有数据需要保留,请继续往下看

导出Sql

如果MysqlA的数据不需要保留则不用看这一步

将MysqlB恢复到MysqlA的所有库通过Navicat转储Sql文件,包括结构和数据,记得以库名做sql文件命名,并且统一保存

恢复MysqlA文件

如果MysqlA的数据不需要保留则不用看这一步

此时MysqlB的所有sql文件都已经保存下来了,下一步删除MysqlA中从MysqlB的Data文件复制过来的库文件夹以及以下文件

ibdata1
ib_logfile0
ib_logfile1
ib_buffer_pool
auto.cnf
mysql.ibd

同时将之前备份的MysqlA的以上文件重新复制回来,此时可以看到数据库中原本恢复过来的库都消失不见了,不过MysqlA的库表都回来了

执行转储Sql

如果MysqlA的数据不需要保留则不用看这一步

此时一一执行之前转储的所有sql文件,MysqlB的数据则会一步步恢复

最后更新于2022年3月18日
原创不易,如果该文章对你有所帮助,望左上角点击关注~如有任何技术相关问题,可通过评论联系我讨论,我会在力所能及之内进行相应回复以及开单章解决该问题.

该文章如有任何错误请在评论中指出,感激不尽,转载请附出处!
个人博客首页:https://blog.csdn.net/yjrguxing ——您的每个关注和评论都对我意义重大

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值