配置复制关系
配置复制关系的主入口是 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_POSITION | GTID 自动定位 | GTID 环境优先使用 |
| SOURCE_SSL | 加密复制链路 | 跨公网复制建议开启 |
| RESET REPLICA ALL | 清空复制元数据 | 重建前必做,否则残留配置干扰 |
GTID 环境优先使用自动定位:免去手工计算位点,也让故障切换与从库重建的步骤更少、出错面更小。
复制账号的口令以明文形式保存在连接元数据里,需要限制相关文件的访问权限;跨公网复制还应启用加密链路。
在已有数据的实例上换源之前,先停止复制并清理复制元数据,同时确认本地数据与目标位点的前提匹配,否则会出现重复执行或数据缺失。
配置复制检查清单
- 确认上下游主机编号唯一,避免复制异常
- 确认复制账号具备复制权限且来源受限
- GTID 环境确认双方都已开启相应模式
- 位点方式要先核对上游当前位点,不要凭记忆填写
- 配置完成后立刻查看复制状态与错误字段
- 把配置命令记入变更记录,便于故障时复现
配置完成后先确认拉取线程与重放线程都处于运行状态,再看位点是否在推进:只有状态正常但位点不动,通常说明上游没有新写入,而不是复制出了问题。
位点与 GTID 两种方式不要混着写:同一实例里同时残留位点参数与自动定位参数,会让从库的行为变得难以判断,重建时统一到一种定位方式更省心。