mysql重啓報錯
錯誤:
ERROR! MySQL server PID file could not be found!
Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/run/mysql.pid).
原因可能有以下幾種:
1.mysql沒有正常關閉
2.第二次在機器上安裝mysql,有殘餘數據影響服務啓動
3.權限問題,可能是/opt/mysql/data/數據目錄沒有權限
解決方案:
1.沒有正常關閉的話,日誌裏會有寫
[Note] InnoDB: Database was not shutdown normally!
[Note] InnoDB: Starting crash recovery.
[Note] InnoDB: Reading tablespace information from the .ibd files...
[ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace raildb/base_company_fullname uses space ID: 4 at filepath: ./raildb/base_company_fullname.ibd. Cannot open tablespace mysql/slave_master_info which uses space ID: 4 at filepath: ./mysql/slave_master_info.ibd
第一行:提示數據庫沒有正常關閉,第三行,提示正在從.ibd files讀取tablespace information
error的地方,大概意思就是讀取不到raildb這個庫的tablespace
解決:vi /etc/my.cof 增加一行 innodb_force_recovery = 1
然後刪除log裏邊的mysql-bin.index 這個文件
重啓mysql
2.解決:去mysql的數據目錄/data看看,如果存在mysql-bin.index,刪除掉
3.權限問題不說
可能我的問題比較複雜,首先是機器二次安裝mysql,導致重啓報錯,非正常停止mysql,啓動失敗。
解決方案:刪除/tmp/mysql.sock 文件,重啓MySQL
這裏介紹一下mysql,sock
Mysql有兩種連接方式:
(1)TCP/IP
(2)socket
對mysql.sock來說,其作用是程序與mysqlserver處於同一臺機器,發起本地連接時可用。
例如你無須定義連接host的具體IP得,只要爲空或localhost就可以。
在此種情況下,即使你改變mysql的外部port也是一樣可能正常連接。
因爲你在my.ini中或my.cnf中改變端口後,mysql.sock是隨每一次 mysql server啓動生成的。已經根
據你在更改完my.cnf後重啓mysql時重新生成了一次,信息已跟着變更。
如果你刪除掉mysql.sock文件以後可能會報
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql.sock不存在
mysql.sock是一個臨時文件,在mysql啓動時會自動生成,我的服務器未啓動,自然就沒有mysql.sock文件。
在錯誤日誌中,啓動失敗的原因極爲明顯,file ‘./mysql-bin。000004’ not found,failed to open!mysql開啓了bin日誌功能,
到數據庫根目錄查看該文件是存在的,可能是文件權限的問題,因爲/tmp/mysql.sock不存在,用這樣的方法:
>ln -s /var/lib/mysql/mysql .sock /tmp/mysql .sock