|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > 后端技能提升 > MySQL表标记为已经崩溃,应进行维修
MySQL表标记为已经崩溃,应进行维修

MySQL表标记为已经崩溃,应进行维修

日期:2021-11-29 浏览量:1210 原创作者:湖八爷
刚刚在排查一个线上生产环境的项目错误时,定位到一个MySQL错误(table xxx is marked as crashed and should be repaired),从字面上理解,就是说这张表已经崩溃了,需要进行维修。

这是一个比较常见的表破损问题,解决方法也比较简单,但因为这次是客户的生产环境,所以不敢贸然行动,必须小心谨慎才行。



一,首先说一下事发背景。

客户的这个项目是一个小项目,总用户数不到10000,而且报错的时间是凌晨两点,在线人数只有个位数。



二,再说一下我的解决方案和解决步骤。


1:直接中断所有用户的访问,提示“系统维护中,请稍后再操作!”,这样做的目的是为了避免排查过程中产生新的脏数据。


2:备份数据库,能用工具备份就用工具备份,工具备份不了,就用文件备份,比如把整个data文件复制出来。这样做的目的是给自己留一条后路。


3:在Navicat中选中崩溃的表,右键-->维护-->修复表-->快速。


Navicat数据库表快速修复.png


4:修复完成后会显示OK记录。然后我们再次双击事故表,发现可以正常打开了。


5:恢复站点正常访问。



三,最后总结一下。

我们通过分析这张表存储的数据和承载的业务逻辑,发现这张表被频繁的增删改查,才造成了这次表的崩溃。

所以在日常的编码中,我们应该尽量避免对一张表频繁的增删改查。