MySQL中MyISAM文件损坏时的一种修复方法
2016-12-23 12:17
441 查看
文章来源:http://blog.csdn.net/huanglong8/article/details/53837822
这里以Navicat应用做为工具。
MySQL在新建表时,在选项一栏会选择引擎,有很多种,关于每种的意义,大家可以自己查。
默认是Innodb,但是我们项目中使用的是MyISAM,所以这里仅介绍MyISAM的情况,Innodb被收购后,MyISAM算式MySQL主打的数据格式。
MyISAM的格式存储分为三个文件。.frm,.MYD,.MYI其中各文件的意义为:
.frm 表示数据表结构,可以理解为Create Table
.MYD 表示数据表的实际数据内容,就是记录集,My data的缩写估计。
.MYI 表示数据表的索引结构,在Navicat下可以看到每个表都是自己的索引,这个就是存它用的。My Index。
现在我们来谈谈坏表。
坏表的原因很多,不过我猜的应该和大量的IO操作有关,在项目中遇到的,以Windows下最多出现,Linux下确实很少或几乎没有,原因我也在找,但还不知道,仅是靠修复来保证用户使用了。
当坏表的时候,在Navicat下是打不开这个表,提示你修复,当然,在实际用户环境下,我们应该提供更好的办法,就是程序化。
MySQL提供一些工具集,在MySQL/bin目录下,命令行为:
如果通过命令行能修复的话,那么OK,一切都好办,集成到项目中合适的位置即可。但还有一种情况,就是报错,错误内容如下:
Can’t find xxx.MYI 等这样的找不到文件的意思。我们跟去原目录下查看,不出意外的话,你会在原目录中发现有xxx.frm,xxx.MYD,xxx.TMP这三个文件,那么xxx.TMP就是在数据表
损坏前,MYSQL替咱们备份的副本,修改其后缀为MYI,再次使用修复命令即可。当然这是没有异常的情况下。
所以在项目开发过程中,如果使用MySQL,还需要做好充分的架构设计,我个人提出的小白级建议是:
使用主从数据库,多从负责读,主负责写,主主备份。
小型项目可以考虑 每次变更表结构或表索引时,对其两个文件的备份。
做好数据MYD内容的备份,应该实际经验告诉我们,如果数据表损坏了,可以修复,但可能会丢失一部分数据。
这里以Navicat应用做为工具。
MySQL在新建表时,在选项一栏会选择引擎,有很多种,关于每种的意义,大家可以自己查。
默认是Innodb,但是我们项目中使用的是MyISAM,所以这里仅介绍MyISAM的情况,Innodb被收购后,MyISAM算式MySQL主打的数据格式。
MyISAM的格式存储分为三个文件。.frm,.MYD,.MYI其中各文件的意义为:
.frm 表示数据表结构,可以理解为Create Table
.MYD 表示数据表的实际数据内容,就是记录集,My data的缩写估计。
.MYI 表示数据表的索引结构,在Navicat下可以看到每个表都是自己的索引,这个就是存它用的。My Index。
现在我们来谈谈坏表。
坏表的原因很多,不过我猜的应该和大量的IO操作有关,在项目中遇到的,以Windows下最多出现,Linux下确实很少或几乎没有,原因我也在找,但还不知道,仅是靠修复来保证用户使用了。
当坏表的时候,在Navicat下是打不开这个表,提示你修复,当然,在实际用户环境下,我们应该提供更好的办法,就是程序化。
MySQL提供一些工具集,在MySQL/bin目录下,命令行为:
mysqlcheck.exe -r mydatabase -uroot -pmypassword -h127.0.0.1
参数依次是 数据库名,账户,密码,IP地址。 这个命令行是一次修复数据库中所有表的,你也可以通过如下命令行修复单个表
mysqlcheck.exe -r mydatabase mytable -uroot -pmypassword -h127.0.0.1
如果通过命令行能修复的话,那么OK,一切都好办,集成到项目中合适的位置即可。但还有一种情况,就是报错,错误内容如下:
Can’t find xxx.MYI 等这样的找不到文件的意思。我们跟去原目录下查看,不出意外的话,你会在原目录中发现有xxx.frm,xxx.MYD,xxx.TMP这三个文件,那么xxx.TMP就是在数据表
损坏前,MYSQL替咱们备份的副本,修改其后缀为MYI,再次使用修复命令即可。当然这是没有异常的情况下。
所以在项目开发过程中,如果使用MySQL,还需要做好充分的架构设计,我个人提出的小白级建议是:
使用主从数据库,多从负责读,主负责写,主主备份。
小型项目可以考虑 每次变更表结构或表索引时,对其两个文件的备份。
做好数据MYD内容的备份,应该实际经验告诉我们,如果数据表损坏了,可以修复,但可能会丢失一部分数据。
相关文章推荐
- MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- mysql备份文件损坏的修复
- InterBase数据库文件损坏的修复方法
- .frm文件损坏坏或丢失修复myisam
- MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)
- MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- MYSQL数据表损坏的原因分析和修复方法
- 当grub配置文件被损坏时的修复方法
- 0x80070570 文件或目录损坏且无法读取 CHKDSK 修复方法
- MYISAM表的.frm、MYI损坏,丢失的修复方法
- VMware虚拟机文件损坏修复方法
- 移动硬盘"文件或目录损坏且无法读取"修复方法
- 修复损坏Excel的文件方法二则——转
- SQL数据文件损坏时的修复方法
- ORACLE 控制文件丢失、损坏 修复方法 二种 ERIKXUE 薛忠权
- MySQL的MyISAM存储引擎修复及修改最大文件大小
- 移动硬盘“文件或目录损坏且无法读取”错误修复方法
- mysql 基础-myisam表损坏及修复
- 用什么方法修复笔记本损坏的word文件
- Win8文件损坏无法自动修复的尝试解决方法