通过label调度副本测试

lemonvita
发布于 2022-4-21 20:38
浏览
0收藏

一、 测试说明

版本:5.0.3

本文依照官方文档’通过拓扑label进行副本调度’的模拟测试,测试模拟5副本3个中心(zone)中其中一个zone完全隔离情况下的副本调度情况,测试内容如下:

 1、 验证默认配置下isolation_level为空时,zone:z3 完全隔离情况下是否会将相同副本调度到同一主机

 2、 验证isolation_level=host时,zone:z3 完全隔离情况下是否会将相同副本调度到同一主机

 3、 验证isolation_level=host、strictly-match-label=true时,zone:z3 完全隔离情况下是否会将相同副本调度到同一主机

 4、 验证isolation_level=zone、strictly-match-label=true时,zone:z3 完全隔离情况下是否会将相同副本调度到同一主机

 5、 验证zone:z1、zone:z3 完全隔离时测试系统状态和调度行为

 6、 验证默认配置下isolation_level为空时,3副本配置下是否会将相同副本调度到同一主机

 7、 max-store-down-time调整为3分钟,加快下线时间。

 五副本测试配置如下:

通过label调度副本测试-鸿蒙开发者社区

通过label调度副本测试-鸿蒙开发者社区二、测试过程

(1)isolation_level为空

 关闭z3 2个实例后,region2003的副本分布由2、7、10、12、13 调度为1、2、7、10、12

通过label调度副本测试-鸿蒙开发者社区

通过label调度副本测试-鸿蒙开发者社区(2)isolation_level=host

 关闭z3 2个实例后,region 4的副本分布由1、2、7、13、14 调度为1、2、7、12、14

通过label调度副本测试-鸿蒙开发者社区通过label调度副本测试-鸿蒙开发者社区(3)strictly-match-label=true

 关闭z3 2个实例后,region 4的副本分布由1、2、7、13、14 调度为1、2、7、12、14

通过label调度副本测试-鸿蒙开发者社区通过label调度副本测试-鸿蒙开发者社区(4)isolation_level=zone

 关闭z3 2个实例后,region 4的副本分布由2、7、12、13、14 调度为2、7、10、12、14

通过label调度副本测试-鸿蒙开发者社区上述4个测试过程region分布如下,可以看到当tidb集群认为为z3内所有节点down后会将相同region的副本调度到同一主机的不同tikv实例。

通过label调度副本测试-鸿蒙开发者社区

(4) 关闭z1、z3所有实例

 只保留z2里2个tikv实例情况下,查询数据hang住,查询TIKV_REGION_PEERS出现了异常状态信息:5个副本全显示NORMAL。

通过label调度副本测试-鸿蒙开发者社区 启动一个tikv,保持有3个tikv在线 ,能够正常查询,2个副本状态保持为PENDING

通过label调度副本测试-鸿蒙开发者社区 (5)三副本测试

 经测试与5副本一致,当关掉1台主机上的2个tikv实例后,tidb会将副本调度其他主机,出现一台主机上region的多个副本的情况。

通过label调度副本测试-鸿蒙开发者社区

通过label调度副本测试-鸿蒙开发者社区三 、总结

 1、 pd会严格保证相同的region副本不会调度到同一tikv实例。

2、 至少要保证 副本数/2+1 个tikv实例存活才能提供正常服务(自动补副本或多副本失败恢复)。

 3、 当出现region副本数>主机数量时,超过max-store-down-time后为保障副本数量满足配置要求会为region补充副本,会忽略label相同的设置,从而导致一台主机上有多个副本(一台主机有多个tikv时)。

 4、推测若要副本按照预设的label调度保证隔离,需要主机、tikv有足够的数量,否则就会出现1台主机多个副本情况。

分类
标签
收藏
回复
举报
回复
    相关推荐