admin管理员组文章数量:1571525
我们将现有的无数据的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
autof
mysql.ibd
数据恢复
首先将MysqlB的Data文件夹中,以MysqlB的库为名的文件夹复制到MysqlA的Data文件夹中
之后将MysqlB的Data文件夹中的以下文件复制并覆盖到MysqlA的Data文件夹中
ibdata1
ib_logfile0
ib_logfile1
ib_buffer_pool
autof
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
autof
mysql.ibd
同时将之前备份的MysqlA的以上文件重新复制回来,此时可以看到数据库中原本恢复过来的库都消失不见了,不过MysqlA的库表都回来了
执行转储Sql
如果MysqlA的数据不需要保留则不用看这一步
此时一一执行之前转储的所有sql文件,MysqlB的数据则会一步步恢复
最后更新于2022年3月18日
原创不易,如果该文章对你有所帮助,望左上角点击关注~如有任何技术相关问题,可通过评论联系我讨论,我会在力所能及之内进行相应回复以及开单章解决该问题.
该文章如有任何错误请在评论中指出,感激不尽,转载请附出处!
个人博客首页:https://blog.csdn/yjrguxing ——您的每个关注和评论都对我意义重大
版权声明:本文标题:Mysql8通过Data文件恢复数据 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1725749370a1040599.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论