MySQL MHA候选主库选择
MHA在选择新主库时,会将所有存活的从库分为下面几类:
存活从库数组:挑选所有存活的从库 最新从库数组: 挑选Master_Log_File+Read_Master_Log_Pos最高的从库 优选从库数组:挑选参数candidate_master=1的存活从库 非备选从库数组:挑选满足下面条件: 1、参数no_master=1的从库 2、未开启binlog的从库 3、复制延迟超过一个文件位置(Master_Log_File>Relay_Master_Log_File)或100000000个位点(Read_Master_Log_Pos>Exec_Master_Log_Pos+100000000)的从库
选择新主库顺序
1:当“非备选从库数组”和“优选从库数组”中数量为0时,选择“最新从库数组”中第一个从库 2:选择第一个存在于”优选从库数组“和”最新从库数组“但不存在于“非备选从库数组”的从库 3:选择第一个存在于“优选从库数组”但不存在于“非备选从库数组” 4:选择第一个存在于“最新从库数组”但不存在于“非备选从库数组” 5:选择第一个存在于“存活从库数组”但不存在于“非备选从库数组”
简单而言,选择新主库:
1、所有“非备选从库”都不会被选择成为新主库。
2、当存在”优选从库“时,选择”优选从库“中获得“主库BINLOG最多”从库为新主库。
3、当不存在”优选从库“时,选择“主库BINLOG最多”的从库成为新主库。
参考链接: