• PD Control 使用说明
    • 源码编译
    • 简单例子
    • 命令行参数(flags)
      • --pd,-u
      • --detach,-d
      • —cacert
      • —cert
      • —key
      • —version,-V
    • 命令(command)
      • cluster
      • config [show | set \ \]
      • config delete namespace \ [\]
      • health
      • hot [read | write | store]
      • label [store]
      • member [leader | delete]
      • operator [show | add | remove]
      • ping
      • region \
      • region key [—format=raw|pb|proto|protobuf] \
      • scheduler [show | add | remove]
      • store [delete | label | weight] \
      • table_ns [create | add | remove | set_store | rm_store | set_meta | rm_meta]
      • tso

    PD Control 使用说明

    PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群。

    源码编译

    1. Go Version 1.7 以上
    2. 在 PD 项目根目录使用 make 命令进行编译,生成 bin/pd-ctl

    简单例子

    单命令模式:

    1. ./pd-ctl store -d -u http://127.0.0.1:2379

    交互模式:

    1. ./pd-ctl -u http://127.0.0.1:2379

    使用环境变量:

    1. export PD_ADDR=http://127.0.0.1:2379
    2. ./pd-ctl

    使用TLS加密:

    1. ./pd-ctl -u https://127.0.0.1:2379 --cacert="path/to/ca" --cert="path/to/cert" --key="path/to/key"

    命令行参数(flags)

    --pd,-u

    • 指定 PD 的地址
    • 默认地址: http://127.0.0.1:2379
    • 环境变量: PD_ADDR

    --detach,-d

    • 使用单命令行模式(不进入 readline )
    • 默认值: false

    —cacert

    • 指定 PEM 格式的受信任 CA 的证书文件路径
    • 默认值: “”

    —cert

    • 指定 PEM 格式的 SSL 证书文件路径
    • 默认值: “”

    —key

    • 指定 PEM 格式的 SSL 证书密钥文件路径,即 --cert 所指定的证书的私钥
    • 默认值: “”

    —version,-V

    • 打印版本信息并退出
    • 默认值: false

    命令(command)

    cluster

    用于显示集群基本信息。

    示例:

    1. >> cluster // 显示 cluster 的信息
    2. {
    3. "id": 6493707687106161130,
    4. "max_peer_count": 3
    5. }

    config [show | set \ \]

    用于显示或调整配置信息。

    示例:

    1. >> config show // 显示 scheduler 的相关 config 信息
    2. {
    3. "max-snapshot-count": 3,
    4. "max-pending-peer-count": 16,
    5. "max-store-down-time": "1h0m0s",
    6. "leader-schedule-limit": 64,
    7. "region-schedule-limit": 16,
    8. "replica-schedule-limit": 24,
    9. "tolerant-size-ratio": 2.5,
    10. "schedulers-v2": [
    11. {
    12. "type": "balance-region",
    13. "args": null
    14. },
    15. {
    16. "type": "balance-leader",
    17. "args": null
    18. },
    19. {
    20. "type": "hot-region",
    21. "args": null
    22. }
    23. ]
    24. }
    25. >> config show all // 显示所有的 config 信息
    26. >> config show namespace ts1 // 显示名为 ts1 namespace 的相关 config 信息
    27. {
    28. "leader-schedule-limit": 64,
    29. "region-schedule-limit": 16,
    30. "replica-schedule-limit": 24,
    31. "max-replicas": 3,
    32. }
    33. >> config show replication // 显示 replication 的相关 config 信息
    34. {
    35. "max-replicas": 3,
    36. "location-labels": ""
    37. }

    通过调整 leader-schedule-limit 可以控制同时进行 leader 调度的任务个数。
    这个值主要影响 leader balance 的速度,值越大调度得越快,设置为 0 则关闭调度。
    Leader 调度的开销较小,需要的时候可以适当调大。

    1. >> config set leader-schedule-limit 4 // 最多同时进行 4 leader 调度

    通过调整 region-schedule-limit 可以控制同时进行 region 调度的任务个数。
    这个值主要影响 region balance 的速度,值越大调度得越快,设置为 0 则关闭调度。
    Region 调度的开销较大,所以这个值不宜调得太大。

    1. >> config set region-schedule-limit 2 // 最多同时进行 2 region 调度

    通过调整 replica-schedule-limit 可以控制同时进行 replica 调度的任务个数。
    这个值主要影响节点挂掉或者下线的时候进行调度的速度,值越大调度得越快,设置为 0 则关闭调度。
    Replica 调度的开销较大,所以这个值不宜调得太大。

    1. >> config set replica-schedule-limit 4 // 最多同时进行 4 replica 调度

    以上对配置的修改是全局性的,还可以通过对不同 namespace 的配置,进行细化调整。当 namespace 未设置相应配置时,使用全局配置。注:namespace 的配置只支持对 leader-schedule-limit,region-schedule-limit,replica-schedule-limit,max-replicas 的调整,否则不生效。

    1. >> config set namespace ts1 leader-schedule-limit 4 // 设置名为 ts1 namespace 最多同时进行 4 leader 调度
    2. >> config set namespace ts2 region-schedule-limit 2 // 设置名为 ts2 namespace 最多同时进行 2 region 调度

    config delete namespace \ [\]

    用于删除 namespace 的配置信息。

    示例:

    在对 namespace 相关配置进行设置后,若想让该 namespace 继续使用全局配置,可删除该 namespace 的配置信息,之后便使用全局配置。

    1. >> config delete namespace ts1 // 删除名为 ts1 namespace 的相关配置

    若只想让 namespace 中的某项配置使用全局配置而不影响其他配置,则可使用如下命令:

    1. >> config delete namespace region-schedule-limit ts2 // 删除名为 ts2 namespace region-schedule-limit 配置

    health

    用于显示集群健康信息。

    示例:

    1. >> health // 显示健康信息
    2. {"health": "true"}

    hot [read | write | store]

    用于显示集群热点信息。

    示例:

    1. >> hot read // 显示读热点信息
    2. >> hot write // 显示写热点信息
    3. >> hot store // 显示所有 store 的读写信息

    label [store]

    用于显示集群标签信息

    示例:

    1. >> label // 显示所有 label
    2. >> label store zone cn // 显示所有包含 label "zone":"cn" store

    member [leader | delete]

    用于显示 PD 成员信息或删除指定成员。

    示例:

    1. >> member // 显示所有成员的信息
    2. {
    3. "members": [......]
    4. }
    5. >> member leader show // 显示 leader 的信息
    6. {
    7. "name": "pd",
    8. "addr": "http://192.168.199.229:2379",
    9. "id": 9724873857558226554
    10. }
    11. >> member delete name pd2 // 下线 "pd2"
    12. Success!
    13. >> member delete id 1319539429105371180 // 使用 id 下线节点
    14. Success!

    operator [show | add | remove]

    用于显示和控制调度操作。

    示例:

    1. >> operator show // 显示所有的 operators
    2. >> operator show admin // 显示所有的 admin operators
    3. >> operator show leader // 显示所有的 leader operators
    4. >> operator show region // 显示所有的 region operators
    5. >> operator add add-peer 1 2 // store 2 上新增 region 1 的一个副本
    6. >> operator remove remove-peer 1 2 // 移除 store 2 上的 region 1 的一个副本
    7. >> operator add transfer-leader 1 2 // region 1 leader 调度到 store 2
    8. >> operator add transfer-region 1 2 3 4 // region 1 调度到 store 2,3,4
    9. >> operator add transfer-peer 1 2 3 // region 1 store 2 上的副本调度到 store 3
    10. >> operator remove 1 // region 1 的调度操作删掉

    ping

    用于显示ping PD 所需要花费的时间

    示例:

    1. >> ping
    2. time: 43.12698ms

    region \

    用于显示 region 信息。

    示例:

    1. >> region // 显示所有 region 信息
    2. {
    3. "count": 1,
    4. "regions": [......]
    5. }
    6. >> region 2 // 显示 region id 2 的信息
    7. {
    8. "region": {
    9. "id": 2,
    10. ......
    11. }
    12. "leader": {
    13. ......
    14. }
    15. }

    region key [—format=raw|pb|proto|protobuf] \

    用于查询某个 key 在哪个 region 上,支持 raw 和 protobuf 格式。

    Raw 格式(默认)示例:

    1. >> region key abc
    2. {
    3. "region": {
    4. "id": 2,
    5. ......
    6. }
    7. }

    Protobuf 格式示例:

    1. >> region key --format=pb t\200\000\000\000\000\000\000\377\035_r\200\000\000\000\000\377\017U\320\000\000\000\000\000\372
    2. {
    3. "region": {
    4. "id": 2,
    5. ......
    6. }
    7. }

    scheduler [show | add | remove]

    用于显示和控制调度策略。

    示例:

    1. >> scheduler show // 显示所有的 schedulers
    2. >> scheduler add grant-leader-scheduler 1 // store 1 上的所有 region leader 调度到 store 1
    3. >> scheduler add evict-leader-scheduler 1 // store 1 上的所有 region leader store 1 调度出去
    4. >> scheduler add shuffle-leader-scheduler // 随机交换不同 store 上的 leader
    5. >> scheduler add shuffle-region-scheduler // 随机调度不同 store 上的 region
    6. >> scheduler remove grant-leader-scheduler-1 // 把对应的 scheduler 删掉

    store [delete | label | weight] \

    用于显示 store 信息或者删除指定 store。

    示例:

    1. >> store // 显示所有 store 信息
    2. {
    3. "count": 3,
    4. "stores": [...]
    5. }
    6. >> store 1 // 获取 store id 1 store
    7. ......
    8. >> store delete 1 // 下线 store id 1 store
    9. ......
    10. >> store label 1 zone cn // 设置 store id 1 store 的键为 "zone" label 的值为 "cn"
    11. >> store weight 1 5 10 // 设置 store id 1 store leader weight 5region weight 10

    table_ns [create | add | remove | set_store | rm_store | set_meta | rm_meta]

    用于显示 table 的 namespace 的相关信息

    示例:

    1. >> table_ns add ts1 1 // table id 1 table 添加到名为 ts1 namespace
    2. >> table_ns create ts1 // 添加名为 ts1 namespace
    3. >> table_ns remove ts1 1 // table id 1 table 从名为 ts1 namespace 中移除
    4. >> table_ns rm_meta ts1 // meta 信息从名为 ts1 namespace 中移除
    5. >> table_ns rm_store 1 ts1 // store id 1 table 从名为 ts1 namespace 中移除
    6. >> table_ns set_meta ts1 // meta 信息添加到名为 ts1 namespace
    7. >> table_ns set_store 1 ts1 // store id 1 table 添加到名为 ts1 namespace

    tso

    用于解析 TSO 到物理时间和逻辑时间

    示例:

    1. >> tso 395181938313123110 // 解析 TSO
    2. system: 2017-10-09 05:50:59 +0800 CST
    3. logic: 120102