MySQL数据库表修复方案

在做蓬溪系统的维护中,突然发现数据库崩溃了,于是赶紧查原因,发现是:

(2012-12-27 16:24:48):开始检查数据表......
(2012-12-27 16:24:49):出现异常:[MySQL][ODBC 3.51 Driver][mysqld-5.5.15]Incorrect key file for table '.\itsdb\vehicleinfo.MYI'; try to repair it
(2012-12-27 16:24:50):本次检查数据表完毕!
(2012-12-27 16:24:51):退出了数据转发代理系统程序

上网查询,发现解决方法如下:

客户系统再次断电,加电再启动后,系统出现数据无法读取现象。

查看MySQL错误日志后,发现是某MyISAM表损坏。做了表修复后,系统恢复正常工作。

下面借此事件,对MySQL的MyISAM表损坏及修复做个总结。

一:MySQL中MyISAM表损坏原因总结:

1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。

2、 磁盘损坏。

3、 服务器死机。

4、 mysql 本身的bug 。

二:MySQL中MyISAM表损坏的症状总结:

1 、查询数据时报出错误:Incorrect key file for table: '...'. Try to repair it

2 、查询不能在表中找到行或返回不完全的数据。

3 、Error: Table '...' is marked as crashed and should be repaired 。

4 、打开表失败: Can’t open file: 'xxxx.MYI' (errno: 145) 。xxxx是一个表的名字。

三:MySQL中MyISAM表损坏的预防:

1 、定期检查MyISAM 表。可以使用myisamchk,也可以使用mysqlcheck,还可以使用check table。

2 、在做过大量的更新或删除操作后,使用mysqlcheck或者optimize table来优化表,这样既减少了文件碎片,又减少了表损坏的概率。

3 、关闭服务器前,先关闭mysqld (正常关闭服务,不要使用kill -9 来杀进程)。

4 、使用ups 电源,避免出现突然断电的情况。

5 、使用最新的稳定发布版mysql ,减少mysql 本身的bug 导致表损坏。

6 、对磁盘做raid ,减少磁盘出错并提高性能。

7 、数据库服务器最好只跑mysqld 和必要的其他服务,不要跑其他业务服务,这样减少死机导致表损坏的可能。

四:MySQL中MyISAM表损坏的修复总结:

1 、如果mysqld已经宕掉,且无法启动,那么可以通过mysiamchk工具来进行修复。此工具在mysqld服务没有启动时才可以使用。该工具可以检查并分析修复MyISAM表。

2 、如果mysqld仍在运行,或者可以重新启动,那么可以通过mysqlcheck工具来进行修复。或者直接通过mysql的内置修复SQL语句来修复:CHECK TABLE,REPAIR TABLE ,ANALYSE TABLE,OPTIMIZE TABLE。这两种方法可以同样达到对表的修复作用。 以上两种方式各有应用场景。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值