You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需重启数据库搭建MongoDB副本集实现服务器数据同步

实现MongoDB数据同步(类主从模式,尽量避免重启)

首先说明:MongoDB已经弃用了传统的主从复制,现在官方推荐用**副本集(Replica Set)**来实现实时数据同步,它自带故障转移功能,比旧主从更可靠。下面是针对你的场景的操作方案,尽量避免重启现有数据库实例:

前置检查

先确认两个服务器的MongoDB实例是否已经启用副本集支持:
在每个实例的MongoDB shell中执行:

db.adminCommand({getParameter: 1, replication: 1})

如果返回结果中包含"replSetName"字段,说明已经配置了副本集参数,可以直接进入下一步;如果没有,你需要先修改原实例的配置文件(添加replication.replSetName: "rs0",名称可自定义),然后重启一次原实例——这是启用副本集的必要步骤,之后的同步操作就不需要再重启了。

步骤1:初始化原服务器为副本集主节点

在原服务器的MongoDB shell中,执行以下命令初始化副本集(这里用rs0作为副本集名称,你可以换成自己的标识):

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "原服务器IP/域名:27017" }
  ]
})

执行完成后,原实例会自动成为副本集的主节点。你可以用rs.status()查看副本集状态,确认主节点状态为PRIMARY。

步骤2:将新服务器加入副本集

在原服务器的MongoDB shell中,执行命令将新节点添加到副本集:

rs.add("新服务器IP/域名:27017")

执行后,副本集会自动开始从主节点同步数据。你可以每隔几秒执行一次rs.status(),等待新节点的状态变为SECONDARY,此时同步已经在后台运行。

步骤3:验证同步有效性

在原服务器的主节点上插入测试数据:

use test_sync_db
db.test_col.insertOne({content: "check_sync_success"})

切换到新服务器的MongoDB shell,因为从节点默认不允许读操作,先执行以下命令开启读权限:

rs.slaveOk()

然后查询测试数据:

use test_sync_db
db.test_col.findOne({content: "check_sync_success"})

如果能成功查询到这条数据,说明同步已经正常工作。

额外配置建议

  • 确保两台服务器之间的27017端口可以互相访问(调整防火墙规则,允许双向通信)。
  • 如果你的新服务器之前有旧数据,副本集会自动将其替换为主节点的数据,无需手动清理。
  • 可以在副本集添加仲裁节点(可选),提升故障转移的可靠性,但不是必须的。

内容的提问来源于stack exchange,提问作者Wonton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:34:50