首页/数据/数据库速查/重建从库(损坏/漂移后的重挂)
主从复制与高可用53 条

重建从库(损坏/漂移后的重挂)

从库数据漂移或落后太多时,「重建」比重放更省心:用备份恢复数据 → 设置 GTID 起点 → AUTO_POSITION 重挂 → 校验追平。

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

重建从库是什么

从库数据漂移严重或落后太多时,逐条修复不如直接重建:用一份备份恢复数据、声明事务起点、配置自动位点后重新挂载,最后校验是否追平。流程清晰且可复用,比在主从之间反复打补丁更快也更可靠。

基本信息

前提条件备份文件与其对应的位点或事务信息齐全
起点声明用备份信息声明已清理事务集合,仅对空实例生效
挂载方式自动位点模式,从库自行与主库协商起点
替代方案8.0.17 起可用克隆插件从运行中的实例直接克隆
收尾动作校验事务集合是否追平后再对外提供读取

重建流程要点

  • 停掉旧复制通道:重建期间新旧通道并存会报错或重复写入
  • 恢复备份并准备:物理备份需要先完成准备阶段才能启动
  • 声明事务起点:只对没有业务数据的实例执行,并先做子集校验
  • 配置并启动复制:使用自动位点模式,避免手工算位点出错
  • 校验追平:确认事务集合差异为空后才允许业务读取
  • 补监控与告警:确认新实例已纳入延迟与线程状态监控

重建命令序列

重建命令序列
-- 1) 停止旧复制并清空复制元数据(仅空实例)
STOP REPLICA;
RESET REPLICA ALL;
-- 2) 恢复备份后,声明起点(示例值来自备份位点信息)
SET GLOBAL gtid_purged = '3a7f1e3b-1111-1111-1111-111111111111:1-5000000';
-- 3) 自动位点挂载
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.10', SOURCE_USER='repl',
  SOURCE_PASSWORD='***', SOURCE_AUTO_POSITION=1;
START REPLICA;
-- 4) 校验是否追平
SHOW REPLICA STATUS\G

重建方式对照

方式适用场景注意事项
物理备份恢复数据量大、要求快先准备再启动,位点信息要留存
克隆插件源实例在线可承受克隆开销需要相应插件与权限
逻辑导出导入小库或跨版本迁移慢,且程序性对象容易遗漏
原地修复差异很小风险高,容易留下隐性不一致
重建期间把从库从读流量里摘除,避免业务读到半成品数据;追平后再放回负载均衡。
声明事务起点这类操作只在没有业务数据的实例上执行,已有数据的实例执行会造成静默缺数据。

易错点

  • 起点声明范围偏大:从库假装已拥有这些事务,静默缺数据且极难排查
  • 重建期间旧复制通道没停:新旧通道并存导致报错或数据重复写入
  • 恢复后直接对外提供读:尚未追平就接流量,业务读到不完整数据
  • 重建完成不做数据校验:追平判断只看表面状态,问题留到切换当天

数据来源与参考

  • MySQL 8.0 Reference Manual: Creating a Replica Using a Backup
  • MySQL 8.0 Reference Manual: GTID_PURGED

相关工具

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