相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

7.6.1使用myisamchk进行崩溃恢复

本节介绍如何检查和处理MySQL数据库中的数据损坏。如果您的表经常损坏,您应该尝试找出原因。看到B.3.3.3节“如果MySQL一直崩溃怎么办”

来解释一下MyISAM表可能会被损坏第16.2.4节,“MyISAM表问题”

如果你运行mysqld如果禁用了外部锁定(这是默认设置),就不能可靠地使用myisamchk当…时核对桌子mysqld就是使用同一个表。如果您可以确定没有人可以访问表使用mysqld当你运行myisamchk,你只需要执行mysqladmin刷新表在你开始检查表格之前。如果你不能保证这一点,你必须停止mysqld在你检查表格的时候。如果你运行myisamchk检查表mysqld正在同时更新时,您可能会收到一个表已损坏的警告,即使表并没有损坏。

如果服务器运行时启用了外部锁定,则可以使用myisamchk随时查房。在这种情况下,如果服务器试图更新一个表myisamchk正在使用,服务器等待吗myisamchk在它继续之前结束。

如果你使用myisamchk要修复或优化表,您必须始终确保mysqld服务器没有使用表(如果禁用了外部锁定,这也适用)。如果你不停下来mysqld,你至少应该做一个mysqladmin刷新表在你跑之前myisamchk.你的表可能会损坏如果服务器和myisamchk同时访问表。

在执行崩溃恢复时,重要的是要了解每个MyISAM表格tbl_name对应于下表所示的数据库目录中的三个文件。

文件 目的
tbl_name.MYD 数据文件
tbl_name.MYI 索引文件

这三种文件类型中的每一种都可能以各种方式损坏,但问题最常发生在数据文件和索引文件中。

myisamchk的副本来工作.MYD逐行数据文件。它通过移除旧的来结束修复阶段.MYD文件,并将新文件重命名为原始文件名。如果你使用——快速myisamchk是不是创造了一个临时.MYD文件,而是假设.MYD文件是正确的,并且只生成一个新的索引文件,而不触及.MYD文件。这很安全,因为myisamchk自动检测是否.MYD文件已损坏,如果是则中止修复。您还可以指定——快速选择两次myisamchk.在这种情况下,myisamchk不中止某些错误(例如重复键错误),而是尝试通过修改.MYD文件。通常使用两个——快速选项仅在可用磁盘空间太少而无法执行正常修复时才有用。在这种情况下,您至少应该在运行前对表进行备份myisamchk