问题:怎么让一个原来的slave 节点成为主节点?
1、选出Sentinel Leader 之后,由Sentinel Leader 向某个节点发送slaveof no one命令,让它成为独立节点。
2、然后向其他节点发送slaveof x.x.x.x xxxx(本机服务),让它们成为这个节点的子节点,故障转移完成。
问题:这么多从节点,选谁成为主节点?
关于从节点选举,一共有四个因素影响选举的结果,分别是断开连接时长、优先级排序、复制数量、进程id。
如果与哨兵连接断开的比较久,超过了某个阈值,就直接失去了选举权。如果拥有选举权,那就看谁的优先级高,这个在配置文件里可以设置(replica-priority 100),数值越小优先级越高。
如果优先级相同,就看谁从master 中复制的数据最多(复制偏移量最大),选最多的那个,如果复制数量也相同,就选择进程id 最小的那个。