CAI001
(Ti D Ber Mhmp8yq Z)
1
【TiDB 使用环境】测试环境
【TiDB 版本】8.5.4
测试环境有3台tikv节点,很多数据库都在一起,会互相影响。我想增加3台tikv节点将部分库和后续的数据全都写道新的3台tikv节点要怎么做?旧的tikv节点label配置如下,3台pd没有配置label
{ zone: "zone1", host: "host13-1" }
{ zone: "zone1", host: "host14-1" }
{ zone: "zone1", host: "host15-1" }
是否可以直接将新的3台节点label设置为如下?设置好placement Rules后已有数据是否会自动迁移?
{ zone: "zone2", host: "host16-1" }
{ zone: "zone2", host: "host17-1" }
{ zone: "zone2", host: "host18-1" }
克里克里克
(Ti D Ber H052ej9m)
2
对于新库和新表可以根据新的label设置Placement policy,确保不会往旧机器写。
但是对于原表的新数据应该是没有办法控制的把?
菩提老祖
(菩提老祖)
5
原来的kv节点的数据会跑到新的kv节点吗?我认为会,
没有配置过pr 。可以详细描述下细节, 大家学习。
菩提老祖
(菩提老祖)
6
PD 本身不需要 label,它只需要配置 location-labels 来识别 TiKV 的 label。
-
TiKV 启动时带上标签
→ --labels zone=zone2,host=host16-1
-
TiKV 向 PD 注册时上报这些标签
-
PD 读取自己的配置 location-labels = “zone,host”
→ 知道 zone 和 host 是"位置标签"
-
PD 调度 Region 副本时:
→ 检查副本分布是否满足"不同 zone、不同 host"
→ 结合 Placement Policy 的 CONSTRAINTS=“[+zone=zone2]”
→ 把副本调度到符合条件的节点
这个逻辑是正确的吗?
个人练习生
(Ti D Ber O Lb6d0s K)
8
新节点zone=zone2的标签配置完全可行,PD 无 location-labels 不影响规则生效;
绑定 Placement Policy 后,存量 Region 会由 PD 自动在线迁移到新 TiKV 节点,无需人工搬迁;
绑定之后新写入数据直接落在 zone2,实现新旧节点业务物理隔离。
个人练习生
(Ti D Ber O Lb6d0s K)
10
新节点打上zone=zone2完全没问题,PD 无 location-labels 不阻断规则生效;
*库绑定 Placement Policy 后,存量 Region 会由 PD 自动在线迁移到 zone2 新节点,不需要手动搬迁数据;
绑定完成后,新业务写入直接落到新 TiKV,完美实现多库物理隔离,彻底解决不同业务互相争抢资源;
仅需提前补全 PD 故障域配置,调高临时调度并发,避免迁移卡住。
1 个赞
lllzd
(时光旅行者)
11
因为新节点label配好并设置placement rules后,pd就会自动把已有数据按规则迁移过去,实现新旧节点的数据物理隔离。
kang
12
Placement Rules迁移数据到新TiKV节点:先给节点打label,在rule里设置新label约束,PD会自动调度。或者用tiup cluster scale-in/out。
可以新 TiKV 用 zone2/host16-1 等 label 与旧节点区分,在 PD 配 placement rule 把目标库/schema 的 leader/replica 约束到新 label。已有数据不会立刻自动全迁,需靠 scheduler 按 rule 逐步调度 Region;新写入会逐步落到新节点。大规模迁移可配合 label 规则 + 等待 balance,或对热点库做 export/import。注意 rule 冲突和副本数,先在测试环境验证调度进度(pd-ctl config placement-rules show)。
可以直接将新节点的 Label 设置为 { zone: "zone2", host: "host16-1" } 这种格式