mysql文件的检查和修复

相信大家都看过mysql数据文件:每个数据库都有一个单独的目录(一般在data目录下).每个目录中有对应数据库中各数据表的数据文件.一般每个表对应三个文件,一个名为TblName.frm的表定义文件(跟踪表中每一列及其类型),一个名为TblName.MYD的表数据文件,还有一个TblName.MYI的表索引文件.

要检查一个表是否出错,我们只需要运行bin目录下的myisamchk命令即可,参数可是表名或表索引文件名

[alexru@yan]$ myisamchk /usr/local/mysql/var/dbName/tblName


[alexru@yan]$ myisamchk /usr/local/mysql/var/dbName/tblName.MYI

如要检查所有的表,可以

[alexru@yan]$ myisamchk /usr/local/mysql/var/dbName/*.MYI

检查所数据库,可以

[alexru@yan]$ myisamchk /usr/local/mysql/var/*/*.MYI

如果普通的检查没有结果,我们可以执行全面检查

[alexru@yan]$ myisamchk --extend-check /usr/local/mysql/var/dbName/tblName

对于损坏文件的修复,我们可以用

1.如果感觉是索引文件坏了,可以使用当前数据文件和表格文件重新生成.先为表数据做好backup,然后重启服务器,再删除表的内容:

[alexru@yan]$ myisamchk --recover --quick /usr/local/mysql/var/dbName/tblName
[alexru@yan]$ myisamchk --recover /usr/local/mysql/var/dbName/tblName
[alexru@yan]$ myisamchk --safe-recover /usr/local/mysql/var/dbName/tblName

另外还有几个小技巧:

mysql>delete from tblName

在删除内容同时会创建一个新的索引文件.再次关闭服务器,用backup数据覆盖新的数据文件,就OK了

2.如果感觉表格文件坏了,可以用create table语句重新建表,这样可以重建一个.frm文件并和现有的数据文件和索引文件一起使用.记得操作前,先把数据文件和索引文件备份噢