您的位置:首页 > 博客中心 > 数据库 >

MongoDB Replica Set使用经验分享

时间:2022-03-14 04:33

MongoDB Replica Set是MongoDB官方推荐的主从复制和高可用方案,用于替代原有的Master-Slave主从复制方案。Replicat Set具有自动切换功能,当Primary挂掉之后,可以自动由Replica Set中的某一个Secondary来切换到Primary,以实现高可用的目的,不像MySQL那样需要使用第三方软件。

目前很多游戏公司都开始使用MongoDB作为数据库,我们公司线上使用的版本是2.4.6.


一  MongoDB Replica Set的原理

复制主要用于备份、灾难恢复和读写分离。一个Replica Set就是一组mongod实例。Replica Set中的Primary接收所有的写操作,Secondaries从Primary复制操作然后应用到自己的data set。


技术分享


技术分享


技术分享


技术分享




一个Replica Set中的成员角色有三种:Primary,Secondary和Arbiter。


Primary    接收来自客户端的所有的写操作,一个Replica Set中有且只有一个Primary。Primary如果宕掉,Replica Set会自动选举一个Secondary成为Primary。Primary将它data sets的所有操作都记录到oplog中。


Secondary  Secondary从Primary复制oplog,然后将oplog中的操作应用到自己的data sets。Secondary和Primary之间是异步复制,也就是Secondary中的数据可能不是最新的。默认情况下,Secondary不可读不可写,但是可以通过设置运行客户端从Secondary读。




Arbiter    Arbiter不需要维护自己的data sets,只是当Primary挂掉之后参与投票选择哪个Secondary可以升级为Primary。当Replica Set中的成员个数为偶数个时,就需要添加一个Arbiter用于投票选举哪个可以升级为Primary。Arbiter对硬件的要求很低。不能在Primary或者Secondary主机上运行Arbiter。


一个Replica Set可以最多拥有12个成员,但是只有7个成员可以同时参与投票选举成为Primary,如果成员数量超过12,就需要使用Master-Slave主从复制方式。

部署一个Replica Set至少需要三个成员,一个Arbiter,一个Secondary和一个Primary或者一个Primary,两个Secondary。



可以将Secondary配置为以下几种特殊用途:

A.在选举中阻止其成为Primary,只用作备份数据。通过设置优先级priority为0来实现。

  技术分享

B.阻止应用程序从它读,通过设置优先级priority为0和设置hidden为true来实现。


              技术分享

   一个隐藏的成员同样复制Primary的数据,但是对于客户端应用程序来讲,它不可见。


C.保留历史镜像数据用于数据回档,比如如果误删除数据,可以使用Delayed Replica Set成员中的数据恢复。

  技术分享

   Delayed members即延时成员会延时从Primary复制oplog




参考文档


本文出自 “” 博客,请务必保留此出处

热门排行

今日推荐

热门手游