MongoDB4.2 副本集扫盲说明

  在扫盲MongoDB相关的一些知识的时候,顺手做下笔记。本文将说明副本集相关的内容。在比较早之前已经对这些有过说明,可以看MongoDB 副本集的原理、搭建、应用。MongoDB中的副本集是一组维护相同数据集的mongod进程,副本集提供冗余和高可用性,可提供一定程度的容错能力,以防止丢失单个数据库服务器,是生产部署的基础。

  在某些情况下,复制可以提供更大的读取容量,因为客户端可以将读取操作发送到不同的服务器。 在不同数据中心中维护数据副本可以提高数据本地性和分布式应用程序的可用性,还可以维护其他副本以用于专用目的,例如灾难恢复,报告或备份。

  一个副本集最多有50个成员,并且最多7个成员有投票权。如果副本集已具有7个投票成员,则其他成员必须是非投票成员,确保副本集的投票成员数为奇数。

  副本集的所有成员都可以接受读取操作。 但默认情况下,应用程序将其读取操作定向到主要成员。 有关更改默认读取行为(读取首选项)请见:Read Preference。如果当前的主要节点不可用,则副本集会进行选择以选择哪个辅助节点成为新的主要节点。

  副本集成员每2秒钟彼此发送一次心跳(ping)。 如果心跳未在10秒()内响应,则其他成员将无法访问的成员标记为无法访问,如果是主节点,则会开始选举。集群选择新的主数据库之前的中值时间通常不应超过12秒。这包括将主要节点标记为不可用并完成选举所需的时间。优先级属性高的从更有可能成为主节点,优先级为0的,则不会参与选举。

  非投票成员的优先级必须为0,优先级大于0的成员必须有投票权。以下状态的成员才有资格具有投票权:

  即具有投票的节点,状态需要在上面列表中。如一个非投票成员的属性如:

{ "_id" : <num>, "host" : <hostname:port>, "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 0, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 0 } 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxdxy.html