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

所属分类: 数据库 / Mysql 阅读数: 364
收藏 0 赞 0 分享

排查修复数据表的经过:

1、访问网页,提示错误,连接不到数据库。

2、启动mysql服务,卸载和关闭rpm安装的mysql服务

(昨天安装postfix好像yum安装了mysql),用netstat -anp |grep mysqld 命令查看mysql服务没有起来,用mysql -uroot -p也连接不到服务器。

3、查看错误提示:

110726 17:02:23 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
110726 17:02:23 [ERROR] /usr/local/mysql/libexec/mysqld: Table './mysql/host' is marked as crashed and last (automatic?) repair failed 
110726 17:02:23 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/host' is marked as crashed and last (automatic?) repair failed 110726 17:02:23 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended 
110726 17:24:31 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
110726 17:24:31 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.
发现提示数据库表损坏。(./mysql/host)

4、修复数据库表

cd /var/lib/mysql/mysql 
myisamchk -of host.MYI 
- recovering (with keycache) MyISAM-table 'host.MYI' 
Data records: 0 
表host.MYI修复成功。

5、再次启动服务,查看服务是否启动,登录mysql,还是不行。所以再次查看错误日志。

/usr/local/mysql/libexec/mysqld: Table './mysql/plugin' is marked as crashed and last (automatic?) repair failed 
/usr/local/mysql/libexec/mysqld: Table 'plugin' is marked as crashed and last (automatic?) repair failed 
110726 17:24:31 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
110726 17:24:31 [ERROR] /usr/local/mysql/libexec/mysqld: Table './mysql/user' is marked as crashed and last (automatic?) repair failed 
110726 17:24:31 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/user' is marked as crashed and last (automatic?) repair failed 110726 17:24:31 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended 
110726 17:27:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
110726 17:27:13 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

6、又发现./mysql/user表损坏。

[root@localhost mysql]# myisamchk -of user.MYI 
- recovering (with keycache) MyISAM-table 'user.MYI' 
Data records: 6

7、表修复成功,但是还是启动不了服务,继续看错误日志。

/usr/local/mysql/libexec/mysqld: Table './mysql/plugin' is marked as crashed and last (automatic?) repair failed 
/usr/local/mysql/libexec/mysqld: Table 'plugin' is marked as crashed and last (automatic?) repair failed 
110726 17:27:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
110726 17:27:13 [ERROR] /usr/local/mysql/libexec/mysqld: Table './mysql/db' is marked as crashed and last (automatic?) repair failed 
110726 17:27:13 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/db' is marked as crashed and last (automatic?) repair failed 
110726 17:27:13 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended

8、最后一个错误,是./mysql/db表还没有修复好继续修复./mysql/db表。

9、执行下面的命令修复./mysql/db表:

[root@localhost mysql]# myisamchk -of db.MYI 
- recovering (with keycache) MyISAM-table 'db.MYI' 
Data records: 0 
Data records: 2

10、最后启动mysql服务。

/usr/local/mysql/bin/mysqld_safe &

11、查看服务是否在运行。

[root@localhost ~]# netstat -anp | grep mysqld 
tcp0  0  
0.0.0.0:3306 
0.0.0.0:*   LISTEN
4360/mysqld  
unix  2  [ ACC ] STREAM LISTENING 14172
4360/mysqld /tmp/mysql.sock
这时发现服务已运行。

12、登录mysql试试。

[root@localhost ~]# mysql -uroot -p123456 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 35 
Server version: 5.1.55-log Source distribution 
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 
This software comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to modify and redistribute it under the GPL v2 license 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
mysql> 
可以登录。

13、打开网页,已经可以正常访问了,说明MySQL数据库的数据表修复成功。

更多精彩内容其他人还在看

Linux安装MySQL教程(二进制分发版)

这篇文章主要为大家详细介绍了Linux安装MySQL教程,二进制分发版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

MAC下MySQL初始密码忘记怎么办

MySQL初始密码忘记如何解决,这篇文章主要介绍了MAC下MySQL忘记初始密码的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Oracle10个分区和Mysql分区区别详解

MySQL分区常用的是:range、list、hash、key,Oracle10g分区常用的是:range(范围分区)、list(列表分区)、hash(哈希分区)、range-hash(范围—哈希分区)、range-list(列表—复合分区)。下面通过本文详细给大家介绍Oracl
收藏 0 赞 0 分享

Windows10下mysql 5.7.17 安装配置方法图文教程

这篇文章主要为大家详细介绍了Windows10下mysql5.7.17安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Windows下MySQL服务无法停止和删除的解决办法

我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL。遇到一点问题,下面通过本文给大家分享Windows下MySQL服务无法停止和删除的解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL配置文件无法修改的解决方法(Win10)

这篇文章主要为大家详细介绍了MySQL配置文件无法修改的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Ubuntu手动安装mysql5.7.10

这篇文章主要为大家详细介绍了Ubuntu手动安装mysql5.7.10的详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

mysql 5.7.13 安装配置方法图文教程(win10 64位)

这篇文章主要为大家分享了win10 64位下mysql 5.7.13 安装配置方法图文教程,感兴趣的朋友可以参考一下
收藏 0 赞 0 分享

mysql 5.7 安装配置方法图文教程

这篇文章主要为大家分享了mysql 5.7 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

完美解决MySQL通过localhost无法连接数据库的问题

下面小编就为大家带来一篇完美解决MySQL通过localhost无法连接数据库的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多