mysql 5.5开启binlog

135 阅读1分钟

mysql 5.5开启binlog

环境

  • docker容器,系统 ubuntu;mysql 5.5
  • 配置文件:/etc/mysql/my.cnf

添加代码

[mysqld]
# binlog
datadir=/etc/mysql/data # 数据目录,注意在整个配置文件中有没有 重复指定
# 启用binlog,设置日志文件的基础名称,比如:mysql-bin.000007,
# 会默认生成mysql-bin.index
log-bin=mysql-bin    
server-id=1     # 指定一个唯一的服务器ID,用于复制
binlog_format=ROW       # 选择binlog格式,ROW, STATEMENT或MIXED,ROW是推荐的
expire_logs_days=30
max_binlog_size=1024M

重启mysql服务, 然后查看是否开启binlog服务:

show variables like 'log_%';
SHOW VARIABLES LIKE 'log_bin';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

产生的文件在 datadir = /var/lib/mysql 配置的目录下:

root@70231afa3b8f:/# cd /var/lib/mysql
root@70231afa3b8f:/var/lib/mysql# ls

    mysql-bin.000002  mysql-bin.000006
    mysql-bin.000003  mysql-bin.000007
    mysql-bin.000004  mysql-bin.index
  • 错误示例:
log_bin=ON
server-id=1     # 指定一个唯一的服务器ID,用于复制
log_bin_basename=D:\Program Files (x86)\mysql-5.7.43-winx64\data\log_bin
log_bin_index=D:\Program Files (x86)\mysql-5.7.43-winx64\data\log_bin\bidding_anwen.index

这种写法我在以上的环境中配置启动失败,查资料说他们都是相同,但linux环境试了后报错,需要在windows环境下试一下是否可行,还有一个就是版本问题。

补充:经查,错误示例的配置完全不标准,应该按照上面标准的配置来写,log_bin_basename和log_bin_index我们应该依赖于datadir这项的配置。