Dcoker开启MySQL容器binlog日志
场景:Docker已创建了MySQL容器服务并且已有项目在使用中,需要开启binlog日志
处理:
1、通过docker命令查询容器信息
docker ps
可以看到有redis和mysql两个容器服务
2、通过命令进入到指定容器内
(mysql容器显示ID为:fa7473948be4)
docker exec -it fa7473948be4 /bin/bash
3、在/etc下面找到mysql的配置文件(mysqld.cnf或my.cnf)
find /etc -name mysqld.cnf
find /etc -name my.cnf
4、编辑my.cnf配置文件
(发现没有vim,进行vim安装)
5、安装vim
此处我使用的是CentOS
# 对于基于Debian的镜像
apt-get update && apt-get install -y vim
# 对于基于RHEL/CentOS的镜像
yum install -y vim
6、继续编辑配置文件并保存
vim /my.cnf
# 追加以下
[mysqld]
log-bin=/var/lib/mysql/mysql-bin
server-id=1
binlog_format=MIXED
expire_logs_days=30
##binlog日志有三种格式:Statement、Row以及Mixed。 mysql默认采用statement,
##这里使用mixed
##expire_logs_days是日志过期时间,这里配置为30天,默认是0,0是永久的意思
7、重启Mysql容器
输入命令exit退出容器,对mysql容器服务进行重启即可
8、检查是否开启
进入数据库通过查询命令查看是否开启,显示ON即为开启
show variables like 'log_bin';
最后,列出一些常用的binlog命令
# 是否启用binlog日志
show variables like 'log_bin';
# 查看详细的binlog日志配置信息
show global variables like '%log%';
# 查看binlog的目录
show global variables like "%log_bin%";
# 查看binlog文件日志列表
show binary logs;
# 查看最新一个binlog日志文件名称和Position(操作事件pos结束点)
show master status;
# 刷新log日志,自此刻开始产生一个新编号的binlog日志文件
# 每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
flush logs;
# 查看第一个binlog文件内容
show binlog events
# 查看具体一个binlog文件的内容
show binlog events in 'master.000001';
# 重置(清空)所有binlog日志
reset master;
# 删除slave的中继日志
reset slave;
# 删除指定日期前的日志索引中binlog日志文件
purge master logs before '2022-02-22 00:00:00';
# 删除指定日志文件
purge master logs to 'master.000001';