From fdfcb1146383b7fb620c0a1ec47ee7f9249bb5ab Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Thu, 21 May 2020 11:26:51 +0800 Subject: [PATCH 1/6] update document of tidb-ctl --- tidb-control.md | 101 +++++++++++++++++++++++++++++++----------------- 1 file changed, 66 insertions(+), 35 deletions(-) diff --git a/tidb-control.md b/tidb-control.md index ab39cc2c97e9..86d9a1b435db 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -6,11 +6,17 @@ aliases: ['/docs-cn/dev/reference/tools/tidb-control/','/docs-cn/tools/tidb-cont # TiDB Control 使用说明 -TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试。 +TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试。本文介绍了 TiDB Control 的主要功能和各个功能的使用方法。 -## 源码编译 +## 获取 TiDB Contral -编译环境要求:[Go](https://golang.org/) Version 1.7 以上 +### 获取二进制程序 + +对于使用 [TiDB Ansible](/online-deployment-using-ansible.md) 部署的 TiDB 集群,在 TiDB 的安装路径下可以找到 TiDB Contral 的二进制程序 `tidb-ctl`。 + +### 从源代码编译安装 + +编译环境要求:[Go](https://golang.org/) Version 1.13 以上 编译步骤:在 [TiDB Control 项目](https://github.com/pingcap/tidb-ctl)根目录,使用 `make` 命令进行编译,生成 tidb-ctl。 @@ -28,13 +34,29 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 * -n: 选项 * db: -n 的参数 +目前,TiDB Control 包含以下子命令。 + +* `tidb-ctl base64decode` BASE64 解码 +* `tidb-ctl decoder` 用于 KEY 解码 +* `tidb-ctl etcd` 用于操作 etcd +* `tidb-ctl log` 格式化日志文件,将单行的堆栈信息展开 +* `tidb-ctl mvcc` - MVCC 信息 +* `tidb-ctl region` - Region 信息 +* `tidb-ctl schema` - Schema 信息 +* `tidb-ctl table` - Table 信息 + + ### 获取帮助 `tidb-ctl -h/--help` 用于获取帮助信息。tidb-ctl 由多层命令组成,tidb-ctl 及其所有子命令都可以通过 `-h/--help` 来获取使用帮助。 -### 连接 +以获取 Schema 信息为例: + +通过 `tidb-ctl schema -h` 可以获取这个子命令的使用帮助。schema 有两个子命令,in 和 tid。in 用来通过数据库名获取数据库中所有表的表结构,tid 用来通过全数据库唯一的 table_id 获取表的表结构。 + +### 全局参数 -`tidb-ctl` 与连接相关的参数有 4 个,分别为: +`tidb-ctl` 有 4 个与连接相关的全局参数,分别为: - `--host` TiDB 服务地址 - `--port` TiDB 服务端口 @@ -46,28 +68,11 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 其中 `--pdhost` 和 `--pdport` 主要是用于 `etcd` 子命令,例如:`tidb-ctl etcd ddlinfo`。如不添加地址和端口将使用默认值,TiDB/PD 服务默认的地址是 127.0.0.1 (服务地址只能使用 IP 地址),TiDB 服务端口默认的端口是 10080,PD 服务端口默认的端口是 2379 **连接选项是全局选项,适用于以下所有命令。** -目前,TiDB Control 包含以下子命令,各个子命令的具体用法可以使用 `tidb-ctl SUBCOMMAND --help` 获取使用帮助: - -* `tidb-ctl base64decode` BASE64 解码 -* `tidb-ctl decoder` 用于 KEY 解码 -* `tidb-ctl etcd` 用于操作 etcd -* `tidb-ctl log` 格式化日志文件,将单行的堆栈信息展开 -* `tidb-ctl mvcc` - MVCC 信息 -* `tidb-ctl region` - Region 信息 -* `tidb-ctl schema` - Schema 信息 -* `tidb-ctl table` - Table 信息 - -### 使用举例 - -以获取 Schema 信息为例: - -通过 `tidb-ctl schema -h` 可以获取这个子命令的使用帮助。schema 有两个子命令,in 和 tid。in 用来通过数据库名获取数据库中所有表的表结构,tid 用来通过全数据库唯一的 table_id 获取表的表结构。 +### schema 命令 -#### in 命令 +#### in 子命令 -同样可以通过 `tidb-ctl schema in -h` 或 `tidb-ctl schema in --help` 来获取子命令 in 的使用帮助。 - -##### 基本用法 +in 子命令用来通过数据库名获取数据库中所有表的表结构。 `tidb-ctl schema in {数据库名}` @@ -109,12 +114,36 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 这里同样做了截断。 -如使用的 TiDB 地址不为默认地址和端口,可以使用命令行参数 `--host`, `--port` 选项,如:`tidb-ctl --host 172.16.55.88 --port 8898 schema in mysql -n db`。 +如使用的 TiDB 地址不为默认地址和端口,可以使用命令行参数 `--host`, `--port` 选项,如:`tidb-ctl --host 172.16.55.88 --port 8898 schema in mysql -n db` + +#### tid 子命令 + +tid 子命令用来通过表的 id 获取数据库中表的表结构。 + +通过使用 in 子命令查询到数据库中表的 id,之后可以通过 tid 子命令查看表的详细信息。 + +例如,查询到 `mysql.stat_meta` 表的 id 是 21,可以通过 `tidb-ctl schema tid -i 21` 查看表的详细信息。 -#### base64decode 子命令 +```json +{ + "id": 21, + "name": { + "O": "stats_meta", + "L": "stats_meta" + }, + "charset": "utf8mb4", + "collate": "utf8mb4_bin", + ... +} +``` +同 in 子命令一样,如果使用的 TiDB 地址不是默认的地址和端口,需要通过 `--host`, `--port` 参数指定 TiDB 的地址和端口。 + +### base64decode 命令 `base64decode` 用来解码 base64 数据。 +基本用法: + ```shell tidb-ctl base64decode [base64_data] tidb-ctl base64decode [db_name.table_name] [base64_data] @@ -219,17 +248,18 @@ tidb-ctl base64decode [table_id] [base64_data] e not found in data ``` -#### decoder 子命令 +### decoder 命令 * 以下示例解码 row key,index key 类似。 {{< copyable "shell-regular" >}} ```shell - ./tidb-ctl decoder -f table_row -k "t\x00\x00\x00\x00\x00\x00\x00\x1c_r\x00\x00\x00\x00\x00\x00\x00\xfa" + ./tidb-ctl decoder "t\x00\x00\x00\x00\x00\x00\x00\x1c_r\x00\x00\x00\x00\x00\x00\x00\xfa" ``` ``` + format: table_row table_id: -9223372036854775780 row_id: -9223372036854775558 ``` @@ -239,15 +269,16 @@ tidb-ctl base64decode [table_id] [base64_data] {{< copyable "shell-regular" >}} ```shell - ./tidb-ctl decoder -f value -k AhZoZWxsbyB3b3JsZAiAEA== + ./tidb-ctl decoder AhZoZWxsbyB3b3JsZAiAEA== ``` ``` - type: bytes, value: hello world - type: bigint, value: 1024 + format: index_value + index_value[0]: {type: bytes, value: hello world} + index_value[1]: {type: bigint, value: 1024} ``` -#### etcd 子命令 +### etcd 命令 * `tidb-ctl etcd ddlinfo` 获取 DDL 信息。 * `tidb-ctl etcd putkey KEY VALUE` 添加 KEY VALUE 到 etcd (所有的 KEY 会添加到 `/tidb/ddl/all_schema_versions/` 之下)。 @@ -269,11 +300,11 @@ tidb-ctl base64decode [table_id] [base64_data] tidb-ctl etcd delkey "/tidb/ddl/all_schema_versions/bar" ``` -#### log 子命令 +### log 命令 TiDB 错误日志的堆栈信息是一行的格式,可以使用 `tidb-ctl log` 将堆栈信息格式化成多行形式。 -#### keyrange 子命令 +### keyrange 命令 `keyrange` 子命令用于查询全局或表相关的关键 key range 信息,以十六进制形式输出。 From d7ce8f754912fb74d7c000f27c3b2114ce89acc5 Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Thu, 21 May 2020 11:37:56 +0800 Subject: [PATCH 2/6] fix lint --- tidb-control.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-control.md b/tidb-control.md index 86d9a1b435db..622817bc5e25 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -45,7 +45,6 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 * `tidb-ctl schema` - Schema 信息 * `tidb-ctl table` - Table 信息 - ### 获取帮助 `tidb-ctl -h/--help` 用于获取帮助信息。tidb-ctl 由多层命令组成,tidb-ctl 及其所有子命令都可以通过 `-h/--help` 来获取使用帮助。 @@ -136,6 +135,7 @@ tid 子命令用来通过表的 id 获取数据库中表的表结构。 ... } ``` + 同 in 子命令一样,如果使用的 TiDB 地址不是默认的地址和端口,需要通过 `--host`, `--port` 参数指定 TiDB 的地址和端口。 ### base64decode 命令 From 0b67e7afae127bc674983a6fbae6997433e755fe Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Fri, 22 May 2020 10:46:57 +0800 Subject: [PATCH 3/6] address comment --- tidb-control.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tidb-control.md b/tidb-control.md index 622817bc5e25..898c0412d3fb 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -8,11 +8,11 @@ aliases: ['/docs-cn/dev/reference/tools/tidb-control/','/docs-cn/tools/tidb-cont TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试。本文介绍了 TiDB Control 的主要功能和各个功能的使用方法。 -## 获取 TiDB Contral +## 获取 TiDB Control ### 获取二进制程序 -对于使用 [TiDB Ansible](/online-deployment-using-ansible.md) 部署的 TiDB 集群,在 TiDB 的安装路径下可以找到 TiDB Contral 的二进制程序 `tidb-ctl`。 +对于使用 [TiDB Ansible](/online-deployment-using-ansible.md) 部署的 TiDB 集群,在 TiDB 的安装路径下可以找到 TiDB Control 的二进制程序 `tidb-ctl`。 ### 从源代码编译安装 @@ -39,11 +39,11 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 * `tidb-ctl base64decode` BASE64 解码 * `tidb-ctl decoder` 用于 KEY 解码 * `tidb-ctl etcd` 用于操作 etcd -* `tidb-ctl log` 格式化日志文件,将单行的堆栈信息展开 -* `tidb-ctl mvcc` - MVCC 信息 -* `tidb-ctl region` - Region 信息 -* `tidb-ctl schema` - Schema 信息 -* `tidb-ctl table` - Table 信息 +* `tidb-ctl log` 用于格式化日志文件,将单行的堆栈信息展开 +* `tidb-ctl mvcc` 用于获取 MVCC 信息 +* `tidb-ctl region` 用于获取 Region 信息 +* `tidb-ctl schema` 用于获取 Schema 信息 +* `tidb-ctl table` 用于获取 Table 信息 ### 获取帮助 @@ -51,7 +51,7 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 以获取 Schema 信息为例: -通过 `tidb-ctl schema -h` 可以获取这个子命令的使用帮助。schema 有两个子命令,in 和 tid。in 用来通过数据库名获取数据库中所有表的表结构,tid 用来通过全数据库唯一的 table_id 获取表的表结构。 +通过 `tidb-ctl schema -h` 可以获取这个子命令的使用帮助。schema 有两个子命令——in 和 tid。in 用来通过数据库名获取数据库中所有表的表结构,tid 用来通过全数据库唯一的 table_id 获取表的表结构。 ### 全局参数 @@ -113,7 +113,7 @@ in 子命令用来通过数据库名获取数据库中所有表的表结构。 这里同样做了截断。 -如使用的 TiDB 地址不为默认地址和端口,可以使用命令行参数 `--host`, `--port` 选项,如:`tidb-ctl --host 172.16.55.88 --port 8898 schema in mysql -n db` +如使用的 TiDB 地址不为默认地址和端口,可以使用命令行参数 `--host`, `--port` 选项,如:`tidb-ctl --host 172.16.55.88 --port 8898 schema in mysql -n db`。 #### tid 子命令 @@ -136,7 +136,7 @@ tid 子命令用来通过表的 id 获取数据库中表的表结构。 } ``` -同 in 子命令一样,如果使用的 TiDB 地址不是默认的地址和端口,需要通过 `--host`, `--port` 参数指定 TiDB 的地址和端口。 +同 in 子命令一样,如果使用的 TiDB 地址不是默认的地址和端口,需要通过 `--host` 和 `--port` 参数指定 TiDB 的地址和端口。 ### base64decode 命令 From 00fcc6803aec214cf4f73d3d9c7b3c67becea2ef Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Fri, 22 May 2020 16:06:29 +0800 Subject: [PATCH 4/6] address comment --- tidb-control.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tidb-control.md b/tidb-control.md index 898c0412d3fb..ed0c283a1255 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -10,6 +10,8 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 ## 获取 TiDB Control +本节提供了两种方式获取 TiDB Control 工具。 + ### 获取二进制程序 对于使用 [TiDB Ansible](/online-deployment-using-ansible.md) 部署的 TiDB 集群,在 TiDB 的安装路径下可以找到 TiDB Control 的二进制程序 `tidb-ctl`。 @@ -36,7 +38,7 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 目前,TiDB Control 包含以下子命令。 -* `tidb-ctl base64decode` BASE64 解码 +* `tidb-ctl base64decode` 用于 BASE64 解码 * `tidb-ctl decoder` 用于 KEY 解码 * `tidb-ctl etcd` 用于操作 etcd * `tidb-ctl log` 用于格式化日志文件,将单行的堆栈信息展开 From 4b0f526b79583c805338751c7ff143c7904fb2e9 Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Fri, 22 May 2020 16:13:03 +0800 Subject: [PATCH 5/6] address comment --- tidb-control.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tidb-control.md b/tidb-control.md index ed0c283a1255..629887df8e6d 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -12,9 +12,9 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 本节提供了两种方式获取 TiDB Control 工具。 -### 获取二进制程序 +### 通过 TiUP 安装 -对于使用 [TiDB Ansible](/online-deployment-using-ansible.md) 部署的 TiDB 集群,在 TiDB 的安装路径下可以找到 TiDB Control 的二进制程序 `tidb-ctl`。 +在安装 TiUP 之后, 可以使用 `tiup ctl tidb` 获取 TiDB Control 的二进制程序。通过执行 `tiup ctl tidb` 来运行 TiDB Control。 ### 从源代码编译安装 From a425e5d5aba7d59168c347044c73d0d0685b22ca Mon Sep 17 00:00:00 2001 From: Lingyu Song Date: Mon, 25 May 2020 10:35:52 +0800 Subject: [PATCH 6/6] Update tidb-control.md Co-authored-by: Keke Yi <40977455+yikeke@users.noreply.github.com> --- tidb-control.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tidb-control.md b/tidb-control.md index 629887df8e6d..e8398680e6ae 100644 --- a/tidb-control.md +++ b/tidb-control.md @@ -14,7 +14,7 @@ TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多 ### 通过 TiUP 安装 -在安装 TiUP 之后, 可以使用 `tiup ctl tidb` 获取 TiDB Control 的二进制程序。通过执行 `tiup ctl tidb` 来运行 TiDB Control。 +在安装 TiUP 之后, 可以使用 `tiup ctl tidb` 命令来获取 TiDB Control 的二进制程序以及运行 TiDB Control。 ### 从源代码编译安装