Mysql:記錄一次 【systemctl start mysqld】啟動超級慢、且啟動有可能有問題的問題
環(huán)境
centos 7.4
mysql 5.7.21
背景
其他人安裝的數(shù)據(jù)庫。因要重新配置主從復(fù)制。涉及到mysqld服務(wù)重啟。
問題
首先,第1次,通過systemctl stop mysqld 很順利的關(guān)閉服務(wù)了。
然后,通過systemctl start mysqld 長時間卡住... 最后systemctl提示啟動失敗
實(shí)際上,后臺的mysqld進(jìn)程已經(jīng)起來了,mysqld.log 也顯示啟動成功了。
排查
可能的原因1)既然能夠進(jìn)入mysqld的服務(wù),說明沒有大問題,懷疑是innodb buffer 數(shù)據(jù)啟動轉(zhuǎn)儲、加載的問題,關(guān)閉之,無效
innodb-buffer-pool-load-at-startup=0
innodb-buffer-pool-dump-at-shutdown=0
可能的原因2)journalctl -xe 提示“/var/run/mysqld/mysqld.pid not readable (yet?) after start.”, 懷疑文件系統(tǒng)權(quán)限不正確或路徑不存在,經(jīng)查,所有mysql數(shù)據(jù)庫相關(guān)路徑和文件的屬主都是mysql;創(chuàng)建/var/run/mysqld目錄并賦權(quán)后,問題依舊。不是它的事
可能的原因3)檢查mysqld.log輸出,無明顯錯誤,有個用戶權(quán)限的問題 “[Note] Access denied for user 'UNKNOWN_MYSQL_USER'@'localhost' (using password: NO)”【todo todo】,不經(jīng)過systemctl 而直接通過mysqld啟動,可以啟動;而且這只是個note級別的信息,排除之。 todo
可能的原因4)再再再仔細(xì)分析journalctl -xe 提示“/var/run/mysqld/mysqld.pid not readable (yet?) after start.”,突然想到可能是 systemctl 檢查服務(wù)狀態(tài)的pid文件 可能與用戶自己配置的pid-file路徑不一致!!! 修改/etc/my.cnf中pid-file的路徑與systemctl提示一致【更簡單的:用戶不要配置這個pid-file參數(shù)】,問題解決!
最終原因
systemctl 調(diào)用的 mysqld.service服務(wù)腳本 它所檢查的關(guān)鍵pid文件路徑 與 用戶my.cnf的配置不一致!
定性:
這個mysql-v5.7.21版本的rpm包 有bug或用戶自行部署的mysqld.service服務(wù)腳本不完善
浙公網(wǎng)安備 33010602011771號