mongosync-实现单节点 MongoDB A 到单节点 B 的数据同步-Cases


以下是通过 mongosync 实现单节点 MongoDB A 到单节点 B 的数据同步的具体步骤,结合核心操作和注意事项整理:


🔧 一、同步场景与命令示例

根据需求选择以下模式: 1. 全量同步(首次迁移)
复制 A 节点所有数据到 B(不包含实时变更):
bash mongosync -h A_IP:27017 --to B_IP:27020 适用场景:初始数据迁移,无需同步后续变更。

  1. 增量同步(追加变更)
    仅同步指定时间点后的数据(需先获取起始时间戳 t_start):
    bash mongosync -h A_IP:27017 --to B_IP:27020 --oplog -s t_start 示例
    bash mongosync -h 10.0.4.91:27017 --to 10.0.4.91:27020 --oplog -s 1369406664,1 注意:时间戳通过 db.oplog.rs.find().sort({$natural:-1}).limit(1) 获取。

  2. 全量 + 增量 + 实时同步(持续同步)
    先全量复制,再持续同步新增数据(类似 tail -f):
    bash mongosync -h A_IP:27017 --to B_IP:27020 --oplog 特点:同步期间新写入 A 的数据自动同步到 B 。


⚙️ 二、配置文件使用(可选)

通过 JSON 配置文件管理复杂参数(如认证信息):
1. 创建 config.json,写入以下内容:

{
  "src": {
    "host": "A_IP",
    "port": 27017,
    "username": "admin",  // 若启用认证
    "password": "passwordA"
  },
  "dst": {
    "host": "B_IP",
    "port": 27020,
    "username": "admin",
    "password": "passwordB"
  }
}
  1. 启动同步:
mongosync -f config.json  # 全量同步
mongosync -f config.json --oplog  # 全量+增量+实时

📝 三、操作步骤详解

  1. 环境准备
  2. 在 A、B 节点启用 Oplog(单节点需配置为副本集模式 )。
  3. 安装 mongosyncbash sudo apt-get install mongosync # Linux

  4. 启动同步

  5. 根据场景选择上述命令,例如实时同步: bash mongosync -h A_IP:27017 --to B_IP:27020 --oplog
  6. 监控状态(输出同步进度与日志): bash mongosync -f config.json -s status.json # 状态保存到文件

  7. 验证数据一致性

  8. 比对集合数量: javascript use db_name; db.stats()
  9. 抽查关键数据: javascript db.collection.find().sort({_id:-1}).limit(10)

⚠️ 四、关键注意事项

  1. 权限与安全
  2. 若启用认证,需在配置文件中提供用户名和密码 。
  3. 生产环境建议使用 TLS 加密传输(配置文件支持 tls=true 参数)。

  4. 性能与稳定性

  5. Oplog 大小:确保 A 节点的 Oplog 可覆盖同步周期(至少 24 小时),避免增量同步中断 。
  6. 资源占用:全量同步时 A 节点 CPU/磁盘 I/O 可能飙升,建议低峰期操作。
  7. 网络延迟:跨机房同步时,高延迟可能导致增量同步滞后。

  8. 故障处理

  9. 同步中断:重新执行命令会基于断点续传(依赖 Oplog 连续性)。
  10. 数据不一致:终止同步后清理 B 节点数据,重新全量同步。
常见问题 解决方案
Oplog 不足导致同步失败 扩大 A 节点 Oplog 大小:db.adminCommand({replSetResizeOplog: 1, size: 10240})
认证失败 检查配置文件中的用户名/密码,确保账号有 read 权限(A 节点)和 readWrite 权限(B 节点)
同步延迟高 减少并发写入;升级网络带宽;调整 mongosync 的批处理参数(需查文档)

💎 总结

  • 简单迁移 → 全量同步命令(无 --oplog 参数)。
  • 零停机迁移 → 全量+增量+实时同步(--oplog)。
  • 精细化控制 → 配置文件 + 时间戳范围同步。

执行前务必备份数据,并在测试环境验证。若需同步分片集群或跨版本迁移(如 MongoDB → TokuMX),需额外配置路由条件 。