一次非法关机导致MySQL数据表损坏的实例解决
这篇文章主要为大家详细介绍了一次非法关机导致MySQL数据表损坏的实例解决,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
排查修复数据表的经过:
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 failed110726 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 ended110726 17:24:31 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql110726 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/mysqlmyisamchk -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 failed110726 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 failed110726 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 ended110726 17:27:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql110726 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 failed110726 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 failed110726 17:27:13 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/db' is marked as crashed and last (automatic?) repair failed110726 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: 0Data records: 2
10、最后启动mysql服务。/usr/local/mysql/bin/mysqld_safe &
11、查看服务是否在运行。[root@localhost ~]# netstat -anp | grep mysqldtcp0 00.0.0.0:33060.0.0.0:* LISTEN4360/mysqldunix 2 [ ACC ] STREAM LISTENING 141724360/mysqld /tmp/mysql.sock这时发现服务已运行。
12、登录mysql试试。[root@localhost ~]# mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 35Server version: 5.1.55-log Source distributionCopyright (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 licenseType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>可以登录。
13、打开网页,已经可以正常访问了,说明MySQL数据库的数据表修复成功。
注:关于一次非法关机导致MySQL数据表损坏的实例解决的内容就先介绍到这里,更多相关文章的可以留意