Goldendb -- 高低水位

在一个DBGroup中,把主备DB划分成不同的Team,主备DB之间满足以下两个条件:

  1. Team内DB响应的个数达到配置阈值时,则认为该Team的同步关系正常。
  2. 同步关系正常的Team的个数需要达到配置的阈值,这个阈值就是高低水位线。
    在一定时间内,如果不满足上述两个条件,则认为快同步超时。
    在分布式数据库系统系统中,需要用户配置的相关配置项有:高水位、低水位、主是否计数、Team内回响应的DB数。
    举个例子,一个DBGroup一主三备,主机和备机1在team1,备机2和备机3在team2,配置的高水位为2,低水位为1,主机计数,Team内回响应的DB数为2。对team1来说,由于配置了主机计数,那么该Team内已经默认有1个DB回响应了就是主机DB,如果备机1能正常同步主机数据,那么这个备机也是1个正常回响应的DB,该Team就满足配置项Team内回响应的DB数为2这个条件,team1有效。再看备机2和备机3,如果两台备机都能同步到主机数据,那么team2就有2个能正常回响应的DB,team2有效,如果只有一台备机或者两台备机都跟无法与主机同步,那么team2就无效。当有效的team个数为2时,该DBGroup满足高水位运行条件,DBGroup运行在高水位之上。当有效team个数为1时,该DBGroup满足低水位运行条件,DBGroup运行在高低水位之间,系统有告警。当有效team个数小于1时,该DBGroup不满足低水位运行条件,DBGroup运行在低水位之下,系统有告警,DBGroup“只读”,写业务都不能成功。
    配置好的高低水位可以在MySQL客户端查看,如下:
    show variables like '%rpl%wait%cond%';
    image

show variables like '%rpl%group%';
image

高低水位配置项详解:
rpl_semi_sync_master_wait_cond_hwm = wait_team_num : stat_master_flag 该配置项表示快同步高水位等待条件,wait_team_num 表示高水位需要等待的team个数,取值范围[0,10],stat_master_flag 表示主机是否技术,1表示主机计数,0表示主机不计数。
rpl_semi_sync_master_wait_cond_lwm = wait_team_num : stat_master_flag 该配置项表示快同步低水位等待条件,wait_team_num 表示低水位需要等待的team个数,取值范围[0,10],stat_master_flag 表示主机是否技术,1表示主机计数,0表示主机不计数。
rpl_semi_sync_master_group1 = ID1,ID2,wait_ack_num 该配置项表示快同步第一个team的相关配置,ID1,ID2表示表示team中db对应的serverid,serverid的查看方式可以在my.cnf里
查看server-id段的配置项或者登录mysql执行show global variables like 'server_id';来获取。wait_ack_num表示该team需要等待响应的备机个数,取值范围为[1,256]
rpl_semi_sync_master_groupN配置项同理,参考group1。
高低水位状态对业务影响:
高于或等于高水位的情况下,业务正常不影响;
低于高水位大于等于低水位的情况下,业务正常不影响,页面会有告警;
低于低水位,对应的分片只读;

dn分片的高低水位状态信息;
select * from mds.group_info
image

rdb的高低水位状态信息
show status like 'rpl_semi_sync_master_err_flag';
image

gtm的高低水位状态信息
select * from mds.gtm_group_info\G
image

posted @ 2026-03-19 09:44  静水深耕,云停风驻  阅读(1)  评论(0)    收藏  举报