网站数据库损坏怎么办——mysqlcheck修复与备份恢复实战

王尘宇 问题解答 1

网站数据库损坏怎么办——mysqlcheck修复与备份恢复实战-第1张图片-王尘宇

网站突然打不开,后台提示数据库连接错误,或者打开一片空白,很多人的第一反应是服务器挂了。但有时候问题出在数据库本身:数据表损坏。这篇文章把常见的数据库损坏症状、修复步骤和恢复方法一次说清。

怎么判断是数据表损坏?症状很典型:网站部分页面报错,错误日志里出现Table is marked as crashed或者Table doesn't exist;后台能进但文章列表读不出来;phpMyAdmin里点开某张表直接报错。遇到这些先别重装,八成是表坏了。

修复工具是mysqlcheck,MyISAM表损坏用它能直接修好。命令很简单:mysqlcheck -u用户名 -p密码 数据库名 --repair,也可以指定表。我处理过的大部分情况,跑一遍repair就恢复正常了,不用动数据。

InnoDB表的情况不一样,它更抗造,但一旦坏了修复更麻烦。先看错误日志确认是不是InnoDB的问题,如果是,多数情况下重启MySQL能自己恢复,还不行就查innodb_force_recovery参数,从1试到6,注意这个参数只用来应急。

修复完要排查损坏原因,不然还会再坏。常见原因:非正常关机、磁盘满、服务器强制重启、MySQL直接kill。我遇到过一个客户的站反复坏表,最后发现是磁盘满了,日志写不进去,清了日志之后半年没再犯。

如果repair修不好,或者表被删了,就只能靠备份恢复。所以备份才是真正的保命符:我现在的习惯是网站每天自动备份数据库,保留30天,出问题最多丢一天数据。没有备份的话,只能找服务商要最近的备份,或者花钱找人恢复。

最后给个操作顺序:先备份现状,哪怕表坏了也先mysqldump试试;然后跑mysqlcheck repair;不行看InnoDB恢复参数;再不行用备份恢复;恢复后检查网站功能。别上来就删表重建,数据没了神仙难救。

标签: 数据库修复 mysqlcheck 数据恢复

发布评论 (0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~