视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MYSQL数据表损坏的原因分析和修复方法_MySQL
2020-11-09 17:39:22 责编:小采
文档


  1.表损坏的原因分析
  
  以下原因是导致mysql表毁坏的常见原因:
  
  1、服务器突然断电导致数据文件损坏。
  
  2、强制关机,没有先关闭mysql服务。
  
  3、mysqld进程在写表时被杀掉。
  
  4、使用myisamchk的同时,mysqld也在操作表。
  
  5、磁盘故障。
  
  6、服务器死机。
  
  7、mysql本身的bug。
  
  2.表损坏的症状
  
  一个损坏的表的典型症状如下:
  
  1、当在从表中选择数据之时,你得到如下错误:
  
  Incorrectkeyfilefortable:'...'.Trytorepairit
  
  2、查询不能在表中找到行或返回不完全的数据。
  
  3、Error:Table'p'ismarkedascrashedandshouldberepaired。
  
  4、打开表失败:Can’topenfile:‘×××.MYI’(errno:145)。
  
  5、
  
  3.预防MySQL表损坏
  
  可以采用以下手段预防mysql表损坏:
  
  1、定期使用myisamchk检查MyISAM表(注意要关闭mysqld),推荐使用checktable来检查表(不用关闭mysqld)。
  
  2、在做过大量的更新或删除操作后,推荐使用OPTIMIZETABLE来优化表,这样既减少了文件碎片,又减少了表损坏的概率。
  
  3、关闭服务器前,先关闭mysqld(正常关闭服务,不要使用kill-9来杀进程)。
  
  4、使用ups电源,避免出现突然断电的情况。
  
  5、使用最新的稳定发布版mysql,减少mysql本身的bug导致表损坏。
  
  6、对于InnoDB引擎,你可以使用innodb_tablespace_monitor来检查表空间文件内文件空间管理的完整性。
  
  7、对磁盘做raid,减少磁盘出错并提高性能。
  
  8、数据库服务器最好只跑mysqld和必要的其他服务,不要跑其他业务服务,这样减少死机导致表损坏的可能。
  
  9、不怕万一,只怕意外,平时做好备份是预防表损坏的有效手段。
  
  4.MySQL表损坏的修复
  
  MyISAM表可以采用以下步骤进行修复:
  
  1、使用reapairtable或myisamchk来修复。
  
  2、如果上面的方法修复无效,采用备份恢复表。
  
  具体可以参考如下做法:
  
  阶段1:检查你的表
  
  如果你有很多时间,运行myisamchk*.MYI或myisamchk-e*.MYI。使用-s(沉默)选项禁止不必要的信息。
  
  如果mysqld服务器处于宕机状态,应使用--update-state选项来告诉myisamchk将表标记为'检查过的'。
  

下载本文
显示全文
专题