mysql修复坏表命令mysqlcheck

11 年 ago jony mysql修复坏表命令mysqlcheck已关闭评论
前段时间,数据库服务器(mysql)因机房掉电,异常关机。等服务器重新起来,启动mysql服务后,发现部分表有所损坏。报can't open file: "xxxx.MYI"(errno: 145)。这时最好先禁止使用到mysql的相关程序服务操作数据库。然后使用mysql自带的mysqlcheck命令来修复
 mysqlcheck -A -r -c -p
输入密码来修复就可以了
    -A    检查所有数据库中的所有表
    -c    检查表的错误
    -r    可以修复大部分问题的修复(如果不赶时间的话,可考虑-e参数代替)
    -o    优化表(如果表太大,写操作比较频繁的话,可能会花较长时间)
              -p    指定加密码
或者

Table 'xxx'is marked as crashed and last (automatic) repair failed

  维护着一个大型资讯网站,数据量比较大,最近搬到linux服务器下,在生成静态网站的时候突然发现首页调用的后台数据全都没有了。着急了,多年的心血啊。

第一反应是想着是不是数据被破坏了,丢了一些数据。检查后发现并不是。

然后通过phpmyadmin查看archives表的时候提示:Table 'xxx'is marked as crashed and last (automatic) repair failed。这意味着该表被标记为跌宕了。于是想着修复:repair table arvhives,修复却失败了。

只好通过mysql命令行来执行了。

1)service mysqld stop  停止mysql服务;

2)cd /var/local/mysql/tbl  切换到该表目录下(注意:不切换过来会总提示myisamchk一些错误导致失败);

3)myisamchk -r xxx.MYI  (如果还是提示错误,就多加一个参数-f  强制进行。)

复制代码
[root@localhost tjinfo]# myisamchk -r dede_archives.MYI
- recovering (with sort) MyISAM-table 'dede_archives.MYI'
Data records: 1781
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4

最后查看,成功!

优化和修复 MySQL 数据库

有时候 MySQL/MariaDB 数据库中的表很容易崩溃,尤其是服务器意外关机、文件系统突然崩溃或复制过程中仍然访问数据库。幸运的是,有一个称为 'mysqlcheck' 的免费开源工具,它会自动检查、修复和优化 Linux 中数据库的所有表。

  1. # mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
  2. # mysqlcheck -u root -p --auto-repair --check --optimize databasename