Skip to content

Commit

Permalink
op-guide, tools: update pd related documents (#781)
Browse files Browse the repository at this point in the history
* update pd related documents

* minor change

* Update pd-control.md

* remove full-width spaces
  • Loading branch information
disksing authored Jul 2, 2018
1 parent e1fb56a commit e38c6eb
Show file tree
Hide file tree
Showing 2 changed files with 140 additions and 23 deletions.
29 changes: 25 additions & 4 deletions op-guide/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,12 @@ category: deployment
+ 默认: "http://127.0.0.1:2379"
+ 如果部署一个集群,\-\-client-urls 必须指定当前主机的 IP 地址,例如 "http://192.168.100.113:2379",如果是运行在 docker 则需要指定为 "http://0.0.0.0:2379"

### `--peer-urls`

+ 处理其他 PD 节点请求监听 URL 列表。
+ default: "http://127.0.0.1:2380"
+ 如果部署一个集群,\-\-peer-urls 必须指定当前主机的 IP 地址,例如 "http://192.168.100.113:2380",如果是运行在 docker 则需要指定为 "http://0.0.0.0:2380"

### `--config`

+ 配置文件
Expand Down Expand Up @@ -197,11 +203,26 @@ category: deployment
+ 默认: "pd"
+ 如果你需要启动多个 PD,一定要给 PD 使用不同的名字

### `--peer-urls`
### `--cacert`

+ 处理其他 PD 节点请求监听 URL 列表。
+ default: "http://127.0.0.1:2380"
+ 如果部署一个集群,\-\-peer-urls 必须指定当前主机的 IP 地址,例如 "http://192.168.100.113:2380",如果是运行在 docker 则需要指定为 "http://0.0.0.0:2380"
+ CA 文件路径,用于开启 TLS。
+ 默认: ""

### `--cert`

+ 包含 X509 证书的 PEM 文件路径,用户开启 TLS。
+ 默认: ""

### `--key`

+ 包含 X509 key 的 PEM 文件路径,用于开启 TLS。
+ 默认: ""

### `--namespace-classifier`

+ 指定 PD 使用的 namespace 分类器。
+ 默认: "table"
+ 如果 TiKV 不与 TiDB 集群配合运行,建议配置为 'default'。

## TiKV

Expand Down
134 changes: 115 additions & 19 deletions tools/pd-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整

## 源码编译

1. [Go](https://golang.org/) Version 1.7 以上
1. [Go](https://golang.org/) Version 1.9 以上
2. 在 PD 项目根目录使用 `make` 命令进行编译,生成 bin/pd-ctl

## 简单例子
Expand Down Expand Up @@ -45,7 +45,7 @@ export PD_ADDR=http://127.0.0.1:2379

### \-\-detach,-d

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

### --cacert
Expand Down Expand Up @@ -91,15 +91,23 @@ export PD_ADDR=http://127.0.0.1:2379
示例:

```bash
>> config show // 显示 scheduler 的相关 config 信息
>> config show // 显示 scheduler 的相关 config 信息
{
"max-snapshot-count": 3,
"max-pending-peer-count": 16,
"max-merge-region-size": 50,
"max-merge-region-rows": 200000,
"split-merge-interval": "1h",
"patrol-region-interval": "100ms",
"max-store-down-time": "1h0m0s",
"leader-schedule-limit": 64,
"region-schedule-limit": 16,
"replica-schedule-limit": 24,
"tolerant-size-ratio": 2.5,
"leader-schedule-limit": 4,
"region-schedule-limit": 4,
"replica-schedule-limit":8,
"merge-schedule-limit": 8,
"tolerant-size-ratio": 5,
"low-space-ratio": 0.8,
"high-space-ratio": 0.6,
"disable-raft-learner": "false",
"schedulers-v2": [
{
"type": "balance-region",
Expand All @@ -118,9 +126,9 @@ export PD_ADDR=http://127.0.0.1:2379
>> config show all // 显示所有的 config 信息
>> config show namespace ts1 // 显示名为 ts1 的 namespace 的相关 config 信息
{
"leader-schedule-limit": 64,
"region-schedule-limit": 16,
"replica-schedule-limit": 24,
"leader-schedule-limit": 4,
"region-schedule-limit": 4,
"replica-schedule-limit": 8,
"max-replicas": 3,
}
>> config show replication // 显示 replication 的相关 config 信息
Expand All @@ -130,6 +138,52 @@ export PD_ADDR=http://127.0.0.1:2379
}
```

`max-snapshot-count` 控制单个 store 最多同时接收或发送的 snapshot 数量,调度受制于这个配置来防止抢占正常业务的资源。
当需要加快补副本或 balance 速度时可以调大这个值。

```bash
>> config set max-snapshort-count 16 // 设置最大 snapshot 为 16
```

`max-pending-peer-count` 控制单个 store 的 pending peer 上限,调度受制于这个配置来防止在部分节点产生大量日志落后的 Region。
需要加快补副本或 balance 速度可以适当调大这个值,设置为 0 则表示不限制。

```bash
>> config set max-pending-peer-count 64 // 设置最大 pending peer 数量为 128
```

`max-merge-region-size` 控制 region merge 的 size 上限(单位是 M)。
当 regionSize 大于指定值时 PD 不会将其与相邻的 region 合并。设置为 0 表示不开启 region merge 功能。

```bash
>> config set max-merge-region-size 16 // 设置 region merge 的 size 上限为 16M
```

`max-merge-region-rows` 控制 region merge 的 rowCount 上限。
当 regionRowCount 大于指定值时 PD 不会将其与相邻的 region 合并。

```bash
>> config set max-merge-region-rows 50000 // 设置 region merge 的 rowCount 上限为 50k
```

`split-merge-interval` 控制对同一个 region 做 split 和 merge 操作的间隔,即对于新 split 的 region 一段时间内不会被 merge。

```bash
>> config set split-merge-interval 24h // 设置 split merge 间隔为 1 天
```

`patrol-region-interval` 控制 replicaChecker 检查 region 健康状态的运行频率,越短则运行越快,通常状况不需要调整。

```bash
>> config set patrol-region-interval 10ms // 设置 replicaChecker 的运行频率为 10ms
```

`max-store-down-time` 为 PD 认为失联 store 无法恢复的时间,当超过指定的时间没有收到 store 的心跳后,PD 会在其他节点补充副本。

```bash
>> config set max-store-down-time 30m // 设置 store 心跳丢失 30 分钟开始补副本
```

通过调整 `leader-schedule-limit` 可以控制同时进行 leader 调度的任务个数。
这个值主要影响 *leader balance* 的速度,值越大调度得越快,设置为 0 则关闭调度。
Leader 调度的开销较小,需要的时候可以适当调大。
Expand Down Expand Up @@ -202,7 +256,7 @@ Replica 调度的开销较大,所以这个值不宜调得太大。
>> hot store // 显示所有 store 的读写信息
```

### label [store]
### label [store \<name\> \<value\>]

用于显示集群标签信息

Expand All @@ -213,27 +267,33 @@ Replica 调度的开销较大,所以这个值不宜调得太大。
>> label store zone cn // 显示所有包含 label 为 "zone":"cn" 的 store
```

### member [leader | delete]
### member [delete | leader_priority | leader [show | resign | transfer \<member_name\>]]

用于显示 PD 成员信息或删除指定成员
用于显示 PD 成员信息,删除指定成员,设置成员的 leader 优先级

示例:

```bash
>> member // 显示所有成员的信息
{
"members": [......]
"members": [......],
"leader": {......},
"etcd_leader": {......},
}
>> member delete name pd2 // 下线 "pd2"
Success!
>> member delete id 1319539429105371180 // 使用 id 下线节点
Success!
>> member leader show // 显示 leader 的信息
{
"name": "pd",
"addr": "http://192.168.199.229:2379",
"id": 9724873857558226554
}
>> member delete name pd2 // 下线 "pd2"
Success!
>> member delete id 1319539429105371180 // 使用 id 下线节点
Success!
>> member leader resign // 将 leader 从当前成员移走
......
>> member leader transfer 9724873857558226554 // 将 leader 迁移至指定 ID 成员
......
```

### operator [show | add | remove]
Expand All @@ -252,6 +312,8 @@ Success!
>> 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 // 将 region 1 对半拆分成两个 region
>> operator remove 1 // 把 region 1 的调度操作删掉
```

Expand All @@ -273,7 +335,7 @@ time: 43.12698ms
示例:

```bash
>> region // 显示所有 region 信息
>> region // 显示所有 region 信息
{
"count": 1,
"regions": [......]
Expand Down Expand Up @@ -319,6 +381,40 @@ Protobuf 格式示例:
}
```

### region sibling \<region_id\>

用于查询某个 region 相邻的 region。

示例:

```bash
>> region sibling 2
{
"count": 2,
"regions": [......],
}
```

### region check [miss-peer | extra-peer | down-peer | pending-peer | incorrect-ns]

用于查询处于异常状态的 region,各类型的意义如下

- miss-peer:缺副本的 region
- extra-peer:多副本的 region
- down-peer:有副本状态为 Down 的 region
- pending-peer:有副本状态为 Pending 的 region
- incorrect-ns:有副本不符合 namespace 约束的 region

示例:

```bash
>> region miss-peer
{
"count": 2,
"regions": [......],
}
```

### scheduler [show | add | remove]

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

0 comments on commit e38c6eb

Please sign in to comment.