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恢复),查看主从是否再次切换。