Dcoker开启MySQL容器binlog日志

场景:Docker已创建了MySQL容器服务并且已有项目在使用中,需要开启binlog日志

处理:

1、通过docker命令查询容器信息

docker ps

【Docker】Dcoker开启MySQL容器binlog日志_日志文件

可以看到有redis和mysql两个容器服务

2、通过命令进入到指定容器内

(mysql容器显示ID为:fa7473948be4)

docker exec -it fa7473948be4  /bin/bash

【Docker】Dcoker开启MySQL容器binlog日志_vim_02

3、在/etc下面找到mysql的配置文件(mysqld.cnf或my.cnf)

find /etc  -name   mysqld.cnf
    find /etc  -name   my.cnf

4、编辑my.cnf配置文件

(发现没有vim,进行vim安装)

【Docker】Dcoker开启MySQL容器binlog日志_vim_03

5、安装vim

此处我使用的是CentOS

# 对于基于Debian的镜像
    apt-get update && apt-get install -y vim 
    # 对于基于RHEL/CentOS的镜像
    yum install -y vim

【Docker】Dcoker开启MySQL容器binlog日志_mysql_04

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是永久的意思

【Docker】Dcoker开启MySQL容器binlog日志_日志文件_05

7、重启Mysql容器

输入命令exit退出容器,对mysql容器服务进行重启即可

【Docker】Dcoker开启MySQL容器binlog日志_mysql_06

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';