课程名称:2.5.3 Usage of PD control(PD Control 的典型使用场景)
学习时长:50min
课程收获:
pd control 工具的使用,以及如何通过 pd control 工具获取集群中相关信息和使用 pd control 对 pd 调度进行一些控制,通过本课程的学习,理解 pd 中关于调度策略的相关概念,并能通过 pd-ctl 工具对调度策略进行控制。
课程内容:
- PD & PD Control
Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的原信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。
PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群。
2.查看/修改 PD config
用于显示 PD 成员信息,删除指定成员,设置成员的 leader 优先级。
用于显示 store 信息或者删除指定 store。使用 jq 格式化输出请参考 jq-格式化-json-输出示例。
用于显示 Region 信息。使用 jq 格式化输出请参考 jq-格式化-json-输出示例。
region store <store_id>
用于查询某个 store 上面所有的 Region。label [store <name> <value>]
用于显示集群标签信息。
Scheduler config & modify

控制调度策略

Scheduler operator
operator [check | show | add | remove]
用于显示和控制调度操作。
>> operator show // 显示所有的 operators
>> operator show admin // 显示所有的 admin operators
>> operator show leader // 显示所有的 leader operators
>> operator show region // 显示所有的 Region operators
>> operator add add-peer 1 2 // 在 store 2 上新增 Region 1 的一个副本
>> operator add add-learner 1 2 // 在 store 2 上新增 Region 1 的一个 learner 副本
>> operator add remove-peer 1 2 // 移除 store 2 上的 Region 1 的一个副本
>> operator add transfer-leader 1 2 // 把 Region 1 的 leader 调度到 store 2
>> operator add transfer-region 1 2 3 4 // 把 Region 1 调度到 store 2,3,4
>> operator add transfer-peer 1 2 3 // 把 Region 1 在 store 2 上的副本调度到 store 3
>> operator add merge-region 1 2 // 将 Region 1 与 Region 2 合并
>> operator add split-region 1 --policy=approximate // 将 Region 1 对半拆分成两个 Region,基于粗略估计值
>> operator add split-region 1 --policy=scan // 将 Region 1 对半拆分成两个 Region,基于精确扫描值
>> operator remove 1 // 把 Region 1 的调度操作删掉
>> operator check 1 // 查看 Region 1 相关 operator 的状态
Store Limit 是 PD 在 3.0 版本引入的特性,旨在能够更加细粒度地控制调度的速度,针对不同调度场景进行调优。
Store Limit 是通过在内存中维护了一个 store ID 到令牌桶的映射,来实现 store 级别的限速。这里不同的操作对应不同的令牌桶,目前仅支持限制添加 learner/peer 和删除 peer 两种操作的速度,即对应于每个 store 存在两种类型的令牌桶。