Mongo副本集

Replication:副本集

 

副本集可以将客户端的写操作分散到不同的服务器,可以用于灾难恢复,报告和备份。

 

副本集需要一个主服务器和一个备服务器,以及一个仲裁服务器。仲裁服务器决定将哪一个服务器作为主服务器,主服务器将接收所有的写操作。

 

可以根据特殊的目的对备服务器做配置:

1.防止备服务器被选为主服务,因此可以用这台服务器提供冷备。

2.防止客户端从这台备服务器读取数据,因此可以用来提供需要单独运行的服务。

3.保存历史快照用于确定的恢复过程,例如无意删除数据。

 

仲裁服务器:

仲裁服务器不保存任何数据,也不能作为主服务器提供服务。仲裁服务不能运行在主备服务器的任何一台。

 

PS:副本集只支持最多50台服务器,如果所需要的进程超过50台服务器,则需要使用master-slave。但是master-slave没有自动失效备援的能力。

 

主服务:

主服务接收客户端写操作,然后将写操作的记录保持在自己的oplog中,从服务使用这个日志来操作自己的数据,与主服务保持一致。

   

副本集中所有的应用都可以进行读的操作,但是默认的,会在主应用中读取数据。

 

 

当主应用不可用的时候,仲裁服务会选择一个备应用作为主应用来提供服务。

 

优先级为0的从服务将不会被些选为主应用提供服务,但是优先级为0的从服务也同样可以提供正常的服务。它们可以复制数据、进行读的操作、进行选举。这样的设置在多数据中心的开发中非常有用。

 

延时的副本集成员:

延时的副本集成员会保存比副本集数据库延时的数据,可以作为快照或者回滚点,应用于恢复各种认为错误,例如,数据更新失败、删除数据等。

延时成员的要求:1.必须是优先级为0的成员。2.必须是隐藏的成员。3.在仲裁权被设置为1的时候,拥有仲裁的权利。

 

 

Replica sets副本集部署详细过程:

1.安装启动mongodb,一台主服务器(192.168.0.83),一台从服务器(192.168.0.84),一台仲裁服务器(192.168.0.85)

2.登陆mongo实例,进入admin库,执行config命令:

>use admin

>config = {_id:”repset”,members:[

{_id:0,host:”192.168.0.83:27017”},

{_id:1,host:”192.168.0.84:27017”},

{_id:2,host:”192.168.0.85:27017”}

]

}

初始化副本集:

>rs.initiate(config)

3.查看replica sets的状态:

登陆任意一台mongo服务,查看状态,以及数据是否保持一致:

>rs.status();

4.查看后台日志,查看目前状态的PRIMARY和SECONDARY:

5.验证一致性:

在PRIMARY中对数据进行操作,在SECONDARY中查看数据是否一致。

6.PRIMARY和SECONDARY自动切换的验证:

a.停掉PRIMARY上的服务

>db.ShutdownServer()

b.查看日志,从库自动切换为主库,登陆新的主库,查看状态:

c.将之前的主库(192.168.0.83恢复),查看主从是否再次切换。

 

posted @ 2017-04-28 10:32  --kasumi--  阅读(216)  评论(0编辑  收藏  举报