mysqld数据表错误is marked as crashed and last (automatic?) repair解决办法

MySQLd数据表错误is marked as crashed and last (automatic?) repair解决办法

本文章来给大家介绍我们在修复表时提示Error: Table \'./db_name/table_name\' is marked as crashed and last (automatic?) repair failed的解决办法。

MYSQL数据表出现问题,提示 ▼

Error: Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed

mysql_upgrade执行以下命令检查和修复表和升级系统表 ▼

mysqlcheck --all-databases --check-upgrade --auto-repair
  • 操作失败不可逆,必须暂停数据库:
    service monit stop
    service mysqld stop
  • 进入数据库所在目录:
    cd /var/lib/mysql/db_name/

注意:操作修复前一定要把mysql服务停掉。

  • 修复单张数据表:
    myisamchk -r tablename.MYI
  • 修复所有数据表:
    myisamchk -r *.MYI
  • 安全模式:
    myisamchk -r -v -o <table_name>
  • 强制模式:
    myisamchk -r -v -f <table_name>

myisamchk用法

注意:使用myisamchk前,要确保mysqld没有在访问要检查的表。最好停止mysqld。

  1. 执行
    myisamchk –update-state -s *.myi

    ,检查有哪些索引文件出了问题(可能会化费比较长的时间)。

  2. update-state选项只有在停止mysqld的时候使用,-s表示忽略一些正常的表列出的信息,只列出错误。
  3. 对于每一个损坏的表,尝试
    myisamchk -r -q table_name

    这是快速修复模式,会自动检查索引表和数据表是否能够一致。如果一致,则可以修复。

  4. 如果快速修复模式失败,考虑:
    myisamchk -r table_name

    会删除不一致的数据和索引,并重新构建索引。

  5. 如果失败,考虑:
    myisamchk –safe-recover table_name

操作示例

操作失败不可逆,必须暂停数据库:

service monit stop
service mysqld stop
cd /var/lib/mysql/eloha_ufo
cd /var/lib/mysql/eloha_cwl

修复所有数据表:

myisamchk -r *.MYI
myisamchk -r -v -f wp_postmeta.MYI
myisamchk -r -v -f wp_posts.MYI
myisamchk -r -v -f wp_options.MYI
myisamchk -r -v -f wp_itsec_log

这比-r慢很多,但是能处理一-r不能处理的情况。

myisamchk -r -f -o /var/lib/mysql/eloha_ufo/wp_postmeta.MYI

这是数据库表全路径的命令:

myisamchk -r -f /var/lib/mysql/eloha_ufo/wp_postmeta.MYI
myisamchk -r -f /var/lib/mysql/eloha_ufo/wp_posts.MYI

启动MYSQLD数据库:

service mysqld start
service mysqld restart

启动MONIT监控程序

service monit restart
service monit start