MongoDB Replication(主从互备)

本文深入解析MongoDB的ReplicaSet架构,包括一主多从的备份机制、读写分离、就近读取等功能,并提供了多种部署场景的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB的Replication是一种一主多从的架构,目的是为了备份、错误时自动切换到某一个从机(通过投票机制),也为了支持读写分离、就近读取。一个一主多从的集群叫做一个Replica Set。

一个典型的Replica Set的结构如下:

或(最小配置):


  • 最小配置:一个primary, 一个secondary, 一个arbiter
  • 典型配置:一个primary, 两个secondary
  • 最大支持:一个primary, 50个secondary,其中7个voting members

Primary:
  • 一个replica set中只能有一个
  • 接受所有的写操作
  • 写操作记录在oplog中,然后由secondaries复制过去后更新自己的data sets
  • 缺省地、读操作也是路由到primary
  • 如果primary死掉,自动选举产生一个新的primary代替它
Secondary:
  • 保存着primary的数据备份
  • 异步获取primary的oplog,然后更新自己的data sets
  • 可以被配置成不同的用途:
    • 永远不被选举为primary(Priority 0 Replica Set Members)
    • 数据不被客户端读取(Hidden Replica Set Members)
    • 非实时地保存某个历史时期的数据(Delayed Replica Set Members)
Arbiter:
  • 只是有投票的权利,不保存数据、不能被选举成为primary
  • 轻量级的节点,无需耗费太多系统资源
  • 适用于:为了保持replica set中节点数是奇数,而又无需增加一个secondary的情况
  • 不要和primary或secondary部署在同一个服务器中

缺省地,Primary接收到写的请求后,如果自己写成功了,就返回给客户端。如果需要确保多个secondary节点都写成功了才返回,可以在请求中加一个writenConcern参数,比如:
db.products.insert({item:"envelopes",qty:100,type:"Clasp"},{writeConcern:{w:2,wtimeout:5000}})
这个表示当有两个节点(primary加一个secondary)成功后、或超过5秒钟没成功,就返回。
也可以修改配置:
cfg=rs.conf()cfg.settings={}cfg.settings.getLastErrorDefaults={w:"majority",wtimeout:5000}rs.reconfig(cfg)
这个表示:当voting member中的大多数已经完成写操作后,才返回。

几种常用部署的详细步骤:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值