2。症状损害 受损表的典型症状如下: 1。从表中选择数据时,会得到以下错误: 表的错误密钥文件:尝试修复它。 2,查询无法查找表中的行或返回不完整的数据。 3、错误:table'p'is标记为坠毁,必须修复。 4。打开表失败:无法打开文件:X x.myi(错误:145)。 5, 三.防止MySQL表损坏 以下方法可用于防止MySQL表损坏: 1、定期用myisamchk检查MyISAM表(注意关闭mysqld),并推荐使用检查表检查表(不关闭mysqld)。 2,在进行大量的更新或删除操作之后,建议使用优化表优化表,不仅减少了文件碎片,而且减少了表损坏的概率。 三.在关闭服务器,关闭mysqld(关闭服务通常不使用杀9杀进程)。 4。使用ups电源避免突然停电。 5,使用MySQL的最新稳定版本,减少MySQL本身的错误会导致表损坏。 6。对于InnoDB引擎,你可以使用innodb_tablespace_monitor检查在表空间文件空间管理的完整性。 7,对磁盘进行磁盘扫描,减少磁盘错误,提高性能。 8、数据库服务器应只运行mysqld和其他必要的服务,并没有运行其他业务服务,从而降低对这次空难造成的表损坏的可能性。 9、不怕万一,怕出事,平时做好备份是防止表损的有效手段。 对4.mysql表损伤修复 MyISAM表可以用以下步骤修复: 1、使用修复表或myisamchk修复它。 2。如果上述方法无效,则使用备份恢复表。 它可以被称为如下: 第1阶段:检查你的手表 如果你有很多时间,运行myisamchk *。我或myisamchk - E *。myi.use的S(沉默)选项来禁止不必要的信息。 如果mysqld服务器已关闭,你应该使用更新状态的选项来告诉myisamchk表标记检查。 你必须只包含有错myisamchk报告。对于这样一个桌子,继续2期。 如果你检查,你得到奇怪的错误(如内存不足错误),或如果myisamchk崩溃,到3期。 第2阶段:简单安全的修复 注意:如果你想修得更快,当你运行myisamchk,你应该设置sort_buffer_size价值和key_buffer_size变量约25%的可用内存。 First, try myisamchk -r -q tbl_name (-r -q means fast recovery mode).This will try to repair the index file without contact with the data file.If the data file contains all the content it should have and the deletion connection to the correct location in the data file, it should be used and the table can be repaired.Start to fix the next table.Otherwise, the following process is carried out: 继续之前备份数据文件。 对myisamchk -使用R tbl_name(R意味着复苏模式)。这将删除不正确的记录和删除记录的数据文件并重建索引文件。 如果以前的步骤失败,用myisamchk --安全恢复tbl_name.the安全恢复模式使用一个老的回收方法处理几例(但更慢),传统的回收模式是不好的。 如果你是在一个固定的,你得到一个奇怪的错误(如内存不足错误),或如果myisamchk崩溃,到3期。 第3阶段:难修复 唯一索引文件的第一16k块被破坏,或包含不正确的信息,或如果索引文件丢失,你应该到这个阶段。在这种情况下,你需要创建一个新的索引文件,执行以下步骤: 将数据文件移动到安全的地方。 使用表描述文件创建新的(空的)数据文件和索引文件: 复制代码代码如下所示: MySQL db_name壳> MySQL >设置自动提交= 1; TRUNCATETABLE tbl_name MySQL >; MySQL >退出