docker Starting MySQL database server mysqld fail解決辦法

今天有一個ubuntu+mysql的測試環境,在容器重啓的時候mysql啓動失敗,導致docker啓動失敗。

首先查看docker日誌

docker logs 8a16

發現有如下報錯:

 * Stopping MySQL database server mysqld

   ...done.

 * Starting MySQL database server mysqld

   ...fail!

所以基本排查出事mysql服務沒啓動導致docker啓動失敗。因爲我在啓動腳本start.sh 添加了set -e命令

 

所以接下來就要查看一下mysql報什麼錯誤。

啓動docker的時候馬上進入容器,否則等下失敗容器就被關閉了。

docker start 8a16

docker exec -it 8a16 /bin/bash

查看mysql錯誤日誌

 cat /var/log/mysql/error.log

發現多次測試啓動失敗的報錯均是以下錯誤。

2018-12-18T09:58:41.325466Z 0 [ERROR] Another process with pid 439 is using unix socket file.

2018-12-18T09:58:41.325486Z 0 [ERROR] Unable to setup unix socket lock file.

2018-12-18T09:58:41.325528Z 0 [ERROR] Aborting

docker重啓容器的時候,有時候會導致mysql異常關閉,然後在目錄下生成一個mysql.sock.lock ,這個文件存在的原因導致mysql服務啓動失敗。

所以我在我的啓動腳本start.sh增加了一行

rm -rf /var/run/mysqld/mysqld.sock.lock

再測試幾次均能成功啓動容器。到此問題已解決。

 

PS:之前也遇到mysql服務啓動失敗,然後再啓動腳本增加了一行 choen -R mysql:mysql /var/lib/mysql /var/run/msqld

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章