Docker内部MySQL开启binlog日志
如果不想设置docker容器权限,在挂载的my.cnf文件做如下修改:
#binlog为任意的日志前缀,默认存储位置:/var/lib/mysql/下
log-bin = binlog
查看 binlog状态
在MySQL终端执行一下, Navicat都行
show variables like '%log_bin%'
发现是没有开启binlog
修改Docker的MySQL的my.cnf配置文件
添加下面内容,注意: log-bin = /logs/mysql-bin.log 是Docker内部的路径,不是Linux宿主机的路径
#设置日志格式
binlog_format = mixed
#设置日志路径,注意路经需要mysql用户有权限写
log-bin = /logs/mysql-bin.log
#设置binlog清理时间
expire_logs_days = 5
#binlog每个日志文件大小
max_binlog_size = 50m
#binlog缓存大小
binlog_cache_size = 4m
#最大binlog缓存大小
max_binlog_cache_size = 512m
重启docker容器重启失败发现报错信息
docker restart 命令重启docker之后发现重启失败
查看docker日志:
docker logs 容器id
2021-01-16 07:05:53 0 [Note] mysqld (mysqld 5.6.49-log) starting as process 29 ...
mysqld: File '/logs/mysql-bin.index' not found (Errcode: 13 - Permission denied)
2021-01-16 07:05:53 29 [ERROR] Aborting
2021-01-16 07:05:53 29 [Note] Binlog end
上面意思是没权限,需要给docker内部的这个/logs赋予权限,
开始解决问题
把上面修改binlog的配置还原回来,重启docker容器, 让docker重启成功,进入docker容器
命令 : docker exec -it 容器id bash
进入容器之后执行:
chown -R mysql:mysql /logs
修改MySQL目录的用户和用户组权限
修改完了之后退出docker
然后再给修改binlog日志信息. 接着重启docker容器,.发现docker容器启动成功
验证一下
连接MySQL执行一下
show variables like '%log_bin%'