首页/数据/数据库速查/从库复制配置(relay_log / read_only)
主从复制与高可用53 条

从库复制配置(relay_log / read_only)

从库同样要唯一 server_id;建议独立 relay log 路径与 log_replica_updates(级联复制需要);read_only + super_read_only 防止业务误写。

数据库速查数据更新于 2026-10-13

从库配置要点

从库需要自己的身份与约束:唯一的 server_id(与主库以及其它从库都不同)、独立的 relay log 路径、是否把重放的事件再写进自己的 binlog(级联复制或链路切换时需要),以及只读保护。read_only 能挡住普通账号写入,但持有 SUPER 权限的账号仍然可写,所以生产上还要一起打开 super_read_only。这几项都属于一次配好、长期受益的参数,新建实例时补齐比事后补救省事得多。

基本信息

server_id同一拓扑内必须唯一,重复会让复制关系错乱
relay_log中继日志路径,建议放在独立磁盘目录
log_replica_updates从库重放也写自身 binlog,级联复制需要
read_only普通账号不可写,但不限制高权限账号
super_read_only连管理员账号也禁写,应急写入需先关闭

典型使用场景

  • 新建从库时补齐身份与只读参数
  • 搭建级联复制,让从库同时充当别人的源
  • 规划切换目标,提前打开 binlog 写入
  • 防止运维误操作把从库写坏,造成主从分叉
  • 排查从库上出现的本地写入事务

从库 my.cnf

从库 my.cnf
[mysqld]
server_id = 1002
relay_log = /var/lib/mysql/relaylog/relay-bin
read_only = ON
super_read_only = ON
# 级联复制(该从库还要当别人的源)需要:
log_replica_updates = ON
log_bin = /var/lib/mysql/mysql-bin
# 独立 relay 目录需提前创建并授权给 mysql 用户

配置项与注意

配置项作用注意事项
server_id拓扑内的唯一身份重复会导致复制关系显示混乱
relay_log中继日志路径与数据目录同盘会争抢 IO
log_replica_updates重放事件也写入自身 binlog级联复制与链路切换必需
read_only挡普通账号写入不限制持有 SUPER 的账号
super_read_only连管理员账号也禁写计划内切换前必须先关掉
只开 read_only 不开 super_read_only 时,运维用高权限账号仍能把从库写坏,主从立刻分叉。两个参数一起开,才称得上真正只读。
把从库提升为可写之前,一定要先关掉 super_read_only,否则应用写入会一直失败,而报错信息看上去像是在说权限不足,容易误导排查方向。
relay log 与数据目录放在同一块盘上时,重放高峰期的 IO 会互相挤占,主从延迟被明显放大;条件允许时把中继日志单独放到另一块盘。

易错点

  • 只开 read_only:高权限账号的误操作照样把从库写坏
  • server_id 与其它节点重复:复制关系与拓扑显示混乱
  • relay log 与数据目录同盘:重放高峰 IO 互相影响
  • 切换前忘记关闭 super_read_only:新主可写但应用写入持续失败

数据来源与参考

  • MySQL 8.0 Reference Manual: Replica Server Options

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌