MongoDB介绍──管理者专区(3)

3.3  Replication(复制)

    Mongo提供了两种方式的复制:简单的master-slave配置及replica pair的概念。

    如果安全认证被enable,不管哪种replicate方式,都要在master/slave中创建一个能为各个database认识的用户名/密码。认证步骤如下:

    slave先在local.system.users里查找一个名为"repl"的用户,找到后用它去认证master。如果"repl"用户没有找到,则使用local.system.users中的第一个用户去认证。local数据库和admin数据库一样,local中的用户可以访问整个db server

3.3.1  master-slave模式

一个server可以同时为masterslave一个slave可以有多个master,这种方式并不推荐,因为可能会产生不可预期的结果。一个One Slave Two Masters配置的例子可参考http://www.mongodb.org/display/DOCS/One+Slave+Two+Masters

部分配置选项:

--autoresync:自动sync,但在10分钟内多只会进行一次。

--oplogSize:指定master上用于存放更改的数据量,如果不指定,在32位机上最少为50M,在64位机上最少为 1G,最大为磁盘空间的5%

3.3.2  replica pairs模式

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

./mongod --pairwith <remoteserver> --arbiter <arbiterserver>

其中remoteserver是pair里的另一个server,arbiterserver是一个起仲裁作用的Mongo数据库,用来协商pair中哪一个是master。arbiter运行在第三个机器上,利用“平分决胜制”决定在pair中的两台机器不能联系上对方时让哪一个做master,一般是能同arbiter通话的那台机器做master。如果不加--arbiter选项,出现网络问题时两台机器都作为master。命令db.$cmd.findOne({ismaster:1})可以检查当前哪一个database是master。

pair中的两台机器只能满足最终一致性。当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.3.3  受限的master-master复制

Mongo不支持完全的master-master复制,通常情况下不推荐使用master-master模式,但在一些特定的情况下master-master也可用。master-master也只支持最终一致性。配置master-master只需运行mongod时同时加上--master选项和--slave选项。如下:

$ nohup mongod --dbpath /data1/db --port 27017 --master --slave --source localhost:27018 > /tmp/dblog1 &

$ nohup mongod --dbpath /data2/db --port 27018 --master --slave --source localhost:27017 > /tmp/dblog2 &

      这种模式对插入、查询及根据_id进行的删除操作都是安全的。但对同一对象的并发更新无法进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值