日期:2014-05-16  浏览次数:20847 次

MySQL5提示marked as crashed and should be repaired,修复后整个表被清空
MySQL(windows版)突然报错:
#1194 - Table 'ip_addr' is marked as crashed and should be repaired
通过phpMyAdmin修复,但整个表都被清空,连条记录都没留。

几个月前,一次discuz论坛的用户表也出现同的问题,修复一下,用户表也空了,只能从一周前的备份里恢复,从论坛数据里恢复新用户、重置密码,忙了三个多小时才搞好(当然新用户密码被重置,只好通过邮件通知)。

出现这样的问题是很郁闷的,如果没有备份数据的话,完全是灾难性后果。
请问这种问题可能是什么原因造成的,应该怎么避免?


------解决方案--------------------
MyISAM 的表一直有这个问题,需要 repair 一下才行。造成的原因有多种。磁盘上磁道故障,并发访问异常,等等,

手册中专门有一节讲述表的维护。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
引用5.9. 备份与恢复
5.9.1. 数据库备份
5.9.2. 示例用备份与恢复策略
5.9.3. 自动恢复
5.9.4. 表维护和崩溃恢复
5.9.5. myisamchk:MyISAM表维护实用工具
5.9.6. 建立表维护计划
5.9.7. 获取关于表的信息

------解决方案--------------------
避免这个问题有以下的办法:
1. 完整备份。
2. 换成有完整日志的引擎!