设为首页 收藏本站
查看: 1145|回复: 0

[经验分享] MongoDB实战(10)Replica Sets 副本集(下)

[复制链接]

尚未签到

发表于 2018-10-27 10:19:27 | 显示全部楼层 |阅读模式
  一、读写分离
  1、 先向主库中插入一条测试数据
DSC0000.png

  2、 在从库进行查询等操作
DSC0001.png

  当查询时报错了,说明是个从库且不能执行查询的操作
  3、 让从库可以读,分担主库的压力
DSC0002.png

  看来我们要是执行db.getMongo().setSlaveOk(), 我们就可查询从库了。
  二、故障转移
  复制集比传统的Master-Slave 有改进的地方就是他可以进行故障的自动转移,如果我们停掉
  复制集中的一个成员,那么剩余成员会再自动选举出一个成员,做为主库。
  例如:我们将28010 这个主库停掉,然后再看一下复制集的状态
  1、杀掉28010 端口的MongoDB
DSC0003.png

  2、 查看复制集状态
DSC0004.png

DSC0005.png

  可以看到28010 这个端口的MongoDB 出现了异常,而系统自动选举了28012 这个端口为主,
  所以这样的故障处理机制,能将系统的稳定性大大提高。
  三、增减节点
  MongoDB Replica Sets 不仅提供高可用性的解决方案,它也同时提供负载均衡的解决方案,
  增减Replica Sets 节点在实际应用中非常普遍,例如当应用的读压力暴增时,3 台节点的环
  境已不能满足需求,那么就需要增加一些节点将压力平均分配一下;当应用的压力小时,可
  以减少一些节点来减少硬件资源的成本;总之这是一个长期且持续的工作。
  1、增加节点
  官方给我们提了2 个方案用于增加节点,一种是通过oplog 来增加节点,一种是通过数据库
  快照(--fastsync)和oplog 来增加节点,下面将分别介绍。
  a、通过oplog 增加节点
  ①、配置并启动新节点,启用28013这个端口给新的节点
DSC0006.png

  ②、添加此新节点到现有的Replica Sets
DSC0007.png

  ③、查看Replica Sets我们可以看到添加28013这个新节点的.
DSC0008.png

  ④、验证数据已经同步过来了
DSC0009.png

  2、通过数据库快照(--fastsync)和oplog 增加节点
  通过oplog 直接进行增加节点操作简单且无需人工干预过多,但oplog 是capped collection,
  采用循环的方式进行日志处理,所以采用oplog 的方式进行增加节点,有可能导致数据的不
  一致,因为日志中存储的信息有可能已经刷新过了。不过没关系,我们可以通过数据库快照
  (--fastsync)和oplog 结合的方式来增加节点,这种方式的操作流程是,先取某一个复制集成
  员的物理文件来做为初始化数据,然后剩余的部分用oplog 日志来追,最终达到数据一致性
  ①、取某一个复制集成员的物理文件来做为初始化数据
DSC00010.png

  ②、在取完物理文件后,在c1集中插入一条新文档,用于最后验证此更新也同步了
DSC00011.png

  ③、启用28014这个端口给新的节点
DSC00012.png

  ④、添加28014节点
rs1:PRIMARY> rs.add("127.0.0.1:28014")  ⑤、验证数据已经同步过来了
DSC00013.png

  3、减少节点
  下面将刚刚添加的两个新节点28013 和28014 从复制集中去除掉,只需执行rs.remove 指令
  就可以了,具体如下:
rs1:PRIMARY> rs.remove("127.0.0.1:28013")  
rs1:PRIMARY> rs.remove("127.0.0.1:28014")
  查看复制集状态,可以看到现在只有28010、28011、28012 这三个成员,原来的28013 和
  28014 都成功去除了。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627029-1-1.html 上篇帖子: MongoDB实战(9)Replica Sets 副本集(上) 下篇帖子: redis,memcache,mongodb对比
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表