mysq8.0 10061 连接失败后进行ibd数据恢复

mysq8.0 10061 连接失败后进行ibd数据恢复

月光魔力鸭

2024-08-23 10:13 阅读 29 喜欢 0

最近一段时间(大约一两周内) windows下安装的mysql8 已经连续两次连接失败,报错10061,同时mysql服务启动失败了,第一次还解决了,第二次怎么都无法启动了,这里做个记录,同时也得把数据恢复回来。

现象和报错

通过navicat 可以在操作大数据的时候,手动断开或其他操作,导致本地服务中断,连接报错 10061 . 同时查看service.msc下的mysql服务也无法启动了。

第一次的恢复操作

查过资料后大致的思路是这样的,先将原有的data下的所有文件进行备份(重要的一步,防止失败丢失数据) . 然后清空data目录下文件,删除mysql服务,重新初始化mysql,安装服务,启动服务,这样数据库就可以访问了,但是没有数据。 然后停止服务,将data目录下新生成的文件全部清空,将原来备份的文件恢复过来,再次重启服务,就可以看到数据了。 我第一次通过这个方式成功了,但是第二次失败了,还原文件后怎么也无法启动服务了。无奈只能通过ibd进行重建恢复数据。

各个步骤的操作

show variables like '%datadir%'

在还可以连接访问的时候是可以用这个的,但是现在访问不了了,只能看自己找了,一般都在默认安装目录下,如果变更过的话,找下 my.inimy.cnf .

mysqld --remove
mysqld --initialize
mysqld --initialize-insecure

我用的是第一个

mysqld --install
net start mysql
# 可能不叫mysql 叫 mysql8 或其他名字

通过ibd进行数据恢复

步骤大体为: 如果有备份最好了,直接用备份.. 总之 ,ibd是最后的最后的方法了。 创建一个同名数据库,然后根据ibd 恢复出建表语句,创建对应的表结构,玻璃tablespace ,更换ibd文件,还原tablespace 。

通过ibd 还原建表语句

ibd2sdi --dump-file name.txt name.ibd

会生成一个表的结构,根据数据创建建表语句。 然后建表后通过drop tablespace 和 import tablespace 来导入数据。

alter table tablename DISCARD TABLESPACE;
alter table tablename IMPORT TABLESPACE;

很幸运的是已经有人做了工具了,为了节省时间,我们直接使用工具 https://github.com/ddcw/ibd2sql : 通过python将ibd的数据提取出来,不止是表结构,包括数据等都可以提取出来,当然还有很多其他的功能,目前我没有使用到。

由于不会使用python ,没办法做扩展,因为数据库表太多,一个文件一个文件来处理就太麻烦了,还有索引依赖问题,于是通过js写了一个批量工具,具体代码放在链接中(包括python的工具).

下载地址 : http://minioapi.byyui.com:8888/soft/ibd2sql-main.zip

转载请注明出处: https://chrunlee.cn/article/mysql-10061-backup-data.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
如果您由于各种各样的原因,不幸丢失了数据、想恢复数据,您在互联网上搜索解决办法,会发现,DiskGenius这款软件是排名第一的解决方案
今天用github登录自己网站的时候,竟然意外的失败了,查了下日志,发现报错:Request forbidden by administrative rules 。
微信dat是用什么软件打开?微信dat是什么?如何查看呢? 微信的dat文件是微信用于缓存PC端微信的图片,然后对图片进行了加密的处理。所以是可以删除的,有些朋友data文件夹下有十几G的,都是可以删除的,但是最好确保这些文件都已经没有用处了再进行删除。 下面给大家介绍一个能够在线解码微信dat的网站。
虽说docker已经大名鼎鼎,但在之前一直都未上手使用过,即便是前一阵子想挂下京东的京豆(使用docker)也给耽搁了,一直的感觉就是这货应该跟vm没啥区别吧,应该就是更方便更好用更适合开发者。
最近有实现作业的展示的需求,在这里仅仅记录下当时自己的思路,大体如何实现的,这里并不体现代码,只有思路。
简单记录下openssl 编译x64 以及在visual studio 中附加openssl库的过程,过程很简单,不过不是我的专业,所以比较耗时.. 很多小细节的问题。
最近一直在了解关于个人支付的问题。由于之前一直想实现个人支付,但是目前微信和支付宝的支付接口都需要企业或个体户资质,导致没办法实现,无奈只能走向这个道路。 说是免签,实际上就是拿到收款金额来做些事情。
日常使用`sublime text3`的时候,每次一打开都会提示让下载最新版本,可给愁死了。那么如何取消自动更新的提示呢?