您的位置:首页 > 数据库 > MySQL

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

2017-07-19 16:44 886 查看

问题分析:

当mysql出现这类提示时,大部分的现象为查询不到正常的表记录,或者只能查询到部分。

主要的原因是对应表的索引文件被损坏,导致索引文件损坏的可能原因有:
频繁的读写表记录
数据库服务器非正常关闭,比如:断电

问题修复:

好在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql crashed
相关文章推荐