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

你可能感兴趣的:(Mysql)