重建从库是什么
从库数据漂移严重或落后太多时,逐条修复不如直接重建:用一份备份恢复数据、声明事务起点、配置自动位点后重新挂载,最后校验是否追平。流程清晰且可复用,比在主从之间反复打补丁更快也更可靠。
基本信息
| 前提条件 | 备份文件与其对应的位点或事务信息齐全 |
|---|---|
| 起点声明 | 用备份信息声明已清理事务集合,仅对空实例生效 |
| 挂载方式 | 自动位点模式,从库自行与主库协商起点 |
| 替代方案 | 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重建方式对照
| 方式 | 适用场景 | 注意事项 |
|---|---|---|
| 物理备份恢复 | 数据量大、要求快 | 先准备再启动,位点信息要留存 |
| 克隆插件 | 源实例在线可承受克隆开销 | 需要相应插件与权限 |
| 逻辑导出导入 | 小库或跨版本迁移 | 慢,且程序性对象容易遗漏 |
| 原地修复 | 差异很小 | 风险高,容易留下隐性不一致 |
重建期间把从库从读流量里摘除,避免业务读到半成品数据;追平后再放回负载均衡。
声明事务起点这类操作只在没有业务数据的实例上执行,已有数据的实例执行会造成静默缺数据。