MYSQL啟動後報:ERROR! The server quit without updating PID file錯誤的問題解決

leixue0906發表於2015-04-16


問題起因:
今天做了一件事情:我在VM 上將一資料庫的資料檔案(/var/lib/mysql整個資料夾)複製到另外一臺VM上,然後新的VM 上啟動MYSQL,結果報如下異常:
[root@localhost mysql]# service mysql start
Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
於是Google之,大部分的答案都是:
1. 註釋/etc/my.cnf裡的skip-federated註釋掉即#skip-federated;
2. my.cnf檔案配置過高,重新定義其中的引數(根據伺服器情況定義);
3. 殺掉mysql_safe和mysqld程式,然後再重啟;
4. 當前日誌檔案過大,超出了my.cnf中定義的大小(預設為64M),刪除日誌檔案再重啟;
5. 其他情況,檢視日誌檔案(我的是localhost.localdomain.err,具體因人而異),然後具體分析;


問題解決:
其中,我檢視了日誌內容,如下:
[root@localhost mysql]# less localhost.localdomain.err 
111203 22:09:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
^G/usr/sbin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
111203 22:09:03 [ERROR] Aborting


111203 22:09:03 [Note] /usr/sbin/mysqld: Shutdown complete


111203 22:09:03 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended


但是我檢視了我的目錄檔案,mysql-bin.index檔案是存在的呀,奇怪:
[root@localhost mysql]# ll
total 49828
-rw-rw----. 1 mysql mysql 35651584 Dec  3 17:55 ibdata1
-rw-rw----. 1 mysql mysql  5242880 Dec  3 17:55 ib_logfile0
-rw-rw----. 1 mysql mysql  5242880 Dec  3 15:45 ib_logfile1
-rw-rw----. 1 mysql root      1376 Dec  3 22:02 localhost.localdomain.err
drwx--x--x. 2 mysql mysql     4096 Dec  3 17:55 mysql
-rw-rw----. 1 mysql mysql  4847020 Dec  3 17:55 mysql-bin.000001
-rw-rw----. 1 mysql mysql     1373 Dec  3 17:56 mysql-bin.000002
-rw-r--r--. 1 root  root        19 Dec  3 15:38 mysql-bin.index
drwx------. 2 mysql mysql     4096 Dec  3 17:55 performance_schema
-rw-r--r--. 1 root  root       116 Nov 25 21:03 RPM_UPGRADE_HISTORY
-rw-r--r--. 1 mysql mysql      116 Nov 25 21:03 RPM_UPGRADE_MARKER-LAST
drwxr-xr-x. 2 mysql mysql     4096 Dec  3 17:55 test
仔細看了下,咦?-rw-r--r--. 1 root  root        19 Dec  3 15:38 mysql-bin.index----難道是許可權不夠?於是將該檔案加了寫許可權,重啟,濤聲依舊!!!噢噢!


難道是編碼問題?難道是....繼續猜測。。。問題還是沒解決,後來我做了一件事情,將mysql-bin.index檔案刪除掉!重啟!!OH!No!!
[root@localhost mysql]# rm -rf mysql-bin.index 
[root@localhost mysql]#  
[root@localhost mysql]# service mysql start
Starting MySQL... SUCCESS! 


就這樣??為什麼呢?至今這個仍然是未解之謎(對我來說),如有知情者請告知:)


補充:
很多時候,我們在做主從同步的時候,將資料庫目錄整體打包複製到從機上的時候,重啟也往往會出現類似的問題,解決方法仍然是:
1)給MYSQL資料庫資料目錄許可權:chown -R mysql:mysql 目錄名稱
2)務必保證MYSQL的程式是已經關閉了的;


另外要注意的地方就是:ib_*, mysql-bin-*, *.err(log檔案)以及master-info和relay-info檔案都是可以刪除的,相當於重新初始化資料庫的資料,但是前提是:
1)操作前要先關掉MYSQL的程式;
2)刪掉檔案後要重新啟動MYSQL,如果有異常,請自行檢視日誌找問題,一般都比較好定位和解決

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26845409/viewspace-1579564/,如需轉載,請註明出處,否則將追究法律責任。

相關文章