一.副本集相关知识介绍
1.复制集特点
- 主节点唯一
主节点唯一,但是不固定.(不确定因素的原因是,主节点挂了的话,会重新选举出一个新的主节点)
- 大多数原则
大多数原则,即1/2原则,一个复制集集群中,如果有大于等于1/2的节点不可用的话,那么整个进群将不可写,只可读(注:实际上应该是 投票权重的1/2
- 从库无法写入
从库无法写入,root权限也不行.这一点与mysql不同,mysql从库无法写入的原因是设置了readOnly
- 复制集可以自动进行容灾
主节点服务不可用,会自动选举出新的主节点
2.复制集节点介绍
- 数据节点—主节点
主节点,负责数据的读写操作,并把写的信息记录到OpLog中(mongo隐藏的库local 的oplog集合)
- 数据节点—从节点
复制主节点的数据,备份容灾用,主节点挂掉,会重新成为新的主节点,从节点无法进行写操作 即使,拥有root权限也不行(不同于mysql)
- 投票节点
不负责数据的存储和复制,只负责投票
注:理论上一个mongo复制集,可以有一个主节点,多个从节点,多个投票节点
3.复制集工作方式
- 客户端驱动指向mongo数据库,写的时候只会在主节点上进行,写的信息会记录在oplog中,从节点根据oplog把写入操作复制到从节点上.
- 复制集异步操作,刷盘下效率或者网络问题影响下,从节点会有一定的延迟,所以读操作默认也是指向主节点,如果对实时性要求不高,可以配置指向从节点,实现读写分离