NoSql之MongoDB(系列五)

本章主要是介绍MongoDB的复制(Replication)机制,这种机制可以实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下的数据安全.

MongoDB的复制可以以下几种:

1、主从复制模式(Master—Slave)

2、互为主从模式(Replica—Pairs)

3、Replset复制集方式(可以看成pair的升级版,解决pair只能在两个结点间同步的限制,支持多个结点同步且支持主从宕机时的自动切换, 在1.6版本以后提供)

下面分别介绍一下.

 

1、主从复制模式(Master—Slave)

         QQ截图20130709142937

 

主服务器IP:192.168.1.10:27017

mongod --dbpath=c:\MongoDB --master --oplogSize 64

从服务器IP:192.168.1.20:27017

mongod --dbpath=d:\MongoDB --slave --source 1192.168.1.10:27017 --only test --slavedelay 100

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

 

2、互为主从模式(Replica—Pairs)

以这种方式启动后,数据库会自动协商谁是master谁是slave。一旦一个数据库服务器断电,另一个会自动接管,并从那一刻起起为master。万一另一个将来也出错了,那么master状态将会转回给第一个服务器。以这种复制方式启动mongod的命令如下:

配置选项:

      mongod --pairwith <remoteserver> --arbiter <arbiterserver>
      --pairwith: remoteserver是pair里的另一个server
      --arbiter:  arbiterserver是一个起仲裁作用的Mongo数据库,用来协商pair中哪一个是master。arbiter运行在第三个机器上,利用“平分决胜制”决定在pair中的两台机器不能联系上对方时让哪一个做master,一般是能同arbiter通话的那台机器做master。如果不加 --arbiter选项,出现网络问题时两台机器都作为master。

     另外这种模式下的两台机器只能满足最终一致性。当replica pair中的一台机器完全挂掉时,需要用一台新的来代替。如(n1, n2)中的n2挂掉,这时用n3来代替n2。步骤如下:
      1. 告诉n1用n3来代替n2:db.$cmd.findOne({replacepeer:1});
      2. 重启n1让它同n3对话:mongod --pairwith n3 --arbiter <arbiterserver>
      3. 启动n3:mongod --pairwith n1 --arbiter <arbiterserver>。
     在n3的数据没有同步到n1前n3还不能做master,这个过程长短由数据量的多少决定。

 

3、Replset复制集方式

启动第一个服务器

QQ截图20130710153215

 

启动第二个服务器

QQ截图20130710153434

 

打开第三个cmd窗体,一定要进入admin,要不然执行后面的命令会提示错误.

QQ截图20130710153729

QQ截图20130710154024

QQ截图20130710154106

 

 

后面再追加仲裁服务器rs.addArb("127.0.0.1”27017")

使用rs.conf()查看配置

QQ截图20130710162655

 

QQ截图20130710162730

 

QQ截图20130710162811

转载于:https://www.cnblogs.com/tangzhenjie/p/3182482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值