服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|

服务器之家 - 数据库 - Mysql - 一次非法关机导致mysql数据表损坏的实例解决

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

2019-12-16 15:12MYSQL教程网 Mysql

本文介绍由于非法硬件关机,造成了mysql的数据表损坏,数据库不能正常运行的一个实例,接下来是作者排查错误的过程,希望对大家能有所帮助

排查修复数据表的经过:

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数据库的数据表修复成功。

延伸 · 阅读

精彩推荐
  • MysqlMySQL组合索引与最左匹配原则详解

    MySQL组合索引与最左匹配原则详解

    这篇文章主要给大家介绍了关于MySQL组合索引与最左匹配原则的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习...

    Wolf、Heart1482019-06-01
  • Mysql一次非法关机导致mysql数据表损坏的实例解决

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

    本文介绍由于非法硬件关机,造成了mysql的数据表损坏,数据库不能正常运行的一个实例,接下来是作者排查错误的过程,希望对大家能有所帮助 ...

    MYSQL教程网4632019-12-16
  • Mysqlmysql 复制过滤重复如何解决

    mysql 复制过滤重复如何解决

    在进行mysql复制过程中,会出现数据重复的现象,怎样利用mysql 过滤重复的数据呢?本文将提供详细的解决方法,需要了解的朋友可以参考下 ...

    MYSQL教程网4872019-12-12
  • Mysqlmybatis mysql delete in操作只能删除第一条数据的方法

    mybatis mysql delete in操作只能删除第一条数据的方法

    这篇文章主要介绍了mybatis mysql delete in操作只能删除第一条数据的问题及解决方法,需要的朋友可以参考下...

    低调小熊猫1792019-06-23
  • Mysqlmysql ndb集群备份数据库和还原数据库的方法

    mysql ndb集群备份数据库和还原数据库的方法

    中午刚刚弄明白了MYSQL集群的备份与恢复。写下来,以后就不用为这个问题浪费时间了 ...

    MYSQL教程网4532019-11-28
  • MysqlLinux下安装mysql的教程详解

    Linux下安装mysql的教程详解

    这篇文章主要介绍了Linux下安装mysql的教程详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    4102019-06-15
  • MysqlMysql表的七种类型详细介绍

    Mysql表的七种类型详细介绍

    Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助,需要的朋友可以了解下 ...

    MYSQL技术网1302019-12-13
  • MysqlMySQL/MariaDB的Root密码重置教程

    MySQL/MariaDB的Root密码重置教程

    这篇文章主要给大家介绍了关于MySQL/MariaDB的Root密码重置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    Sk5392019-06-27