一個(gè)MySQL數(shù)據(jù)庫(kù)非法關(guān)機(jī)造成數(shù)據(jù)表?yè)p壞的實(shí)例
本文我們介紹由于非法硬件關(guān)機(jī),造成了MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)表?yè)p壞,數(shù)據(jù)庫(kù)不能正常運(yùn)行的一個(gè)實(shí)例,接下來(lái)是作者排查錯(cuò)誤的過(guò)程,讓我們來(lái)一起了解一下吧。
排查修復(fù)數(shù)據(jù)表的經(jīng)過(guò)如下:
1、訪問(wèn)網(wǎng)頁(yè),提示錯(cuò)誤,連接不到數(shù)據(jù)庫(kù)。
2、啟動(dòng)mysql服務(wù),卸載和關(guān)閉rpm安裝的mysql服務(wù)(昨天安裝postfix好像yum安裝了mysql),用netstat -anp |grep mysqld 命令查看mysql服務(wù)沒(méi)有起來(lái),用mysql -uroot -p也連接不到服務(wù)器。
3、查看錯(cuò)誤提示:
- 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.
發(fā)現(xiàn)提示數(shù)據(jù)庫(kù)表?yè)p壞。(./mysql/host)
4、修復(fù)數(shù)據(jù)庫(kù)表:
- cd /var/lib/mysql/mysql
- myisamchk -of host.MYI
- - recovering (with keycache) MyISAM-table 'host.MYI'
- Data records: 0
- 表host.MYI修復(fù)成功。
5、再次啟動(dòng)服務(wù),查看服務(wù)是否啟動(dòng),登錄mysql,還是不行。所以再次查看錯(cuò)誤日志。
- /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、又發(fā)現(xiàn)./mysql/user表?yè)p壞。
- [root@localhost mysql]# myisamchk -of user.MYI
- - recovering (with keycache) MyISAM-table 'user.MYI'
- Data records: 6
7、表修復(fù)成功,但是還是啟動(dòng)不了服務(wù),繼續(xù)看錯(cuò)誤日志。
- /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、最后一個(gè)錯(cuò)誤,是./mysql/db表還沒(méi)有修復(fù)好繼續(xù)修復(fù)./mysql/db表。
9、執(zhí)行下面的命令修復(fù)./mysql/db表:
- [root@localhost mysql]# myisamchk -of db.MYI
- - recovering (with keycache) MyISAM-table 'db.MYI'
- Data records: 0
- Data records: 2
10、最后啟動(dòng)mysql服務(wù)。
- /usr/local/mysql/bin/mysqld_safe &
11、查看服務(wù)是否在運(yùn)行。
- [root@localhost ~]# netstat -anp | grep mysqld
- tcp 0 0
- 0.0.0.0:3306
- 0.0.0.0:* LISTEN
- 4360/mysqld
- unix 2 [ ACC ] STREAM LISTENING 14172
- 4360/mysqld /tmp/mysql.sock
這時(shí)發(fā)現(xiàn)服務(wù)已運(yùn)行。
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、在打開(kāi)網(wǎng)頁(yè),已經(jīng)能正常訪問(wèn)。證明MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)表就修復(fù)成功了。
關(guān)于MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)表?yè)p壞的問(wèn)題就介紹到這里了,如果您有興趣了解更多關(guān)于MySQL數(shù)據(jù)庫(kù)的知識(shí),可以看一下這里的文章:http://database.51cto.com/mysql/,相信一定會(huì)帶給您收獲的!
【編輯推薦】






