写点什么

通过 label 调度副本测试

  • 2022 年 7 月 11 日
  • 本文字数:1181 字

    阅读完需:约 4 分钟

作者: h5n1 原文来源:https://tidb.net/blog/8898cbc5


【是否原创】是


【首发渠道】TiDB 社区


【首发渠道链接】其他平台首发请附上对应链接


【正文】


-— 如有错误,还请指正


一、 测试说明


版本: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 分钟,加快下线时间。


五副本测试配置如下:




二、测试过程


(1)isolation_level 为空


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




(2)isolation_level=host


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




(3)strictly-match-label=true


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




(4)isolation_level=zone


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



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



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


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



启动一个 tikv,保持有 3 个 tikv 在线 ,能够正常查询,2 个副本状态保持为 PENDING



(5)三副本测试


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




三 总结


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


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


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


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


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
通过label调度副本测试_TiDB 社区干货传送门_InfoQ写作社区