
异地灾备不是“配好主从就完事”,混合云环境下更得直面网络不可靠、权限隔离严、链路不可控这三座大山。直接上 GTID + 异步复制 + binlog 归档,但必须补全心跳、重连、校验、切换四块拼图,否则切不过去、切过去也用不了。
CHANGE REPLICATION SOURCE TO 必须带心跳和重试参数
跨云(比如阿里云杭州主库 → 腾讯云北京从库)走公网或跨厂商专线时,CHANGE REPLICATION SOURCE TO 默认配置扛不住偶发丢包或 NAT 超时。IO 线程一旦中断,Seconds_Behind_Master 就飙升甚至卡死,且不会自动恢复。
-
MASTER_HEARTBEAT_PERIOD = 30.0:强制主库每 30 秒发一次心跳包,比默认 0(禁用心跳)更能早发现链路异常 -
MASTER_RETRY_COUNT = 86400:避免一次连接失败就停掉 SQL 线程,给足一天重试窗口 -
slave_net_timeout = 60:把 IO 线程等待连接响应的上限从默认 3600 秒砍到 60 秒,让它“快断快重连”,而不是傻等一小时 - 绝对不要依赖
auto-reconnect——MySQL 官方已弃用,且对复制线程完全无效
GTID 模式下 server_id 和时区必须人工核对
混合云里主从常分属不同云平台,初始化时容易忽略基础配置一致性。一旦 server_id 冲突或系统时间偏差 >1 秒,GTID 复制会直接报错中断,且错误信息不直观(比如 Could not parse relay log event entry 往往是时区/格式问题引发的连锁反应)。
- 执行
SELECT @@server_id确保主从值唯一,不能都为 1 或都为空 - 用
SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(UTC_TIMESTAMP())核查主从本地时间与 UTC 偏差,>1 秒必须同步 NTP(尤其注意腾讯云 CVM 默认关 NTP) - 确认
gtid_mode=ON且enforce_gtid_consistency=ON在主从两端都生效,缺一不可 -
binlog_format必须为ROW,语句级日志在跨云网络抖动下极易导致主从数据不一致
从库不能直接当热备顶上去,read_only 和 log_slave_updates 是关键开关
灾备从库默认是只读的,但“热备”意味着它得随时能升主。很多团队在演练时才发现 STOP SLAVE 后仍无法写入——因为 read_only=ON 没关,或 super_read_only=ON 锁死了所有写权限。
- 从库启动前必须设
read_only=OFF(注意是 OFF,不是 0),并确认super_read_only=OFF - 必须开启
log_slave_updates=ON,否则该从库无法再作为其他节点的主库(断了级联链路) - 切换前要手动执行
RESET SLAVE ALL清除旧复制元数据,避免残留source_host导致START REPLICA失败 - 权限账号需提前创建:主库上
CREATE USER 'failover_user'@'%' IDENTIFIED BY 'pwd'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'failover_user'@'%';,从库也要有对应账号用于反向同步验证
binlog 必须实时推送到对象存储,不能只靠主从链路
主从复制链路是单点,一旦从库宕机或网络中断,最近几分钟的 binlog 就丢了。混合云灾备要求 RPO ≤ 30 秒,光靠复制不够,必须把 binlog 文件本身同步出去。
- 用
mysqlbinlog --raw --read-from-remote-server --host=primary_ip --user=replica_user --password=xxx mysql-bin.000001实时拉取并落盘 - 配合
rsync --partial --compress或rclone sync推送到 AWS S3 / 阿里 OSS / 腾讯 COS,加--checksum校验完整性 - 对象存储中按
bucket/region/instance_id/binlog/20260603/分层存放,便于按时间点恢复 - 定期用
mysqlbinlog --base64-output=DECODE-ROWS -v抽样解析远端 binlog,确认可读、无截断、事件完整
最常被跳过的动作是:切前没验证 GTID_EXECUTED 是否连续、没检查从库 relay log 是否已全部应用、没确认备份文件的 sha256 校验值是否匹配。这些不是“可选步骤”,而是决定能不能切成功的第一道门槛。











