MongoDB 副本集迁移架构

rs0 | MongoDB 3.6.3 | WiredTiger | 2026-03-22

Primary
ACTIVE
老主节点
10.66.158.29:27017
47.104.58.237 (公网)
实例 i-m5e94ugtbu9q..
规格 ecs.n1.xlarge
磁盘 3.5T SSD (98%)
引擎 WiredTiger
写入 189 ops/s
文件系统 ext3
Secondary (XFS 子节点)
lag ≈ 0s
XFS 中转节点
10.66.187.159:27017
实例 i-m5e6eeeu6knq0s..
CPU ~122%
内存 19G / 30G
磁盘 3.3T / 4T XFS
cache 20G
nojournal
已停止 (旧中间节点)
STOPPED
ext3/ext4 死锁节点
10.66.187.158
实例 i-m5e8xoc48a8..
问题 WiredTiger fdatasync 死锁
已从副本集移除
Secondary (目标主节点)
TARGET
孙节点
10.0.0.146:27017
47.105.51.169 (公网)
实例 i-m5e6eeeu6knq6i..
规格 8C / 16G
系统 CentOS 7.9
磁盘 622G / 2T NVMe XFS
cache 10G
docs 30.3 亿
lag ≈ 0s
iptables DROP→Primary
PRIMARY
SECONDARY
TARGET (最终主节点)
STOPPED
- - - oplog 复制
- - - 链式复制

迁移进度

XFS 子节点验证 — 解决 WiredTiger ext4 死锁
Compact 碎片整理 — 95/95 集合, 3.3T → 2.0T
Initial Sync — 10.7h, 622G, 30.3 亿 docs 验证通过
端口交换 — 27018 → 27017, cache 3G → 10G
副本集精简 — 4 节点 → 3 节点
最终验证 + 压测
切主 (rs.stepDown)
公网 IP 迁移 (47.104.58.237 → 孙节点)
善后释放旧资源