首页/数据/数据库速查/复制节点更换服务器的迁移实操
主从复制与高可用53 条

复制节点更换服务器的迁移实操

换机器保角色的标准做法:新机按备份建库(或 clone)→ 追平后计划切换 → 老机下线;避免直接物理搬盘(硬件/内核差异)。

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

复制节点换机迁移是什么

把从库(或主库角色)从一台服务器搬到另一台上,标准做法是用备份或 Clone 在新机重建数据,追平后按计划切换拓扑,观察期结束再下线老机。直接物理搬运数据目录风险高:InnoDB 的重做日志与双写文件带有硬件与页大小假设,跨机型、跨内核版本经常无法直接启动。迁移清单里最容易漏的一项是 server_id:新机若沿用旧值,与老机同时在线时复制行为会异常。

基本信息

目标换机器但保持角色(从库仍是从库)与数据一致
重建方式备份恢复(通用)或 Clone 插件(8.0.17+ 更快)
必须改项server_id 必须换成新值,避免与老机冲突
追平判断Seconds_Behind_Source 归零且 Executed_Gtid_Set 与源一致
一致性校验pt-table-checksum 或按表行数抽样比对

典型使用场景

  • 硬件替换:老服务器到期或故障前把实例迁到新机器
  • 资源扩容:磁盘或内存不足,换到更大规格的机型
  • 机房搬迁:实例随业务搬到新机房,保持原有复制拓扑
  • 版本升级路径:先迁到新机再原地升级,降低回滚难度
  • 老机退役:保留一台可回退的旧实例,观察期结束后再清理

追平与校验

追平与校验
-- 新机配置复制(自动位点方式)
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='10.0.0.10', SOURCE_USER='repl', SOURCE_PASSWORD='***',
  SOURCE_AUTO_POSITION=1;
START REPLICA;
-- 确认追平:延迟归零且已执行集合与源端一致
SHOW REPLICA STATUS\G
SELECT @@server_id;   -- 新机必须是与老机不同的值
-- 全量一致性复核(低峰执行)
pt-table-checksum --host=10.0.0.10 --user=checksum --password='***'

迁移步骤与检查点

步骤动作检查点
1 准备新机装同版本实例,配置对齐参数模板与老机一致,server_id 改为新值
2 重建数据备份恢复或 Clone 建库表数量、行数量级与老机一致
3 拉复制配置源并 START REPLICAIO/SQL 线程均为 Yes
4 追平校验等待延迟归零后做一致性校验校验无差异,GTID 集合一致
5 切换计划窗口内改拓扑指向应用侧连接切换成功且无报错
6 观察下线观察期后关闭老机并保留备份回退方案与备份仍在手
迁移期间老机不要提前关掉:保留它等于保留一条回退路径。但对主库角色迁移时要注意,两台机器同时在线且 server_id 相同会让复制拓扑行为异常,这一步必须单独验证。
不要用直接拷贝数据目录的方式跨机型迁移:页大小、重做日志与双写文件都带有源环境假设,启动失败甚至数据损坏的概率远高于重建方式。

易错点

  • 新机沿用老机的 server_id:与老机同时在线时复制拓扑行为异常,甚至出现循环复制
  • 追平判断只看延迟秒数为 0:延迟归零不代表数据完全一致,仍需一致性校验或至少按表抽样比对
  • 直接拷贝 datadir 换机:InnoDB 重做日志与双写文件与硬件假设不符,风险高且失败后很难恢复
  • 切换时同时改应用连接与拓扑:出问题无法判断是哪一步引起的,应先切拓扑再切应用或反之,分步验证
  • 观察期太短就下线老机:新机在类生产压力下才暴露的问题(如参数不一致、磁盘性能差)会变成无可回退的故障

数据来源与参考

  • MySQL 8.0 Reference Manual: Replication Administration
  • Percona Toolkit: pt-table-checksum

相关工具

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