InnoDB数据字典操作进行故障排除
InnoDB数据字典操作进行故障排除
- 事情是这样的,因为昨天晚上停电,导致服务器全部关机,早上一到公司就把所有服务启动,当我启动爬虫任务的时候,发现采集提示数据库入库失败,mysql
提示连接失败。我一看这提示应该是mysql服务没启动,我赶忙进入宝塔看看MySQL什么情况,果然是关闭状态,马上重启却重启失败,我看了看错误日志,好像是缺少了启动需要文件,我突然记起前天我手动改了配置文件数据存储位置,而没有使用宝塔提供的数据迁移功能

-
可能手动修改会造成问题,但当时没有问题,我想切换回原来目录应该就可以启动了,说干就干,使用迁移功能切换回原来储存目录,果然能行,服务启动了。
但是第二个问题来,我切换回来后启动采集服务,mysql提示采集数据库表不存在,我马上打开数据库发现所有采集数据表都打不开提示表不存在,查看mysql错误日志提示:Cannot
open table bk_esf_xq/bk_esf_copy from the internal data dictionary
of InnoDB though the .frm file for the table exists. See
http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html
for how you can resolve the problem. -
它说无法从InnoDB的内部数据字典中打开表bk_esf_xq/bk_esf_copy,尽管表存在.frm文件,
.frm 是mysql数据表结构文件.
如果你没有数表结构备份可以使用dbsake提取.frm文件表结构,这是偶然发现的一个工具,文档中它这样介绍自己:dbsake - a (s)wiss-(a)rmy-(k)nif(e) for MySQL
作者一定是一个对 mysql 很有心得的人,工具从下载,安装到使用,简单,利落。
$ curl -s get.dbsake.net > dbsake
$ chmod u+x dbsake
$ ./dbsake frmdump [frm-file-path]
- MySQL提供了解决问题的连接http://dev.mysql.com/doc/refma

本文记录了一次因停电导致MySQL服务启动失败的问题及解决过程。通过更改数据存储位置并利用dbsake和.ibd文件成功恢复了丢失的数据表。
最低0.47元/天 解锁文章
374

被折叠的 条评论
为什么被折叠?



