表的
故障检测和纠正的一般过程如下:
检查错误表。如果表检查被传递,
任务完成,或者错误的数据库表必须被修复。
在修复开始之前
复制表
文件,以确保数据的安全性。
开始修复数据库表。
如果修复失败,则从数据库的备份或更新日志中
恢复数据。
以前用myisamchk或isamchk检查或修理的表,你首先要注意:
设置数据库备份并使用更新日志以防止修复失败和丢失数据。
在阅读之前,请仔细阅读本章,尤其是在阅读之前不必做这一章以避免与MySQL
服务器交互,因为如果你没有足够的知识做这件事,它会导致严重的后果。
如果您
维护UNIX平台上的表,首先应
注册特殊帐户MySQL,以避免所有权问题,并销毁数据库
目录的所有
权限。
数据库表维护
工具 MySQL的myisanchk和isamchk事业是非常相似的,基本上都使用相同的
方法,使用时,它们之间主要的差别表
类型。为了检查/修复MyISAM表(。我和MYD),你应该使用myisamchk实用。为了检查/修复ISAM表(。ISM和ISD),你应该使用isamchk效用。
为了使用任何
应用程序,你必须指定你要检查或修复的表,和isamchk myisamchk和使用:
复制代码如下:壳> myisamchk选项tbl_name壳> isamchk
选项tbl_name
如果您愿意,可以在
命令行中列出几个表。
你也可以指定一个
名字作为一个索引文件(using.myi or.ism
后缀),它允许你通过使用
模式*指定目录中的所有表。我or.ism.for的例子,如果你在数据库目录下,你可以查看所有表的目录,这样:
复制代码如下:壳壳> > myisamchk *。我isamchk *。
如果您不在数据库目录中,则可以指定目录的
路径:
复制代码如下:壳> myisamchk选项路径 / / / * database_dir。我壳> isamchk选项 / / / database_dir路径 / *。
您甚至可以通过为MySQL数据目录的路径指定通配符来指定所有数据库中的所有表:
复制代码如下:壳> myisamchk选项路径 / / / / * * datadir。myishell > isamchk选项 / / / database_dir路径 / / * *。
此方法不能在windows平台下使用。
注意是否isamchk myisamchk或不作出任何判断的
位置表。因此,它应该在包含表文件的目录中
运行程序,或者指定表的路径名,这允许您将表文件复制到另一个目录,并使用该副本
操作它。
检查数据库表
myisamchk和isamchk提供一种方法检查表,在不同程度上,桌上是彻底检查。
标准方法清单
通常标准方法是足够的,表使用标准的方法来检查,没有任何直接调用,或者任何S或-无选项:
复制代码如下:myisamchk tbl_name isamchk tbl_name
这可以找到所有错误的99.99%。它不能只找到对
数据文件的
损坏(这是不常见的)。
全面彻底的数据检查
要
执行扩展检查,使用扩展检查或E选项检查数据:
复制代码如下:myisamchk - E tbl_name isamchk E tbl_name
这是一个完整和全面的数据检查(E手段延伸检查),检查每一行读取每个键
确认他们做点
正确的线路。这可能需要很长的时间在一个大桌子的很多钥匙。Myisamchk通常会在
发现第一个错误停止。如果你想获得更多的信息,你可以添加
详细(V)选项。这使得myisamchk或isamchk继续最多达到20的误差。在一般的使用,一个简单的标准检查(除表的名称没有
参数)是足够的。
适度的考试
指定选项——中检查或M
复制代码代码如下:myisamchk - M tbl_name
中等水平的检查不如
延期检查好,但
速度更快,意义不大,使用较少。
如果错误不
报告的扩展检查,可以肯定的是,该表是完整的。如果你仍然感觉与看问题,
原因是在别的地方。应该复查,如果
查询是验证查询写的是正确的问题。如果你认为问题可能是MySQL服务器的原因,你应该考虑整理出一个故障报告或
升级到新的版本。
可能的检查选项:
1 - i或-信息
打印统计信息,如:
复制代码如下:myisamchk -我tbl_name
像以前的命令,我选择告诉myisamchk打印一些统计。
2 - C,只检查更改
只检查上次检查后
修改过的表。