我的mongo集群分布在3个DC中。
DC1-3个节点 DC2-3个节点 DC3-3个节点
DC1具有高优先级,其次是DC2,然后是DC3。因此,DC1将被赋予第一选举的优先权,其次是DC2,然后是DC3。
假定,DC1中的一个节点是主节点,数据与DC3同步,而DC2中则不是。现在,DC1断开。由于优先级,DC2中的节点之一应该成为主节点,但这是陈旧的。那么,哪个节点将成为主节点?它是DC2的节点之一还是DC3的节点之一?
答案 0 :(得分:2)
MongoDB在主数据库上应用数据库操作,然后在主数据库的操作日志中记录这些操作。然后,辅助成员将这些操作复制并应用到异步过程中。
副本集成员的优先级设置会影响主数据库选举的时间和结果。优先级较高的成员更有可能可能召集选举,并且更有可能获胜。他们很可能会赢,但不一定。
操作日志确定哪个节点应成为主节点。首先,如果优先级较低的辅助节点(较短时间)具有更多oplog(即已更新),则可以成为主要节点。副本集具有稳定的主要节点后,选举算法将“尽力而为”尝试获得优先级较高的辅助节点。具有最高优先级的辅助呼叫选举。即使可以使用较高优先级的次要实例,也可以在短时间内将较低优先级的实例选为主事件。副本集成员继续进行选举,直到具有最高优先级的成员成为主要成员为止。