Mongodb 源码分析--Replication之主从模式--Master

本文深入探讨MongoDB的复制机制,主要关注主从模式中的主节点。下篇将揭示从节点如何启动同步及利用oplog更新本地数据。
摘要由CSDN通过智能技术生成
      mongodb中提供了复制(Replication)机制,通过该机制可以帮助我们很容易实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下 的数据安全。

      在老版本(1.6)中,Mongo提供了两种方式的复制:master-slave及replica pair模式(注:mongodb最新支持的replset复制集方式可看成是pair的升级版,它解决pair只能在两个结点间同步的限制,支持多个结 点同步且支持主从宕机时的自动切换, 在1.6版以后提供)。
   

      利用前者,我们可以实现读写分离(主从复制模式),后者则支持当主服务器断电情况下的集群中其它slave自动接管,并升级为主服务器。 并且如果后来的也出错了,那么master状态将会转回给第一个服务器(之前宕机但后来又恢复运行的服务器)。

      同时mongodb支持使用安全认证(enable)。不管哪种replicate方式,只要在master/slave中创建一个能为各个 database认识的用户名/密码即可。其认证过程如下:
    slave先在local.system.users里查找 一个名为"repl"的用户,找到后用它去认证master。如果"repl"用户没有找到,则使用local.system.users中的第一个用户 去认证。local数据库和admin数据库一样,local中的用户可以访问整个db server。


    下面介绍分别介绍一下这两种复制的配置方式:
    
    Master-Slave(主从)模 式:
     一个server可以同时为master和slave。一个slave可以有多个master(不推荐,可能会产生不可预期的结果)。

     配置选项:
     -- master  以主服务器方式启动
     -- slave   以从服务器方式启动
     -- autoresync :自动重新sync,因为该操作会copy 主服务器上的所有document,比较耗时,在10分钟内最多只会进行一次。
     -- oplogSize :指定master上用于存放更改的数据量,如果不指定,在32位机上最少为 50M,在64位机上最少为 1G,最大为磁盘空间的5%。
     -- source  主服务器地址(与--slave组合使用)
     -- only    仅限于同步指定数据库(下面示例为test库)
     -- slavedelay  同步延时

     下面是本人在本地为了测试方便所使用的配置参数
        Master:  IP->10.0.1.103       
mongod --dbpath=d:/mongodb/db --master --oplogSize 64
        Slave:   IP->10.0.4.210
       
mongod --dbpath=d:/mongodb/db --slave --source 10.0.1.103:27017 --only test --slavedelay 100

    
    补充:受限的master-master复制,这种模式对插入、查询及根据_id进行的删除操作都是安全的。但对同一对象的并发更新无法进行。 Mongo 不支持完全的master-master复制,通常情况下不推荐使用master-master模式,但在一些特定的情况下master- master也可用。master-master也只支持最终一致性。配置master-master只需运行mongod时同时加上--master选 项和 --slave选项。如下:
     mongod --dbpath=d:/mongodb/db --port 27017 --master --slave --source localhost:27018
     mongod --dbpath=d:/mongodb/db --port 27018 --master --slave --source localhost:27017

      
    Replica pairs模式
     以这种方式启动后,数据库会自动协商谁是master谁是slave。一旦一个数据库服务器断电,另一个会自动接管,并从那一刻起起为master。万一 另一个将来也出错了,那么master状态将会转回给第一个服务器。以这种复制方式启动mongod的命令如下:
     配置选项:
      mongod --pairwith <remoteserver> --arbiter <arbiterserver>
      -- pairwith : remoteserver是pair里的另一个server
      -- arbiter :  arbiterserv
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值