首页 / 服务中心 / 常见问题

mysql 表损坏的原因分析

时间:2012-10-26 16:03:12 点击:
mysql 表损坏的原因分析
 以下原因是导致mysql 表毁坏的常见原因:
  1、 服务器突然断电导致数据文件损坏。
  2、 强制关机,没有先关闭mysql 服务。
  3、 mysqld 进程在写表时被杀掉。
  4、 使用myisamchk 的同时,mysqld 也在操作表。
  5、 磁盘故障。
  6、 服务器死机。
  7、 mysql 本身的bug 。
 
  2.表损坏的症状
 一个损坏的表的典型症状如下:
  1 、当在从表中选择数据之时,你得到如下错误:
  Incorrect key file for table: '...'. Try to repair it
  2 、查询不能在表中找到行或返回不完全的数据。
  3 、Error: Table 'p' is marked as crashed and should be repaired 。
  4 、打开表失败: Can’t open file: ‘×××.MYI’ (errno: 145) 。
 
 3.预防 MySQL 表损坏
 可以采用以下手段预防mysql 表损坏:
  1 、定期使用myisamchk 检查MyISAM 表(注意要关闭mysqld ),推荐使用check table 来检查表(不用关闭mysqld )。
  2 、在做过大量的更新或删除操作后,推荐使用OPTIMIZE TABLE 来优化表,这样既减少了文件碎片,又减少了表损坏的概率。
  3 、关闭服务器前,先关闭mysqld (正常关闭服务,不要使用kill -9 来杀进程)。
  4 、使用ups 电源,避免出现突然断电的情况。
  5 、使用最新的稳定发布版mysql ,减少mysql 本身的bug 导致表损坏。
  6 、对于InnoDB 引擎,你可以使用innodb_tablespace_monitor 来检查表空间文件内文件空间管理的完整性。
  7 、对磁盘做raid ,减少磁盘出错并提高性能。
  8 、数据库服务器最好只跑mysqld 和必要的其他服务,不要跑其他业务服务,这样减少死机导致表损坏的可能。
  9 、不怕万一,只怕意外,平时做好备份是预防表损坏的有效手段。
 
 4. MySQL 表损坏的修复
 MyISAM 表可以采用以下步骤进行修复 :
  1、使用 reapair table 或myisamchk 来修复。
  2、如果上面的方法修复无效,采用备份恢复表。
 
 系统不能正常使用时,可以查看日志文件,如果出现需要修复某个表的信息,可以登录数据库,找到这张表选中,然后选中项修复表操作下就可以了
修复表.jpg