首页/数据/数据工程与 ETL 速查/开启 binlog:my.cnf 配置要点
CDC 与同步53 条

开启 binlog:my.cnf 配置要点

开启 binlog 需要在 my.cnf 的 [mysqld] 段配置 log_bin、server_id 与 binlog_format;log_bin 属只读参数,修改后需重启 mysqld 生效(MySQL 8.0 默认已开启)。云数据库由控制台参数组管理,开启前确认对备份与复制链路的影响。

开启 binlog 要改什么

binlog 是 MySQL 记录所有数据变更的二进制日志,复制、基于时间点的恢复、CDC 同步都建立在它之上。开启需要在配置文件的 [mysqld] 段落里设置 log_bin、server_id 与 binlog_format 三项;其中 log_bin 是只读参数,改完必须重启 mysqld 才生效(MySQL 8.0 默认已经开启)。云数据库通常不暴露配置文件,而是在控制台的参数组里改,改前要确认对备份与已有复制链路的影响。

基本信息

配置文件Linux 常见 /etc/my.cnf 或 /etc/mysql/my.cnf,段落为 [mysqld]
关键参数log_bin、server_id、binlog_format、binlog_row_image
生效方式log_bin 只读,修改后需重启 mysqld
server_id1~4294967295 的整数,复制拓扑内必须唯一
默认状态MySQL 8.0 默认开启 binlog
云上差异由控制台参数组管理,部分参数改动会触发实例重启

my.cnf 关键配置

my.cnf 关键配置
[mysqld]
server_id = 101
log_bin = /var/log/mysql/mysql-bin
binlog_format = ROW
binlog_row_image = FULL
binlog_expire_logs_seconds = 604800   # 日志保留 7 天
max_binlog_size = 512M                # 单个日志文件大小上限
sync_binlog = 1                       # 每次提交刷盘,兼顾安全与性能

重启后验证

重启后验证
systemctl restart mysqld
mysql -uroot -p -e "SHOW VARIABLES LIKE 'log_bin'; SHOW MASTER STATUS;"
# 注意:较新版本对 MASTER/SLAVE 术语做了重命名,命令报错时改用对应的新名称
mysql -uroot -p -e "SHOW BINARY LOGS;"    # 列出当前日志文件与大小

典型使用场景

  • 接入 CDC:业务库要打开行格式 binlog,采集端才能持续读取变更
  • 搭建主从复制:从库依赖主库 binlog 回放变更
  • 误操作恢复:全量备份加 binlog 回放可以把数据恢复到误删前的时刻
  • 审计要求:需要保留一段时间内的全部数据变更记录
  • 迁移演练:新实例按目标拓扑统一 server_id 与日志参数后再切流量

参数读法

参数作用注意
log_bin开启二进制日志并指定路径前缀只读,必须重启才生效
server_id实例在复制拓扑中的标识重复会导致复制异常与采集混乱
binlog_format记录格式,CDC 需要 ROWSTATEMENT 无法被 CDC 正确解析
binlog_expire_logs_seconds日志保留时长过短会让停机较久的采集端位点失效
max_binlog_size单个日志文件大小超过即滚动新文件,影响位点管理
server_id 为 1~4294967295 之间的整数且在复制拓扑内唯一;生产修改前先备份配置文件并留好回滚窗口。
binlog 会持续占用磁盘,保留时长与磁盘容量要一起规划;磁盘写满时实例会停止写入,比日志丢失更严重。

易错点

  • 改完 log_bin 忘记重启,SHOW MASTER STATUS 仍报未开启
  • server_id 用了默认值或与从库重复,复制和 CDC 采集互相影响
  • 开启 binlog 后没规划磁盘容量,日志堆积把数据盘写满
  • 把 binlog_format 留在 STATEMENT,采集端解析不出正确的行级变更
  • 在生产高峰重启实例开启日志,业务出现可避免的中断

数据来源与参考

  • MySQL 8.0 Reference Manual: Setting the Replication Source Configuration
  • MySQL 8.0 Reference Manual: Server System Variables
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌