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

所属分类: 数据库 / Mysql 阅读数: 362
收藏 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数据库的数据表修复成功。

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

mysql jdbc连接步骤及常见参数

这篇文章主要介绍了mysql jdbc连接步骤及常见参数,需要的朋友可以参考下
收藏 0 赞 0 分享

Navicat for MySQL(mysql图形化管理工具)是什么?

这里就给大家介绍一个常用的MySQL数据库管理工具:Navicat for MySQL,需要的朋友可以参考下
收藏 0 赞 0 分享

lnmp下如何关闭Mysql日志保护磁盘空间

这篇文章主要介绍了lnmp下如何关闭Mysql日志保护磁盘空间的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

使用phpMyAdmin批量修改Mysql数据表前缀的方法

这篇文章主要介绍了使用phpMyAdmin批量修改Mysql数据表前缀的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

如何解决局域网内mysql数据库连接慢

通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。非常急人,有没有办法可以解决局域网内mysql数据库连接慢呢?下面小编带领大家来解决此问题,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失

这篇文章主要介绍了使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL 5.0.16乱码问题的解决方法

这篇文章主要介绍了MySQL 5.0.16乱码问题的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL提高分页效率

本文分享的这段代码是大数据量时提高分页的效率的测试代码,感兴趣的小伙伴可以参考一下
收藏 0 赞 0 分享

小记一次mysql主从配置解决方案

mysql主从方案主要作用:读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
收藏 0 赞 0 分享

RHEL6.5编译安装MySQL5.6.26教程

这篇文章主要介绍了RHEL6.5编译安装MySQL5.6.26教程的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多