计算机四级辅导:用Myisamchk进行崩溃恢复MySQL
发布时间:2010/3/15 14:24:13 来源:城市学习网 编辑:MOON
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏: mysqld进程在一个写入当中被杀死;计算机的意外关闭文件 “tbl_name.MYD” 数据文件 “tbl_name.MYI” 索引文件
这3个文件的每一个文件类型可能遭受不同形式的损坏,但是问题最常发生在数据文件和索引文件。
myisamchk通过一行一行地创建一个“.MYD”。
从表处理器的得到错误###。如果它拒绝你修改文件,他们也必须是可被你写入的。
阶段1:检查你的表
运行
myisamchk .MYI或。使用-s
回到阶段2。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。
阶段4:非常困难的修复
只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。
从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk -r启动。
如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。
三、表优化
为了组合成碎片的记录并且消除由于删除或更新记录而浪费的空间, 以恢复模式运行myisamchk:
shell myisamchk -r tbl_name你可以用SQL的OPTIMIZE TABLE语句使用的相同方式来优化一张表,OPTIMIZE TABLE比较容易,但是myisamchk更快。也没有在一个实用程序和服务器之间不必要的交互可能性,因为当你使用OPTIMIZE TABLE时,服务器做所有的工作。
myisamchk也有你可用来改进一个表的性能的很多其他选项:
-S, --sort-index -R index_num, --sort-records=index_num -a, --analyze 对于选项完整的描述见myisamchk调用语法。