TiDB 命令行参数
Posted 76 months ago pg mysql sql newsql nosql tidb
title: PD Control 使用说明 category: monitoring
PD Control 使用说明
PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群。
源码编译
- Go Version 1.7 以上
- 在 PD 项目根目录使用
make
命令进行编译,生成 bin/pd-ctl
简单例子
单命令模式:
./pd-ctl store -d -u http://127.0.0.1:2379
交互模式:
./pd-ctl -u http://127.0.0.1:2379
使用环境变量:
export PD_ADDR=http://127.0.0.1:2379
./pd-ctl
命令行参数(flags)
--pd,-u
- 指定 PD 的地址
- 默认地址: http://127.0.0.1:2379
- 环境变量: PD_ADDR
--detach,-d
- 使用单命令行模式(不进入 readline )
- 默认值: false
命令(command)
store [delete] <store_id>
用于显示 store 信息或者删除指定 store。
示例:
>> store // 显示所有 store 信息
{
"count": 3,
"stores": [...]
}
>> store 1 // 获取 store id 为 1 的 store
......
>> store delete 1 // 下线 store id 为 1 的 store
......
region <region_id>
用于显示 region 信息。
示例:
>> region // 显示所有 region 信息
{
"count": 1,
"regions": [......]
}
>> region 2 // 显示 region id 为 2 的信息
{
"region": {
"id": 2,
......
}
"leader": {
......
}
}
region key [–format=raw|pb|proto|protobuf] <key>
用于查询某个 key 在哪个 region 上,支持 raw 和 protobuf 格式。
Raw 格式(默认)示例:
>> region key abc
{
"region": {
"id": 2,
......
}
}
Protobuf 格式示例:
>> 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
{
"region": {
"id": 2,
......
}
}
member [leader | delete]
用于显示 PD 成员信息或删除指定成员。
示例:
>> member // 显示所有成员的信息
{
"members": [......]
}
>> member leader // 显示 leader 的信息
{
"name": "pd",
"addr": "http://192.168.199.229:2379",
"id": 9724873857558226554
}
>> member delete pd2 // 下线 "pd2"
Success!
config [show | set <option> <value>]
用于显示或调整配置信息。
示例:
>> config show // 显示 config 的信息
{
"max-snapshot-count": 3,
"max-store-down-time": "1h",
"leader-schedule-limit": 8,
"region-schedule-limit": 4,
"replica-schedule-limit": 8,
}
通过调整 leader-schedule-limit
可以控制同时进行 leader 调度的任务个数。
这个值主要影响 leader balance 的速度,值越大调度得越快,设置为 0 则关闭调度。
Leader 调度的开销较小,需要的时候可以适当调大。
>> config set leader-schedule-limit 4 // 最多同时进行 4 个 leader 调度
通过调整 region-schedule-limit
可以控制同时进行 region 调度的任务个数。
这个值主要影响 region balance 的速度,值越大调度得越快,设置为 0 则关闭调度。
Region 调度的开销较大,所以这个值不宜调得太大。
>> config set region-schedule-limit 2 // 最多同时进行 2 个 region 调度
通过调整 replica-schedule-limit
可以控制同时进行 replica 调度的任务个数。
这个值主要影响节点挂掉或者下线的时候进行调度的速度,值越大调度得越快,设置为 0 则关闭调度。
Replica 调度的开销较大,所以这个值不宜调得太大。
>> config set replica-schedule-limit 4 // 最多同时进行 4 个 replica 调度
operator [show | add | remove]
用于显示和控制调度操作。
示例:
>> operator show // 显示所有的 operators
>> operator show admin // 显示所有的 admin operators
>> operator show leader // 显示所有的 leader operators
>> operator show region // 显示所有的 region operators
>> 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 remove 1 // 把 region 1 的调度操作删掉
scheduler [show | add | remove]
用于显示和控制调度策略。
示例:
>> scheduler show // 显示所有的 schedulers
>> scheduler add grant-leader-scheduler 1 // 把 store 1 上的所有 region 的 leader 调度到 store 1
>> scheduler add evict-leader-scheduler 1 // 把 store 1 上的所有 region 的 leader 从 store 1 调度出去
>> scheduler add shuffle-leader-scheduler // 随机交换不同 store 上的 leader
>> scheduler add shuffle-region-scheduler // 随机调度不同 store 上的 region
>> scheduler remove grant-leader-scheduler-1 // 把对应的 scheduler 删掉
title: 参数解释 category: deployment
参数解释
TiDB
--store
- 用来指定 TiDB 底层使用的存储引擎
- 默认: “goleveldb”
- 你可以选择 “memory”, “goleveldb”, “BoltDB” 或者 “TiKV”。(前面三个是本地存储引擎,而 TiKV 是一个分布式存储引擎)
- 例如,如果我们可以通过
tidb-server --store=memory
来启动一个纯内存引擎的 TiDB
--path
- 对于本地存储引擎 “goleveldb”, “BoltDB” 来说,path 指定的是实际的数据存放路径
- 对于 “memory” 存储引擎来说,path 不用设置
- 对于 “TiKV” 存储引擎来说,path 指定的是实际的 PD 地址。假设我们在 192.168.100.113:2379, 192.168.100.114:2379 和 192.168.100.115:2379 上面部署了 PD,那么 path 为 “192.168.100.113:2379, 192.168.100.114:2379, 192.168.100.115:2379”
- 默认: “/tmp/tidb”
-L
- Log 级别
- 默认: “info”
- 我们能选择 debug, info, warn, error 或者 fatal
--log-file
- Log 文件
- 默认: ""
- 如果没设置这个参数,log 会默认输出到 “stderr”,如果设置了,log 就会输出到对应的文件里面,在每天凌晨,log 会自动轮转使用一个新的文件,并且将以前的文件改名备份
--host
- TiDB 服务监听 host
- 默认: “0.0.0.0”
- TiDB 服务会监听这个 host
- 0.0.0.0 默认会监听所有的网卡 address。如果有多块网卡,可以指定对外提供服务的网卡,譬如192.168.100.113
-P
- TiDB 服务监听端口
- 默认: “4000”
- TiDB 服务将会使用这个端口接受 MySQL 客户端发过来的请求
--status
- TiDB 服务状态监听端口
- 默认: “10080”
- 这个端口是为了展示 TiDB 内部数据用的。包括 prometheus 统计 以及 pprof
- Prometheus 统计可以通过 “http://host:status_port/metrics” 访问
- Pprof 数据可以通过 “http://host:status_port/debug/pprof” 访问
--lease
- Schema 的租约时间,单位:秒
- 默认: “1”
- Schema 的 lease 主要用在 online schema changes 上面。这个值会影响到实际的 DDL 语句的执行时间。千万不要随便改动这个值,除非你能知道相关的内部机制
--socket
- TiDB 服务使用 unix socket file 方式接受外部连接
- 默认: ""
- 譬如我们可以使用 “/tmp/tidb.sock” 来打开 unix socket file
--perfschema
- 使用 true/false 来打开或者关闭性能 schema
- 默认: false
- 值可以是 (true) or (false)。性能 Schema 可以帮助我们在运行时检测内部的执行情况。可以通过 performance schema 获取更多信息。但需要注意,开启性能 Schema,会影响 TiDB 的性能
--privilege
- 使用 true/false 来打开或者关闭权限功能(用于开发调试)
- 默认: true
- 值可以是(true) or (false)。当前版本的权限控制还在完善中,将来会去掉此选项
--skip-grant-table
- 允许任何人不带密码连接,并且所有的操作不检查权限
- 默认: false
- 值可以是(true) or (false)。启用此选项需要有本机的root权限,一般用于忘记密码时重置
--report-status
- 打开 (true) 或者关闭 (false) 服务状态监听端口
- 默认: true
- 值可以为 (true) 或者 (false). (true) 表明我们开启状态监听端口。 (false) 表明关闭
--metrics-addr
- Prometheus Push Gateway 地址
- 默认: ""
- 如果为空,TiDB 不会将统计信息推送给 Push Gateway
--metrics-intervel
- 推送统计信息到 Prometheus Push Gateway 的时间间隔
- 默认: 15s
- 设置为 0 表明不推送统计信息给 Push Gateway
Placement Driver (PD)
-L
- Log 级别
- 默认: “info”
- 我们能选择 debug, info, warn, error 或者 fatal
--log-file
- Log 文件
- 默认: ""
- 如果没设置这个参数,log 会默认输出到 “stderr”,如果设置了,log 就会输出到对应的文件里面,在每天凌晨,log 会自动轮转使用一个新的文件,并且将以前的文件改名备份
--config
- 配置文件
- 默认: ""
- 如果你指定了配置文件,PD 会首先读取配置文件的配置。然后如果对应的配置在命令行参数里面也存在,PD 就会使用命令行参数的配置来覆盖配置文件里面的
--name
- 当前 PD 的名字
- 默认: “pd”
- 如果你需要启动多个 PD,一定要给 PD 使用不同的名字
--data-dir
- PD 存储数据路径
- 默认: “default.${name}”
--client-urls
- 处理客户端请求监听 URL 列表
- 默认: “http://127.0.0.1:2379”
- 如果部署一个集群,--client-urls 必须指定当前主机的 IP 地址,例如 “http://192.168.100.113:2379”,如果是运行在 docker 则需要指定为 “http://0.0.0.0:2379”
--advertise-client-urls
- 对外客户端访问 URL 列表
- 默认: ${client-urls}
- 在某些情况下,譬如 docker,或者 NAT 网络环境,客户端并不能通过 PD 自己监听的 client URLs 来访问到 PD,这时候,你就可以设置 advertise urls 来让客户端访问
- 例如,docker 内部 IP 地址为 172.17.0.1,而宿主机的 IP 地址为 192.168.100.113 并且设置了端口映射 -p 2379:2379,那么可以设置为 --advertise-client-urls=“http://192.168.100.113:2379”,客户端可以通过 http://192.168.100.113: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”
--advertise-peer-urls
- 对外其他 PD 节点访问 URL 列表。
- 默认: ${peer-urls}
- 在某些情况下,譬如 docker,或者 NAT 网络环境,其他节点并不能通过 PD 自己监听的 peer URLs 来访问到 PD,这时候,你就可以设置 advertise urls 来让其他节点访问
- 例如,docker 内部 IP 地址为 172.17.0.1,而宿主机的 IP 地址为 192.168.100.113 并且设置了端口映射 -p 2380:2380,那么可以设置为 --advertise-peer-urls=“http://192.168.100.113:2380”,其他 PD 节点可以通过 http://192.168.100.113:2380 来找到这个服务
--initial-cluster
- 初始化 PD 集群配置。
- 默认: “{name}=http://{advertise-peer-url}”
- 例如,如果 name 是 “pd”, 并且
advertise-peer-urls
是 “http://192.168.100.113:2380”, 那么initial-cluster
就是 pd=http://192.168.100.113:2380 - 如果你需要启动三台 PD,那么
initial-cluster
可能就是pd1=http://192.168.100.113:2380, pd2=http://192.168.100.114:2380, pd3=192.168.100.115:2380
--join
- 动态加入 PD 集群
- 默认: ""
- 如果你想动态将一台 PD 加入集群,你可以使用
--join="${advertise-client-urls}"
,advertise-client-url
是当前集群里面任意 PD 的advertise-client-url
,你也可以使用多个 PD 的,需要用逗号分隔
TiKV
TiKV 在命令行参数上面支持一些可读性好的单位转换。
- 文件大小(以 bytes 为单位): KB, MB, GB, TB, PB(也可以全小写)
- 时间(以毫秒为单位): ms, s, m, h
-A, --addr
- TiKV 监听地址
- 默认: “127.0.0.1:20160”
- 如果部署一个集群,--addr 必须指定当前主机的 IP 地址,例如 “http://192.168.100.113:20160”,如果是运行在 docker 则需要指定为 “http://0.0.0.0:20160”
--advertise-addr
- TiKV 对外访问地址。
- 默认: ${addr}
- 在某些情况下,譬如 docker,或者 NAT 网络环境,客户端并不能通过 TiKV 自己监听的地址来访问到 TiKV,这时候,你就可以设置 advertise addr 来让 客户端访问
- 例如,docker 内部 IP 地址为 172.17.0.1,而宿主机的 IP 地址为 192.168.100.113 并且设置了端口映射 -p 20160:20160,那么可以设置为 --advertise-addr=“192.168.100.113:20160”,客户端可以通过 192.168.100.113:20160 来找到这个服务
-L, --log
- Log 级别
- 默认: “info”
- 我们能选择 trace, debug, info, warn, error, 或者 off
--log-file
- Log 文件
- 默认: ""
- 如果没设置这个参数,log 会默认输出到 “stderr”,如果设置了,log 就会输出到对应的文件里面,在每天凌晨,log 会自动轮转使用一个新的文件,并且将以前的文件改名备份
-C, --config
- 配置文件
- 默认: ""
- 如果你指定了配置文件,TiKV 会首先读取配置文件的配置。然后如果对应的配置在命令行参数里面也存在,TiKV 就会使用命令行参数的配置来覆盖配置文件里面的
--data-dir
- TiKV 数据存储路径
- 默认: “/tmp/tikv/store”
--capacity
- TiKV 存储数据的容量
- 默认: 0 (无限)
- PD 需要使用这个值来对整个集群做 balance 操作。(提示:你可以使用 10GB 来替代 10737418240,从而简化参数的传递)
--pd
- PD 地址列表。
- 默认: ""
- TiKV 必须使用这个值连接 PD,才能正常工作。使用逗号来分隔多个 PD 地址,例如: 192.168.100.113:2379, 192.168.100.114:2379, 192.168.100.115:2379