在 TiDB 集群中,发现某些 TiKV 节点的磁盘使用率明显高于其他节点。如何使用 PD 调度策略将数据均衡到其他节点?
tiup ctl pd -u http://:2379 config set balance-space-factor 16
执行这个试试, PD 优先把 Region 从满的节点往空的节点搬
考虑标签机制完成指定节点的region倾斜配置比较好啊
其实不用手动调度,默认情况下pd会根据元数据信息自动调度。考虑使用率时还要考虑各节点服务器的存储配置是否一致
如果分布不均衡的话要怎么手动调度呢
先看 PD 的 store 状态:
pd-ctl -u http://pd:2379 store
重点看:
capacity
available
region_count
leader_count
如果某个 TiKV:
region_count 很高
available 很低
PD 才会触发 balance-region-scheduler。
确认 PD 调度器是否开启
查看当前调度器:
pd-ctl -u http://pd:2379 scheduler show
正常应该有:
balance-region-scheduler
balance-leader-scheduler
balance-hot-region-scheduler
如果缺少,可以添加:
pd-ctl scheduler add balance-region-scheduler
说明:
| scheduler | 作用 |
|---|---|
| balance-region-scheduler | 均衡数据 |
| balance-leader-scheduler | 均衡 leader |
| balance-hot-region-scheduler | 均衡热点 |
有没有手动调节权重的方法呢
用标签实现负载倾斜吧
好的,标签可以设置权重吧
https://docs.pingcap.com/zh/tidb/stable/pd-control/#设置-store-weight
可以将 region 权重调大。
不过默认 region 调度是考虑磁盘的空间和使用率的。
你先提供下 lables 信息:
tiup cluster display cluster-name --labels
好的,推荐还是用label来调度是吗
确实,有些公司没办法保证tikv每个节点机器性能一致的情况下,有手动干预的策略还是会好一点。现实中的环境总是没有那么理想化的。
tidb 默认就是按照 label 自动调度的。
你先提供下上面命令信息,是不是安装配置有问题。
最好能保证
好的,我现在没有具体场景,只是想确认一下理论知识
理论上肯定是可以的,支持设置权重,设置支持将某个节点上的主副本全部迁走。
默认情况下是使用label进行调度的吗,label的话就是tidb自动根据负载和数据量等指标来调度的?
在 TiDB 集群中,若发现某些 TiKV 节点磁盘使用率明显高于其他节点,可通过 PD(Placement Driver)的调度策略主动触发数据均衡,将热点或高负载 Region 迁移至资源充裕的节点。
关于调度可以看一下这里