
有时候我们的站点服务器会因为各类问题出现重启或者崩溃,甚至断电的情况,如果正在读取大量数据的情况下,重启后有可能出现数据库的Innodb存储引擎损坏的情况,这时候我们怎么解决呢?这里搬主题就分享一下解决方案。
这里搬主题是基于BT宝塔面板进行介绍,建议将本文通读一遍后再根据解决方案进行处理。
什么?还没安装BT宝塔面板?点击进行下载安装
宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取
问题出现的原因:
正常情况下,数据库在做查询语句Select * From Table_Name时候,会正常返回完整的数据给用户,当在做查询的时候,或者InnoDB存储引擎后台操作意外退出或者中断,会导致InnoDB向前回滚恢复数据的时候失败,主要的错误显示如下:
对此错误,解决方案如下:
1、首先确定下错误是否和上述的错误信息是否一致,然后关闭Web服务(Apache或者Nginx)。
2、把MySQL的数据存储目录做个备份,备份是为了以防万一,如果有快照,尽量做个磁盘快照。
打开BT宝塔面板,其中默认的数据库存储路径在 /www/server/data
3、到MySQL的配置文件中添加
面板的MySQL配置文件默认是 /etc/my.cnf
设置完成后重启数据库
innodb_force_recovery默认是非0 的整数,一共有1–6 6个参数值,下面是参数解读:
4、上面的6个参数值,后面的包含前面的功能,如参数3,包含了参数1 和参数2 的所有功能,这里的参数总有一个可以将数据库启动,注意:若有无法启动的情况,请将二进制日志清除(没有做备份的请勿执行此命令):
然后重启MySQL。
5、重启数据库后,下面进行备份数据库:一般情况下在面板做计划任务的比较多:
添加好后记得点击执行按钮,数据库如果较大的话,备份可能需要点时间,也可以在数据库管理界面,点击备份按钮进行备份
6、当备份完成后将现在的数据库服务停止,记得备份当数据库名和对应的密码,然后卸载当前的数据库
7、重新安装MySQL后,新建数据库,密码指定之前复制的
8、等到还原成功后,重启Nginx或者Apache,观察网站是否正常。
结语:服务器之所以被称为服务器,就是其强大的稳定能力和持续服务能力,除非必要,不要重启服务器,平时多做数据的备份,出现问题时不慌!
FAQ:
①、为什么要关闭Web服务(Nginx或者Apache)?
答:此时MySQL已经无法正常提供服务,如果一直开着Nginx或者Apache,会导致外部访问一直在请求数据库,生成大量的错误日志,如果磁盘容量小,则会很快出现磁盘空间不足
②、为什么要做快照或者备份?
答:在处理数据的时候,可能会因特殊情况导致无法启动MySQL,如果没有备份,或者快照,会导致现有的“数据”损坏,对数据库造成二次损毁
③、为什么要复制数据库名和对应的密码?
答:节省时间,面板上新建数据库会重新生成一个随机密码,当前如果您的网站中的数据库信息和运行的数据库的信息不一致,也是无法进行连接的,在重新创建数据库的时候直接以 之前的数据库名和密码进行创建数据库,不用在到网站配置文件中修改信息,这样启动Web服务后就可以直接使用
④、如果我都尝试了,数据库还是无法启动怎么办?
答:MySQL官方给的解决方案都无法解决当前的问题,建议找专业的数据恢复公司。
购买/下载遇到问题?可联系
闲鱼名称:三点水帅哥
客服邮箱:382813125@qq.com
安装、使用问题,请先查看:技术支持说明
本文由 wpwdbfg 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 28, 2026 at 12:11 am