Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103717825
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-08 23:08:34

作者: lktlks  出自:
相信大家都看过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文件并和现有的数据文件和索引文件一起使用.记得操作前,先把数据文件和索引文件备份噢
阅读(480) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~