`
JasonChi
  • 浏览: 91775 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何修复MySQL数据库表

阅读更多
你可能在使用MySQL过程中,各种意外导致数据库表的损坏,而且这些数据往往是最新的数据,通常不可能在备份数据中找到。本章将继上篇文章中检查出表的问题后,告诉你如何修复表。

  一张损坏的表的症状通常是查询意外中断并且你能看到例如这些错误:

  ◆ “tbl_name.frm”被锁定不能改变。

  ◆ 不能找到文件“tbl_name.MYI”(Errcode :### )。

  ◆ 从表处理器的得到错误###(此时,错误135是一个例外)。

  ◆ 意外的文件结束。

  ◆ 记录文件被毁坏。

  在这些情况下,你必须修复表。表的修复是一项非常困难的工作,很多情况下令人束手无策。然而,有一些常规的知道思想和过程,可以遵循它们来增加修正表的机会。通常,开始是可以用最快的修复方法,看看能否袖珍故障。如果发现不成功,可以逐步升级到更彻底的但更慢的修复方法。如果仍旧难以修复,就应该从备份中恢复了。在上一章已经详细介绍了这一部分内容。

  简单安全的修复

  为了修复一个表执行下列步骤:

  ◆ 首先,用--recover,-r选项修正表,并且用--quick,-q选项,来只根据索引文件的内容进行恢复。这样不接触数据文件来修复索引文件。(-r意味着“恢复模式”)

  myisamchk -r -q tbl_nameisamchk -r -q tbl_name


  ◆ 如果问题仍旧存在,则忽略--quick选项,允许修复程序修改数据文件,因为这可能存在问题。下面的命令将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件:

  myisamchk -r tbl_nameisamchk -r tbl_name


  ◆ 如果前面的步骤失败,使用。安全恢复模式使用一个老的恢复方法,处理常规恢复模式不行的少数情况(但是更慢)。

  myisamchk --safe-recover tbl_nameisamchk --safe-recover tbl_name


  困难的修理

  如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段 。在这种情况下,创建一个新的索引文件是必要的。按如下这样的步骤做:

  ◆ 定位到包含崩溃表的数据库目录中

  ◆ 把数据文件移更安全的地方。

  ◆ 使用表描述文件创建新的(空)数据和索引文件:

  shell> mysql db_namemysql> DELETE FROM tbl_name;mysql> quit


  上述语句将重新创建新的空表,并使用表的的描述文件tbl_name.frm重新生成新的数据和索引文件。

  ◆ 将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)

  ◆ 在使用标准的修复方法。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。

  如果你拥有表的备份文件,那么一切过程就容易的多。从备份文件中可以恢复表的描述文件,然后在检查表,有可能还要继续使用标准的修复方法,应该纠可以解决问题了。

  非常困难的修复

  只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。

  从一个备份恢复描述文件并且回到阶段2。你也可以恢复索引文件并且回到阶段1。对于后者,你应该用myisamchk -r启动。

  如果因为某种原因,数据的备份文件丢失或者没有备份文件,但是你还记得建立表的CREATE TABLE语句,那么太好了,这样还是可以恢复索引文件:

  ◆ 定位到包含崩溃表的数据库目录中

  ◆ 把数据文件移更安全的地方。再把数据库目录中的对应的目录删去.。

  ◆ 调用mysql并发复CREATE TABLE语句建立该表。

  ◆ 退出mysql,将原始的数据文件和索引文件移回到数据库的目录中,替换刚才新建的文件。

  ◆ 然后回到阶段2,修复表。也可以只移回数据文件,这样保留新的描述和索引文件,然后回到阶段1,继续用标准的方法修复表。
本文来自猴岛论坛 :http://bbs.houdao.com/r2851912_u1328382/
分享到:
评论

相关推荐

    MYSQL数据库修复程序

    MySQL数据库修复程序,表查看,读取,表设计。SQL数据库内容读取。

    使用shell检查并修复mysql数据库表的脚本

    /bin/sh#code by scpman#功能:检查并修复mysql数据库表#将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开始修复#修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。...

    检查并修复mysql数据库表的具体方法

    #功能:检查并修复mysql数据库表 #将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开始修复 #修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。 fix_logs='/tmp/fix....

    MYSQL数据库修复大师

    MYSQL数据库修复大师 与大家分享 更好修复数据库!

    MYSQL数据库修复大师7.12

    软件简介: MYSQL数据库修复大师是一款功能强大的mysql数据修复工具 恢复被破坏的MySQL数据库(.myd, .myi),并且将找回的数据直接导入MySQL服务器中 支持目前最新mysql版本

    修复Mysql数据库错误

    进入论坛数据库,然后选择要修复的表(您损坏的是cdb_sessions 会员认证数据表),在页脚下拉框选择“修复”即可 如果您的服务器是独立主机强烈建议使用命令行方式进行修复: 修复前将mysql服务停止。 如果是Win主机,...

    MySQL数据库INNODB 表损坏修复处理过程

    MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。

    MYSQL数据库表的修复教程

    MYSQL数据库表的修复教程。遇到这种原因一般是数据库服务器强行重启等导致,或者是因为mysql参数设置不正确导致。如果用备份恢复的话可能就要丢失好多的数据。所以要先找清原因然后进行修复

    mysqlcheck.exe 修复mysql数据库

    有时候数据库突然就坏了,很郁闷,用mysqlcheck.exe可以修复受损数据库

    MYSQL数据库修复工具

    一块很好用的mysql修复工具,数据库故障,可以用这个来修复

    MySQL数据库表修复 MyISAM

    一:MySQL中MyISAM表损坏原因总结: 1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。 2、 磁盘损坏。 3、 服务器死机。 4、 mysql 本身的bug 。 二:MySQL中MyISAM...

    mysql数据库转换系统 v1.1

    mysqlconvert是一款优秀的数据库转换及管理系统,无需专业的知识即可方便的将不同的数据库数据进行转换,access、mssql导入mysql,mysql数据库之间互转。还有强大的数据库备份还原功能、批量替换字符、运行sql语句等...

    Druid 1.1.20版本,修复MySQL数据库主备切换连接池无法恢复问题

    连接池修复MySQL主备切换时连接池无法恢复的问题。在阿里云RDS主备切换时,出现连接池没有及时恢复,问题和handleFatalError机制相关,已修复并通过验证。 连接池Connection支持更多JDK 1.7的JDBC新增方法 连接池...

    mysql数据库修复专家

    mysql数据库修复工具,支持mysql3 4 5 6 版本的各种报错修复,支持MYD IBD ibdata1文件的修复、

    Mysql8.0 数据库恢复工具

    本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表。

    mysql数据库备份和恢复工具

    mysql数据库备份和恢复工具以及源码 。

    MySQL数据库中部分数据损坏恢复过程

    本文将为大家介绍MySQL数据库中部分数据损坏恢复过程。

Global site tag (gtag.js) - Google Analytics