首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>其他>正文

MySQL修复坏表的方法

http://www.oklinux.cn  2008-05-29  来源: linuxidc   会员收藏  游客收藏  【 】 

有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用MySQL自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如

检查优化并修复所有的数据库用:

# mysqlcheck -A -o -r -p
Enter password:
database1 OK
database2 OK
----------
修复指定的数据库用
# mysqlcheck -A -o -r Database_NAME -p
即可
另外如果只是对某个表进行修复可以用:myisamchk或isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是 /var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而 pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。

1,简单的修复模式
myisamchk -r -q path/数据库/坏表.MYI
注:-r ----恢复模式 -q ----快速修复

2,使用安全修复模式

myisamchk --safe-recover path/数据库/坏表.MYI

3,困难的修复模式

如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段 。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:

把数据文件移更安全的地方。
使用表描述文件创建新的(空)数据和索引文件:
shell> mysql db_name
mysql> Delete FROM tbl_name;
mysql> quit

将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)
回到阶段2。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。

4,非常困难的修复模式

只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。

从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk -r启动。
如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。

5,优化表结构
myisamchk -r 表
也可以使用sql语句来优化OPTIMIZE TABLE


上一篇:利用混合管理模型提高邮箱服务器效率   下一篇:教你如何正确重装MySQL数据库

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·教你如何正确重装MySQL数据库
·用YUM升级CentOS系统中PHP和MySQL
·菜鸟在Linux系统中安装Oracle 11G
·MySQL数据库出现问题的快速重建
·Linux中配置MySQL随系统的启动和关闭同步
·Linux平台下修正MySQL中文乱码问题
·Ubuntu下安装Firebird功能强大的的数据库
·Linux下MySQL 3数据库升级到MySQL 4.1乱码问题的完美
·Linux下利用MySQL建立VSFTPD下的虚拟用户
·Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过
·重新安装主机后ORACLE DB的处理
·MySQL编码Linux平台
·Linux主机下关于MySQL优化的一些体会
·MySQL数据库的备份与恢复功能将进入全新时代
·Ubuntu PHP插入MySQL数据库乱码问题的解决
·在RHAS4下informix安装记
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·教你如何正确重装MySQL数据库
·用YUM升级CentOS系统中PHP和MySQL
·菜鸟在Linux系统中安装Oracle 11G
·MySQL数据库出现问题的快速重建
·Linux中配置MySQL随系统的启动和关闭同
·Linux平台下修正MySQL中文乱码问题
·Ubuntu下安装Firebird功能强大的的数据
·Linux下MySQL 3数据库升级到MySQL 4.1
·Linux下利用MySQL建立VSFTPD下的虚拟用
·Linux下用SHELL脚本执行带输入输出参数
·重新安装主机后ORACLE DB的处理
·MySQL编码Linux平台
  阅读排行
·The busy Java developer's guide to d
·Oracle建表过程初学
·Linux系统中Oracle数据库的用户权限
·sybase 珍藏系列之二
·使用sybase过程中,数据库备份策略
·INFORMIX SQL 介紹
·Oracle 建立临时表语法及使用技巧
·Sybase for linux安装步骤
·sybase 珍藏系列之四
·Linux操作系统下MySQL的卸载、安装全过
·RHEL5.1 下安装Oracle 10.2.0.1及常见
·INFORMIX FAQ大全
·sybase在AIX上安装的步骤
·Informix安全审计
·安装SCO Openserver5.0.5下的Sybase11.
网摘收藏: