最近开始维护一个运行多年的私有化项目。
项目使用docker部署,mysql、应用等都在一个镜像中,mysql数据挂载在物理机上。mysql属于单机,开启了binlog,因为数据比较重要,经年未做清理,导致binlog文件过大直接爆盘。我们做了以下步骤关闭binlog:
# 进入容器
vi /etc/mysql/my.cnf
# 将以下2行注释,关闭binlog
# log-bin=mysql-bin
# binlog_format=mixed
# 删除binlog日志文件
rm -rf /data/mysql/mysql-bin.*
在关闭binlog后,重启容器,发现mysql无法启动,查看日志显示
Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (111 'connection refused')
这时,我们将/run/mysqld/mysqld.sock
文件删除,mysqld还是无法启动。我们将现有容器删除,重新部署容器,因为这时的镜像是未关闭binlog的,所以无法正常启动,并且会显示以下错误
Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
然后进入容器,将binlog再次关闭,这时发现mysql未成功启动原因改变了
[ERROR] Found 1 prepared tra