◆ 定位到包含崩溃表的数据库目录中
◆ 把数据文件移更安全的地方。
◆ 使用表描述文件创建新的(空)数据和索引文件:
shell> mysql db_name
mysql> DELETE FROM tbl_name;
mysql> quit
上述语句将重新创建新的空表,并使用表的的描述文件tbl_name.frm重新生成新的数据和索引文件。
◆ 将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)
◆ 在使用标准的修复方法。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。
如果你拥有表的备份文件,那么一切过程就容易的多。从备份文件中可以恢复表的描述文件,然后在检查表,有可能还要继续使用标准的修复方法,应该纠可以解决问题了。
非常困难的修复
只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。
从一个备份恢复描述文件并且回到阶段2。你也可以恢复索引文件并且回到阶段1。对于后者,你应该用myisamchk -r启动。
如果因为某种原因,数据的备份文件丢失或者没有备份文件,但是你还记得建立表的CREATE TABLE语句,那么太好了,这样还是可以恢复索引文件:
◆ 定位到包含崩溃表的数据库目录中
◆ 把数据文件移更安全的地方。再把数据库目录中的对应的目录删去.。
◆ 调用mysql并发复CREATE TABLE语句建立该表。
◆ 退出mysql,将原始的数据文件和索引文件移回到数据库的目录中,替换刚才新建的文件。
◆ 然后回到阶段2,修复表。也可以只移回数据文件,这样保留新的描述和索引文件,然后回到阶段1,继续用标准的方法修复表。
.
分页: [1] [2]
- 上一篇:MySQL查询优化
- 下一篇:MySQL数据库性能优化妙招