config set label-property reject-leader host xxx能执行,但是无法生效

【 TiDB 使用环境】测试/ Poc
【 TiDB 版本】7.5.1
config set label-property reject-leader这个命令是不是在7.5版本已经不支持,执行成功后,但是经过测试无法生效。

TiDB 5.2 及以上版本默认不支持 label-property 配置。若要设置副本策略,请使用 Placement Rules

https://docs.pingcap.com/zh/tidb/stable/multi-data-centers-in-one-city-deployment

感谢回复。 Placement Rules和 Placement Rules in SQL这两个现在更推荐用哪个,或者说哪个现在更成熟些呢

哪个更成熟这个就不知道了,但官方文档上写的是
推荐使用 Placement Rules in SQL,让你更方便地设置表和分区的放置。
但是Placement Rules in SQL 底层的实现依赖 PD 提供的放置规则 (placement rules) 功能
所以,按照这个逻辑,是现有的 Placement Rules,后有的 Placement Rules in SQL

1 个赞

都一样,Placement Rules in SQL底层用的也是Placement Rules啊,Placement Rules in SQL只是操作更简单,也方便理解

1 个赞

学习了, label-property 不推荐了

在请教一下,我创建了两个策略,show placement查看如下


两个策略的状态不一样,一个是scheduler,另外一个是pending。 这个pending状态是正常的吗

PENDING : PD 没有进行调度。可能的原因之一是放置规则虽然语法上正确,但集群拓扑并不满足。
SCHEDULED : PD 调度完成
INPROGRESS : PD 正在进行调度

1 个赞

ok,我在看看,谢谢啊

在请教一下,我现在创建了这个策略CREATE PLACEMENT POLICY testp2 LEADER_CONSTRAINTS=“[+region=cn-beijing-a]” FOLLOWER_CONSTRAINTS=‘{“+region=cn-beijing-a”: 1, “+region=cn-beijing-b”: 2, "+region=cn-beijing4-1: 1}’;, 这个策略leader节点只能放在cn-beijing-a,如果想实现leader节点可以放
cn-beijing-a或者cn-beijing-b,这样可以实现吗

推荐使用 Placement Rules in SQL

1 个赞

LEADER_CONSTRAINTS在同层级的label只能设置1个,否则会产生冲突,所以不能将leader根据数据中心级标签放到2个数据中心。

不过你可以通过一个间接的方式实现, 你的问题可以转换为在 cn-beijing-a 区域故障发生时,如果希望新的 Leader 只希望放在cn-beijing-b,而不要放置在其他区域 cn-beijing4-1 ,这个时候你可以配置特殊的 evict-leader 属性,驱逐上面新cn-beijing4-1的 Leader,使得Leader只能放置到cn-beijing-b。

所以结论是,你可以参考并试试这个方案:
CREATE PLACEMENT POLICY testp2 LEADER_CONSTRAINTS=“[+region=cn-beijing-a]” FOLLOWER_CONSTRAINTS=‘{“+region=cn-beijing-a”: 1, “+region=cn-beijing-b”: 2, “+region=cn-beijing4-1,#evict-leader”: 1}’;

楼上已经给出解决方案了
使用 evict-leader-{store-id} :驱逐某个节点的所有 Leader。

1 个赞

学习到了,感谢分享