MySQL Table ‘***’ is marked as crashed and should be repaired 彻底解决
- 发表于
- 日志
今天起来发现站点打开异常缓慢,基本上10秒能打开就打开,打不开就爆数据库连接错误“Database connection error”,或者直接来个“502 Bad Gateway”。第一感觉是被攻击了,马上进行了排查(5个命令检查Linux中内存使用情况),查清原因后马上处理。
其中之一就是“ MySQL Table '***' is marked as crashed and should be repaired”,进入相应数据库查看大概有十个表都报这个数据表损坏错误,现在修复它,提供两种修复方式 。
先备份整个数据库
方法一:使用mysqlcheck修复数据表
1 2 |
# mysqlcheck -u root -p qqtexas Enter password: |
备份数据库,添加 --auto-repair 参数自动修复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# mysqldump -u root -p qqtexas > qqtexas.sql Enter password: # mysqlcheck -u root -p qqtexas --auto-repair Enter password: wordpress.wp_term_taxonomy error : Table upgrade required. Please do "REPAIR TABLE `wp_term_taxonomy`" or dump/reload to fix it! wordpress.wp_terms error : Table upgrade required. Please do "REPAIR TABLE `wp_terms`" or dump/reload to fix it! wordpress.wp_usermeta error : Table upgrade required. Please do "REPAIR TABLE `wp_usermeta`" or dump/reload to fix it! wordpress.wp_users error : Table upgrade required. Please do "REPAIR TABLE `wp_users`" or dump/reload to fix it! Repairing tables qqtexas.wp_commentmeta OK qqtexas.wp_comments OK qqtexas.wp_links OK |
为了安全起见,以下两种方法不建议在生产环境中使用
1 2 |
#mysqlcheck -a -o -r -p //检查优化并修复所有的数据库 #mysqlcheck -A -o -r 数据库名称 -p //修复指定的数据库 |
参数含意:
1 2 3 4 5 |
-a = Analyse given tables. //分析数据表 -c = Check table for errors //检查数据库中错误(损坏)的表 -o = Optimise table //优化数据表 -r = Can fix almost anything except unique keys that aren’t unique // 修复损坏的数据表 -m = –medium-check |
方法二:使用Navicat修复数据库
- 连接上数据库,选择表
- 右键->Maintain(维护)->Repair Tables(修复表)->Extended(扩展)
Windows和OSX版本是一样的操作,因为没Windows环境,自己截图截出来的太大(400KB),所以用了网图。Windows操作那个使用的是Quick(快速)修复,为了保险起见,建议使用Extended(扩展)修复数据表。
等一会,会提示修复完成,现在你再打开数据库看,应该都正常了。
参考
原文连接:MySQL Table ‘***’ is marked as crashed and should be repaired 彻底解决
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。