背景
1)主要为了解决SpringBoot集成MongoDB的事务问题
2)实际使用还是要搭配分片以及副本集使用,不要仅使用副本集。
副本集的特点
1)主节点唯一
主节点唯一,但是不固定(不确定的原因是:主节点挂了的话,会重新选举出一个主节点)。
2)大多数原则
大多数原则,即1/2原则,一个复制集集群中,如果有大于等于1/2的节点不可用的话,那么整个进群将不可写,只可读(注:实际上应该是投票权重的1/2。
3)从库无法写入
从库无法写入,使用root权限也不行,这一点与MySQL不同,MySQL从库不能写入,原因是设置了readOnly。
4)副本集可以自动进行容灾
主节点服务不可用,会自动选举出新的主节点。
副本集节点介绍
1)数据节点-------主节点
主节点负责数据的读写操作,并把写的操作记录到OpLog中(mongo隐藏的库local的oplog集合)
2)数据节点-------从节点
复制主节点的数据,备份容灾用,主节点挂掉,会重新选举出新的主节点,从节点无法进行写操作,即使拥有root权限也不行(不同于MySQL)
3)投票节点
不负责数据的存储和复制,只负责投票。(注:理论上一个mongo复制集,可以有一个主节点,多个从节点,多个投票节点&#