MongoDB Replica Sets管理

MongoDB Replica Sets 不仅提供高可用性的解决方案,它也同时提供负载均衡的解决方案,增减Replica Sets 节点在实际应用中非常普遍,例如当应用的读压力暴增时,3 台节点的环境已不能满足需求,那么就需要增加一些节点将压力平均分配一下。
一、添加节点
两种方式:一是通过oplog增加节点,二是通过数据库快照和oplog来增加节点
1.通过oplog增加节点
添加副本集节点可以通过如下2种方式
1)利用rs.reconfig
PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2},{_id:1,host:'127.0.0.1:27018',priority:1}]};////添加节点
PRIMARY> rs.reconfig(config); //使配置生效
PRIMARY> rs.status(); //查看节点状态
2)利用rs.add
rs.add("127.0.0.1:27018"); //添加节点
添加完毕后通过rs.status()查看数据同步状态,直到完成,状态正常。
初始化:"stateStr" : "(not reachable/healthy)"
数据同步中:"stateStr" : "RECOVERING"
同步完成:"stateStr" : "RECOVERING","errmsg" : "initial sync done"
添加完成,状态正常:"stateStr" : "SECONDARY"
2.通过数据库快照和oplog增加节点
通过oplog 直接进行增加节点操作简单且无需人工干预过多,但oplog 是capped collection,采用循环的方式进行日志处理,所以采用oplog的方式进行增加节点,有可能导致数据的不一致,因为日志中存储的信息有可能已经刷新过了。不过没关系,我们可以通过数据库快照(--fastsync)和oplog结合的方式来增加节点,这种方式的操作流程是,先取某一个复制集成员的物理文件来做为初始化数据,然后剩余的部分用oplog 日志来追,最终达到数据一致性。
(1)取某一个复制集成员的物理文件来作为初始化数据
(2)加上--fastsync参数,启动待添加节点
(3)按照1中的步骤进行

二、删除节点
当应用的压力小时,可以减少一些节点来减少硬件资源的成本;总之这是一个长期且持续的工作。
删除副本集节点也可以通过如下2种方式
1)利用rs.reconfig
PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2}]};//删除节点
PRIMARY> rs.reconfig(config); //使配置生效
PRIMARY> rs.status(); //查看节点状态
2)利用rs.add
rs.remove("127.0.0.1:27018"); //删除节
通过rs.status()查看复制集状态。
注意:
新增节点的replSet要和其他节点要一样
利用rs.add和rs.remove是不用rs.reconfig来使用配置生效的。

你可能感兴趣的:(mongodb)