mysql: "tablename" is marked as crashed and should be repaired修复 问题分析: 当mysql出现这类提示时,大部分的现象为查询不到正常的

来源:互联网 发布:淘宝网电视机 编辑:程序博客网 时间:2024/06/05 23:52

问题分析:

当mysql出现这类提示时,大部分的现象为查询不到正常的表记录,或者只能查询到部分。
主要的原因是对应表的索引文件被损坏,导致索引文件损坏的可能原因有:
  1. 频繁的读写表记录
  2. 数据库服务器非正常关闭,比如:断电

问题修复:

好在mysql提供了索引文件的修复工具,通过修复功能一般都可以使数据修复正常。
修复工具之前搜索有2个:
myisamchk -c -r -f /path/to/tablename.MYI
使用这个命令需要先查找到对应表的索引文件,即*.MYI文件【mysql index的缩写】
这个文件是存储在mysql的data目录下,而这个data目录因mysql的版本不同,存放位置也不一样。甚至不同类型的操作系统存放的都不在一个位置。通常mysql的data目录会在这几个路径:
%PROGRAMDATA%\MySQL\MySQL Server 5.6\ [mysql 5.6.8+, win7]%WINDIR%\INSTALLDIR\  [mysql 5.6.8-]%APPDATA%\MySQL\  [mysql 5.6.8+, windows 2003]

mysqlcheck -u root -p dbname --auto-repair
使用这个命令就不在需要查找MYI文件的路径了,它会根据提供的数据库名,自动的遍历全部数据表。最后针对需要修复的表进行修复。

本次成功恢复数据使用的就是第二种方法【windows server 2003 + mysql 5.6.28】,修复结果如下图


数据备份:

当然了,除了出现问题是需要找方法修复;其实最重要的还是平时定期的备份数据库。
这样即使哪天数据库都没了,我们还是依然能够恢复数据的。数据库备份命令:

mysqldump -u root -p dbname > dbname.sql

阅读全文
0 0