首页/数据/数据库速查/CHANGE REPLICATION SOURCE TO 配置复制
主从复制与高可用53 条

CHANGE REPLICATION SOURCE TO 配置复制

8.0 配置复制的主入口:指定源地址与账号,二选一给定位方式(位点 SOURCE_LOG_FILE/POS 或 GTID 的 SOURCE_AUTO_POSITION=1)。

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

配置复制关系

配置复制关系的主入口是 CHANGE REPLICATION SOURCE TO,它指定上游地址与复制账号,同时二选一给出定位方式:按位点(指定日志文件与偏移)或按 GTID(开启自动定位)。开了 GTID 的实例优先用自动定位,省去手工算位点,主从切换与从库重建都更省心。8.0.23 之前这条语句叫 CHANGE MASTER TO,旧写法仍然兼容。

基本信息

用途建立或修改复制关系
语法CHANGE REPLICATION SOURCE TO 参数列表
定位方式位点(日志文件加偏移)或 GTID 自动定位
旧语法8.0.23 前为 CHANGE MASTER TO,仍兼容
账号要求复制账号需有复制相关权限,并限制来源
注意事项口令以明文存于连接元数据,需限制文件权限

典型使用场景

  • 新从库接入:指定上游地址与账号开始拉取数据
  • 主库迁移:上游换地址或端口后重新指向
  • 故障切换后把剩余从库重定向到新主库
  • GTID 环境下跳过位点计算,直接自动定位
  • 更换复制账号或口令,同步更新复制配置
  • 重建复制链路:先停止复制、清理元数据再重新指向

两种定位方式

两种定位方式
# 位点方式
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='10.0.0.10', SOURCE_PORT=3306,
  SOURCE_USER='repl', SOURCE_PASSWORD='Str0ng#Repl!',
  SOURCE_LOG_FILE='mysql-bin.000045', SOURCE_LOG_POS=12345678;
# GTID 方式(推荐)
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='10.0.0.10', SOURCE_PORT=3306,
  SOURCE_USER='repl', SOURCE_PASSWORD='Str0ng#Repl!',
  SOURCE_AUTO_POSITION=1;
START REPLICA;   # 配置完启动复制并查看状态

重建前清理

重建前清理
STOP REPLICA;   # 先停掉复制线程
RESET REPLICA ALL;   # 清空连接元数据与中继日志,重建前必做
SHOW REPLICA STATUS\G   # 确认已无复制配置,再重新指向新的上游

参数要点

参数含义注意
SOURCE_HOST / PORT上游地址与端口写错会一直连不上,先测连通性
SOURCE_USER / PASSWORD复制账号与口令账号只给复制权限并限制来源
SOURCE_LOG_FILE / POS按位点定位位点必须来自上游实际状态
SOURCE_AUTO_POSITIONGTID 自动定位GTID 环境优先使用
SOURCE_SSL加密复制链路跨公网复制建议开启
RESET REPLICA ALL清空复制元数据重建前必做,否则残留配置干扰
GTID 环境优先使用自动定位:免去手工计算位点,也让故障切换与从库重建的步骤更少、出错面更小。
复制账号的口令以明文形式保存在连接元数据里,需要限制相关文件的访问权限;跨公网复制还应启用加密链路。
在已有数据的实例上换源之前,先停止复制并清理复制元数据,同时确认本地数据与目标位点的前提匹配,否则会出现重复执行或数据缺失。

配置复制检查清单

  • 确认上下游主机编号唯一,避免复制异常
  • 确认复制账号具备复制权限且来源受限
  • GTID 环境确认双方都已开启相应模式
  • 位点方式要先核对上游当前位点,不要凭记忆填写
  • 配置完成后立刻查看复制状态与错误字段
  • 把配置命令记入变更记录,便于故障时复现
配置完成后先确认拉取线程与重放线程都处于运行状态,再看位点是否在推进:只有状态正常但位点不动,通常说明上游没有新写入,而不是复制出了问题。
位点与 GTID 两种方式不要混着写:同一实例里同时残留位点参数与自动定位参数,会让从库的行为变得难以判断,重建时统一到一种定位方式更省心。

易错点

  • 位点填错:从库要么起不来,要么从错误位置开始重放,数据不一致且很难察觉,配置前先核对上游实际位点
  • 没有清理复制元数据就直接换源:旧配置残留,表现为行为异常或复制无法启动
  • 复制账号权限开得过大:复制只需要专门权限,授权过宽等于多开了一个可被利用的入口
  • 配置后忘记启动复制线程:查状态发现异常就误判为配置失败,白排查一轮
  • 跨公网复制不加密:账号口令与数据在链路上明文传输,存在被截获的风险

数据来源与参考

  • MySQL 8.0 Reference Manual: CHANGE REPLICATION SOURCE TO

相关工具

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