`
yushine
  • 浏览: 197016 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

如何修复损坏的MySQL数据表

阅读更多

    于断电或非正常关机而导致MySQL数据库出现错误是非常常见的问题。有两种方法,一种方法使用MySQL的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table
登陆MySQL 终端:
MySQL -uxxxxx -p dbname
> check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
> repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. 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数据库存放的位置。

需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动! 

检测修复所有数据库(表)
MySQLcheck -A -o -r -p

分享到:
评论

相关推荐

    MySQL数据库INNODB 表损坏修复处理过程

    MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。

    MySQL数据库中部分数据损坏恢复过程

    本文将为大家介绍MySQL数据库中部分数据损坏恢复过程。

    MYSQL数据库修复程序

    MySQL数据库修复程序,表查看,读取,表设计。SQL数据库内容读取。

    MySQL数据表损坏的正确修复方案

    修复以损坏的MySQL数据表的实际操作在实际中是我们经常用到的,以下的文章主要是介绍正确修复以损坏的MySQL数据表的实际操作步骤,以下就是正文的介绍,希望会给你带来一些帮助在此方面。

    MySQL数据库表修复 MyISAM

    一:MySQL中MyISAM表损坏原因总结: 1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。 2、 磁盘损坏。 3、 服务器死机。 4、 mysql 本身的bug 。 二:MySQL中MyISAM...

    MYSQL数据表损坏的原因分析和修复方法小结(推荐)

    1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1、 服务器突然断电导致数据文件损坏。 2、 强制关机,没有先关闭mysql 服务。 3、 mysqld 进程在写表时被杀掉。 4、 使用myisamchk 的同时,mysqld 也...

    shell脚本自动修复mysql损坏的表

    问题描述:最近查看mysql数据库服务器日志,老发现有表损坏的错误日志,比如:120724 7:30:48 [ERROR] /data/soft/mysql/libexec/mysqld: Table ‘./blog/wp_links’ is marked as crashed and last (automatic?...

    phpmyadmin显示MySQL数据表“使用中” 修复后依然无效的解决方法

    PHP+MySQL后台,部分程序页面不显示内容,错误提示出错,需要修复。 打开phpmyadmin选择数据库查看,果然有3个表显示为“使用中”。...第三步:打开数据库所在的文件夹,找到损坏表的系统自动生成的文件(xxxx

    DBRECOVER for MySQL:修复损坏MySQL数据库恢复删除的表和数据库-开源

    DBRECOVER For MYSQL Database(InnoDB/MyISAM) 是由 DBRECOVER SOFTWARE INC 制作的用于从损坏或损坏的 InnoDB 表和 MyISAM 表中恢复数据的专业实用程序。我们为 mysql 提供 dbrecover 作为软件和服务。 使用 ...

    修复Mysql数据库错误

    进入论坛数据库,然后选择要修复的表(您损坏的是cdb_sessions 会员认证数据表),在页脚下拉框选择“修复”即可 如果您的服务器是独立主机强烈建议使用命令行方式进行修复: 修复前将mysql服务停止。 如果是Win主机,...

    使用shell检查并修复mysql数据库表的脚本

    /bin/sh#code by scpman#功能:检查并修复mysql数据库表#将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开始修复#修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。...

    一次非法关机导致mysql数据表损坏的实例解决

    排查修复数据表的经过: 1、访问网页,提示错误,连接不到数据库。 2、启动mysql服务,卸载和关闭rpm安装的mysql服务(昨天安装postfix好像yum安装了mysql),用netstat -anp |grep mysqld 命令查看mysql服务没有...

    如何使用myisamchk和mysqlcheck工具快速修复损坏的MySQL数据库文件

    分析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。 一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名...

    MySQL数据库INNODB表损坏修复处理过程分享

    innodb表损坏不能通过repair table 等修复myisam的命令操作。现在记录下解决过程,下次遇到就不会这么手忙脚乱了。 处理过程: 一遇到报警之后,直接打开错误日志,里面的信息:InnoDB: Database page corruption ...

    检查并修复mysql数据库表的具体方法

    #修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。 fix_logs='/tmp/fix.log'\nuser=''\npass='' check_fix() { dblist=`/usr/bin/find /usr/dlm_db/mysql/ -type d | grep -vE logs|_[1-9]|*bak...

    高性能MySQL(第3版).part2

    5.5.1找到并修复损坏的表187 5.5.2更新索引统计信息188 5.5.3减少索引和数据的碎片190 5.6总结192 第6章查询性能优化195 6.1为什么查询速度会慢195 6.2慢查询基础:优化数据访问196 6.2.1是否向服务器请求了...

    快速修复损坏的MySQL数据库

    # myisamchk -r /数据库文件的绝对路径/*MYI # service mysql start myisamchk 会自动检查并修复数据表中的索引错误。 2、mysqlcheck 使用 mysqlcheck 无需停止 MySQL ,可以进行热修复。操作步骤如下: # mysql...

Global site tag (gtag.js) - Google Analytics