config = rs.config()config.members[0].priority=1.5rs.reconfig(config)
文章插图
我们可以看到前面是27018,现在变成了27017了 。
根据上面结论得出:优先级最高的节点,才是合法继承人 。
如果你想在从节点上读取数据,但是有一个从节点只是用来做备份的 , 机器性能很差的话,你不希望客户端去访问这台机器怎么办?
你可以设置该节点隐藏 。
config.members[0].hidden=true
这样去设置 。其原理也很简单,就是客户端获取副本集信息的时候是调用db.isMaster() 来查看 。
如果设置了 , 那么isMaster() 是不包含该隐藏的信息的 。
所以客户端就不会去访问这个副本集了 。
然后如果副本集只是作为备份的话,那么其实是不需要索引的 , 那么可以设置:
{"buildIndexs":false},这样从节点就不会创建索引了,同样它的优先级也应该设置为0,这样就不会选为主节点了 。
破烂之道这个破烂之道,并不是指垃圾的意思 。
而是节约成本的方式,个人称为破烂之道 。
从上面我们知道副本集肯定是3个和以上 。
但是有些数据库很大 , 比如16T左右的话,如果购买的是云服务器,成本也是不低的 。
这个时候公司认为要节约成本,那么其他这个时候只需要一个作为副本集作为备份就好 。
这个时候就可以加入仲裁者这种方式 。
mongodb 支持一种特殊类型的副本成员,叫做仲裁者 。
作用就是参与选举,但是不会选择自己作为主节点 。
仲裁者并不保存数据,也不会为客户端提供服务;它只是为了帮助具有两个成员的副本集满足大多数的条件 。
设置仲裁者的方式:
rs.addArb("localhost:27021")
或者:rs.add({"_id":4,"host":"localhost:27021","arbiterOnly":true})
仲裁者一般只有一个,因为仲裁者是为了绝大多数 , 来打破平衡的,防止偶数的情况,这是唯一的作用 。仲裁者缺点 , 那就是如果一个数据从节点完全挂了,无法恢复,要启动一个新的数据节点去替换掉旧的 。
那么这个时候主节点负荷会很重,因为不仅要将数据复制为从节点,还需要处理应用程序的读写负荷 。
结下一节副本集的原理 。
推荐阅读
- CentOS 8.2 对k8s基础环境配置
- python基础--简单数据类型预览
- python基础-较复杂数据类型预览
- 分布式存储系统之Ceph集群RadosGW基础使用
- python的基本运用
- 零基础怎样玩好露娜(玩好露娜的核心诀窍)
- 一 网络安全主动进攻之DNS基础和ettercap实现DNS流量劫持
- SQL基础语句入门
- 分布式存储系统之Ceph集群RBD基础使用
- spring boot集成redis基础入门