Appearance
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 分片。