Skip to content

MongoDB 复制(副本集)

什么是副本集?

副本集(Replica Set) 是一组维护同一份数据的 mongod 实例,包含一个 Primary(主节点)和多个 Secondary(从节点)。写操作在 Primary 执行,并复制到 Secondaries,实现高可用与读扩展。

副本集架构

  • Primary:接收所有写操作,并记录到 oplog。
  • Secondary:复制 Primary 的 oplog 并重放,保持数据一致。可提供读(配合 readPreference)。
  • Arbiter(可选):仅参与选举,不存数据,用于节省资源的奇数节点。

基本配置示例

三节点副本集,每台机器一个 mongod,配置文件或启动参数中指定:

yaml
replication:
  replSetName: "rs0"

在其中一个节点上初始化:

javascript
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "host1:27017" },
    { _id: 1, host: "host2:27017" },
    { _id: 2, host: "host3:27017" }
  ]
})

常用命令

javascript
rs.status()        // 查看副本集状态
rs.conf()          // 查看配置
rs.isMaster()      // 查看主从角色

连接字符串

应用连接副本集时需在 URI 中指定副本集名与多个节点,以便自动发现 Primary:

mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=rs0

下一节介绍 MongoDB 分片