MySQL 5.7.26开启Binary logging配置不生效如何解决
问题根因
你修改的是宿主机的/etc/my.cnf,而实际运行的MySQL服务部署在Docker容器中,容器默认读取自身内部的配置文件,不会加载宿主机的配置,因此修改不生效。
解决方案
方案1:修改现有容器配置(适合保留存量数据,不想重建容器的场景)
- 进入运行中的MySQL容器:
docker exec -it asdshg3 bash - 编辑容器内的MySQL配置文件:
vi /etc/my.cnf - 在
[mysqld]配置块下添加以下参数(必须配置server_id,否则MySQL 5.7的binlog不会生效):
[mysqld] log_bin = mysql-bin binlog_format = ROW server_id = 1
- 保存退出后重启容器:
docker restart asdshg3 - 验证配置是否生效:登录MySQL后执行
SHOW VARIABLES LIKE 'log_bin';,返回值为ON即为开启成功。
方案2:挂载宿主机配置启动容器(适合后续需要频繁修改配置的场景)
- 提前备份现有容器的数据:
docker exec asdshg3 mysqldump -u root -p 你的数据库名称 > /opt/backup.sql - 停止并删除原有容器:
docker stop asdshg3 && docker rm asdshg3 - 在宿主机创建自定义配置文件
/opt/mysql/conf/my.cnf,写入上述binlog相关配置。 - 重新启动容器,挂载配置目录和数据目录:
docker run -d \ --name mysql57 \ -p 3306:3306 \ -v /opt/mysql/conf:/etc/mysql/conf.d \ -v /opt/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=你设置的root密码 \ mysql/mysql-server:5.7
- 启动后执行SQL语句验证binlog状态即可。
内容的提问来源于stack exchange,提问作者harry123
相关产品推荐
相关产品推荐

