Skip to content

Commit fb52af1

Browse files
authored
tiproxy: update traffic replay docs (#19548)
1 parent 8aff6b8 commit fb52af1

12 files changed

+610
-105
lines changed

TOC.md

+4
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,7 @@
778778
- [`BEGIN`](/sql-statements/sql-statement-begin.md)
779779
- [`CALIBRATE RESOURCE`](/sql-statements/sql-statement-calibrate-resource.md)
780780
- [`CANCEL IMPORT JOB`](/sql-statements/sql-statement-cancel-import-job.md)
781+
- [`CANCEL TRAFFIC JOBS`](/sql-statements/sql-statement-cancel-traffic-jobs.md)
781782
- [`COMMIT`](/sql-statements/sql-statement-commit.md)
782783
- [`CREATE BINDING`](/sql-statements/sql-statement-create-binding.md)
783784
- [`CREATE DATABASE`](/sql-statements/sql-statement-create-database.md)
@@ -884,13 +885,16 @@
884885
- [`SHOW TABLE REGIONS`](/sql-statements/sql-statement-show-table-regions.md)
885886
- [`SHOW TABLE STATUS`](/sql-statements/sql-statement-show-table-status.md)
886887
- [`SHOW TABLES`](/sql-statements/sql-statement-show-tables.md)
888+
- [`SHOW TRAFFIC JOBS`](/sql-statements/sql-statement-show-traffic-jobs.md)
887889
- [`SHOW VARIABLES`](/sql-statements/sql-statement-show-variables.md)
888890
- [`SHOW WARNINGS`](/sql-statements/sql-statement-show-warnings.md)
889891
- [`SHUTDOWN`](/sql-statements/sql-statement-shutdown.md)
890892
- [`SPLIT REGION`](/sql-statements/sql-statement-split-region.md)
891893
- [`START TRANSACTION`](/sql-statements/sql-statement-start-transaction.md)
892894
- [`TABLE`](/sql-statements/sql-statement-table.md)
893895
- [`TRACE`](/sql-statements/sql-statement-trace.md)
896+
- [`TRAFFIC CAPTURE`](/sql-statements/sql-statement-traffic-capture.md)
897+
- [`TRAFFIC REPLAY`](/sql-statements/sql-statement-traffic-replay.md)
894898
- [`TRUNCATE`](/sql-statements/sql-statement-truncate.md)
895899
- [`UNLOCK STATS`](/sql-statements/sql-statement-unlock-stats.md)
896900
- [`UPDATE`](/sql-statements/sql-statement-update.md)

enable-tls-between-components.md

+27-5
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,23 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec
109109
cdc server --pd=https://127.0.0.1:2379 --log-file=ticdc.log --addr=0.0.0.0:8301 --advertise-addr=127.0.0.1:8301 --ca=/path/to/ca.pem --cert=/path/to/ticdc-cert.pem --key=/path/to/ticdc-key.pem
110110
```
111111

112+
- TiProxy
113+
114+
在 `config` 文件中设置,并设置相应的 URL 为 https:
115+
116+
```toml
117+
[security]
118+
[server-http-tls]
119+
ca = "/path/to/ca.pem"
120+
cert = "/path/to/tiproxy-server.pem"
121+
key = "/path/to/tiproxy-server-key.pem"
122+
```
123+
112124
此时 TiDB 集群各个组件间已开启加密传输。
113125

114126
> **注意:**
115127
>
116-
> 若 TiDB 集群各个组件间开启加密传输后,在使用 tidb-ctl、tikv-ctlpd-ctl 工具连接集群时,需要指定 client 证书,示例:
128+
> 若 TiDB 集群各个组件间开启加密传输后,在使用 tidb-ctl、tikv-ctlpd-ctl 或 tiproxyctl 工具连接集群时,需要指定 client 证书,示例:
117129

118130
{{< copyable "shell-regular" >}}
119131

@@ -150,7 +162,7 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec
150162

151163
```toml
152164
[security]
153-
cluster-verify-cn = ["tidb", "test-client", "prometheus"]
165+
cluster-verify-cn = ["tidb", "tiproxy", "test-client", "prometheus"]
154166
```
155167

156168
- TiKV
@@ -168,7 +180,7 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec
168180

169181
```toml
170182
[security]
171-
cert-allowed-cn = ["tidb", "pd", "tikv", "tiflash", "test-client", "prometheus"]
183+
cert-allowed-cn = ["tidb", "pd", "tikv", "tiflash", "tiproxy", "test-client", "prometheus"]
172184
```
173185

174186
- TiFlash(从 v4.0.5 版本开始引入)
@@ -187,10 +199,20 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec
187199
cert-allowed-cn = ["tidb", "tikv", "tiflash", "prometheus"]
188200
```
189201

202+
- TiProxy(从 v1.4.0 版本开始引入)
203+
204+
在 `config` 文件中设置:
205+
206+
```toml
207+
[security]
208+
[server-http-tls]
209+
cert-allowed-cn = ["tiproxy", "tidb", "test-client", "prometheus"]
210+
```
211+
190212
## 证书重新加载
191213

192-
- 如果 TiDB 集群部署在本地的数据中心,TiDB、PD、TiKV、TiFlash、TiCDC 和各种 client 在每次新建相互通讯的连接时都会重新读取当前的证书和密钥文件内容,实现证书和密钥的重新加载,无需重启 TiDB 集群。
193-
- 如果 TiDB 集群部署在自己管理的 Cloud,TLS 证书的签发需要与云服务商的证书管理服务集成,TiDB、PD、TiKV、TiFlash、TiCDC 组件的 TLS 证书支持自动轮换,无需重启 TiDB 集群。
214+
- 如果 TiDB 集群部署在本地的数据中心,TiDB、PD、TiKV、TiFlash、TiCDC、TiProxy 和各种 client 在每次新建相互通讯的连接时都会重新读取当前的证书和密钥文件内容,实现证书和密钥的重新加载,无需重启 TiDB 集群。
215+
- 如果 TiDB 集群部署在自己管理的 Cloud,TLS 证书的签发需要与云服务商的证书管理服务集成,TiDB、PD、TiKV、TiFlash、TiCDC、TiProxy 组件的 TLS 证书支持自动轮换,无需重启 TiDB 集群。
194216

195217
## 证书有效期
196218

11.4 KB
Loading

privilege-management.md

+22
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,8 @@ SHOW GRANTS FOR `rw_user`@`192.168.%`;
292292
* `RESTRICTED_USER_ADMIN` 不允许在 SEM 打开的情况下使用 `SUPER` 用户撤销访问权限。
293293
* `RESTRICTED_CONNECTION_ADMIN` 允许 KILL 属于 `RESTRICTED_USER_ADMIN` 用户的连接。该权限对 `KILL``KILL TIDB` 语句生效。
294294
* `RESTRICTED_REPLICA_WRITER_ADMIN` 允许权限拥有者在 TiDB 集群开启了只读模式的情况下不受影响地执行写入或更新操作,详见 [`tidb_restricted_read_only` 配置项](/system-variables.md#tidb_restricted_read_only-从-v520-版本开始引入)
295+
* `TRAFFIC_CAPTURE_ADMIN` 允许执行、查看和取消流量捕获任务。详见 [TiProxy 流量回放](/tiproxy/tiproxy-traffic-replay.md)
296+
* `TRAFFIC_REPLAY_ADMIN` 允许执行、查看和取消流量回放任务。详见 [TiProxy 流量回放](/tiproxy/tiproxy-traffic-replay.md)
295297

296298
若要查看全部的动态权限,请执行 `SHOW PRIVILEGES` 语句。由于用户可使用插件来添加新的权限,因此可分配的权限列表可能因用户的 TiDB 安装情况而异。
297299

@@ -506,6 +508,26 @@ SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE grantee = "'root'@'%'";
506508

507509
当系统变量 [`tidb_resource_control_strict_mode`](/system-variables.md#tidb_resource_control_strict_mode-从-v820-版本开始引入) 设置为 `ON` 时,你需要有 `SUPER` 或者 `RESOURCE_GROUP_ADMIN` 或者 `RESOURCE_GROUP_USER` 权限才能执行该语句。
508510

511+
### TRAFFIC CAPTURE
512+
513+
需要拥有 `SUPER` 或者 `TRAFFIC_CAPTURE_ADMIN` 权限。
514+
515+
### TRAFFIC REPLAY
516+
517+
需要拥有 `SUPER` 或者 `TRAFFIC_REPLAY_ADMIN` 权限。
518+
519+
### CANCEL TRAFFIC JOBS
520+
521+
取消捕获任务,需要拥有 `SUPER` 或者 `TRAFFIC_CAPTURE_ADMIN` 权限。
522+
523+
取消回放任务,需要拥有 `SUPER` 或者 `TRAFFIC_REPLAY_ADMIN` 权限。
524+
525+
### SHOW TRAFFIC JOBS
526+
527+
查看捕获任务,需要拥有 `SUPER` 或者 `TRAFFIC_CAPTURE_ADMIN` 权限。
528+
529+
查看回放任务,需要拥有 `SUPER` 或者 `TRAFFIC_REPLAY_ADMIN` 权限。
530+
509531
## 权限系统的实现
510532

511533
### 授权表
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: CANCEL TRAFFIC JOBS
3+
summary: TiDB 数据库中 CANCEL TRAFFIC JOBS 的使用概况。
4+
---
5+
6+
# CANCEL TRAFFIC JOBS
7+
8+
TiDB v9.0.0 引入了 `CANCEL TRAFFIC JOBS` 语法,用于取消集群中所有 [TiProxy](/tiproxy/tiproxy-overview.md) 正在执行的流量捕获或回放任务。该操作需要如下权限:
9+
10+
- 取消流量捕获任务,需要有 `SUPER`[`TRAFFIC_CAPTURE_ADMIN`](/privilege-management.md#动态权限) 权限。
11+
- 取消流量回放任务,需要有 `SUPER`[`TRAFFIC_REPLAY_ADMIN`](/privilege-management.md#动态权限) 权限。
12+
13+
## 语法图
14+
15+
```ebnf+diagram
16+
TrafficStmt ::=
17+
"CANCEL" "TRAFFIC" "JOBS"
18+
```
19+
20+
## 示例
21+
22+
假设当前有 2 台 TiProxy 正在进行流量捕获:
23+
24+
```sql
25+
SHOW TRAFFIC JOBS;
26+
```
27+
28+
```
29+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
30+
| START_TIME | END_TIME | INSTANCE | TYPE | PROGRESS | STATUS | FAIL_REASON | PARAMS |
31+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
32+
| 2024-12-17 10:54:41.000000 | | 10.1.0.10:3080 | capture | 45% | running | | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
33+
| 2024-12-17 10:54:41.000000 | | 10.1.0.11:3080 | capture | 45% | running | | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
34+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
35+
2 rows in set (0.01 sec)
36+
```
37+
38+
取消当前的任务:
39+
40+
```sql
41+
CANCEL TRAFFIC JOBS;
42+
```
43+
44+
```
45+
Query OK, 0 rows affected (0.13 sec)
46+
```
47+
48+
再次查看任务,显示任务已被取消:
49+
50+
```sql
51+
SHOW TRAFFIC JOBS;
52+
```
53+
54+
```
55+
+----------------------------+----------------------------+----------------+---------+----------+----------+------------------+----------------------------------------------------------------------------+
56+
| START_TIME | END_TIME | INSTANCE | TYPE | PROGRESS | STATUS | FAIL_REASON | PARAMS |
57+
+----------------------------+----------------------------+----------------+---------+----------+----------+------------------+----------------------------------------------------------------------------+
58+
| 2024-12-17 10:54:41.000000 | 2024-12-17 11:34:42.000000 | 10.1.0.10:3080 | capture | 45% | canceled | manually stopped | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
59+
| 2024-12-17 10:54:41.000000 | 2024-12-17 11:34:42.000000 | 10.1.0.11:3080 | capture | 45% | canceled | manually stopped | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
60+
+----------------------------+----------------------------+----------------+---------+----------+----------+------------------+----------------------------------------------------------------------------+
61+
2 rows in set (0.01 sec)
62+
```
63+
64+
## MySQL 兼容性
65+
66+
该语句是 TiDB 对 MySQL 语法的扩展。
67+
68+
## 另请参阅
69+
70+
* [TiProxy 流量回放](/tiproxy/tiproxy-traffic-replay.md)
71+
* [`TRAFFIC CAPTURE`](/sql-statements/sql-statement-traffic-capture.md)
72+
* [`TRAFFIC REPLAY`](/sql-statements/sql-statement-traffic-replay.md)
73+
* [`SHOW TRAFFIC JOBS`](/sql-statements/sql-statement-show-traffic-jobs.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
title: SHOW TRAFFIC JOBS
3+
summary: TiDB 数据库中 SHOW TRAFFIC JOBS 的使用概况。
4+
---
5+
6+
# SHOW TRAFFIC JOBS
7+
8+
TiDB v9.0.0 引入了 `SHOW TRAFFIC JOBS` 语法,用于查看集群中所有 [TiProxy](/tiproxy/tiproxy-overview.md) 的流量捕获或回放任务。输出结果中,每行代表一台 TiProxy 实例的一个任务。每台 TiProxy 实例最多保存最近的 10 个任务。
9+
10+
执行该语句的结果取决于当前用户的权限:
11+
12+
- 具有 [`TRAFFIC_CAPTURE_ADMIN`](/privilege-management.md#动态权限) 权限的用户可查看流量捕获任务。
13+
- 具有 [`TRAFFIC_REPLAY_ADMIN`](/privilege-management.md#动态权限) 权限的用户可查看流量回放任务。
14+
- 具有 `SUPER` 权限或同时拥有上述两种权限的用户可同时查看流量捕获和流量回放任务。
15+
16+
`SHOW TRAFFIC JOBS` 返回以下列:
17+
18+
| 列名 | 说明 |
19+
| :-------- | :------------- |
20+
| `START_TIME` | 该任务的开始时间 |
21+
| `END_TIME` | 如果该任务已结束,该列为结束时间,否则为空 |
22+
| `INSTANCE` | TiProxy 的实例地址 |
23+
| `TYPE` | 表示任务类型,`capture` 代表流量捕获任务,`replay` 代表流量回放任务 |
24+
| `PROGRESS` | 该任务的完成百分比 |
25+
| `STATUS` | 该任务当前的状态,`running` 表示正在运行,`done` 表示正常完成,`canceled` 表示任务失败 |
26+
| `FAIL_REASON` | 如果该任务失败,该列为失败的原因,否则为空。例如 `manually stopped` 表示用户执行 `CANCEL TRAFFIC JOBS` 手动取消任务 |
27+
| `PARAMS` | 该任务的参数 |
28+
29+
## 语法图
30+
31+
```ebnf+diagram
32+
TrafficStmt ::=
33+
"SHOW" "TRAFFIC" "JOBS"
34+
```
35+
36+
## 示例
37+
38+
查看流量捕获或回放任务:
39+
40+
```sql
41+
SHOW TRAFFIC JOBS;
42+
```
43+
44+
下面输出示例表示有 2 台 TiProxy 正在捕获流量,进度都为 45%:
45+
46+
```
47+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
48+
| START_TIME | END_TIME | INSTANCE | TYPE | PROGRESS | STATUS | FAIL_REASON | PARAMS |
49+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
50+
| 2024-12-17 10:54:41.000000 | | 10.1.0.10:3080 | capture | 45% | running | | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
51+
| 2024-12-17 10:54:41.000000 | | 10.1.0.11:3080 | capture | 45% | running | | OUTPUT="/tmp/traffic", DURATION="90m", COMPRESS=true, ENCRYPTION_METHOD="" |
52+
+----------------------------+----------+----------------+---------+----------+---------+-------------+----------------------------------------------------------------------------+
53+
2 rows in set (0.01 sec)
54+
```
55+
56+
下面输出示例表示 2 台 TiProxy 的流量回放任务被手动取消:
57+
58+
```
59+
+----------------------------+----------------------------+----------------+--------+----------+----------+------------------+--------------------------------------------------------------------+
60+
| START_TIME | END_TIME | INSTANCE | TYPE | PROGRESS | STATUS | FAIL_REASON | PARAMS |
61+
+----------------------------+----------------------------+----------------+--------+----------+----------+------------------+--------------------------------------------------------------------+
62+
| 2024-12-17 10:54:41.000000 | 2024-12-17 11:34:42.000000 | 10.1.0.10:3080 | replay | 70% | canceled | manually stopped | INPUT="/tmp/traffic", USER="root", SPEED=0.000000, READ_ONLY=false |
63+
| 2024-12-17 10:54:41.000000 | 2024-12-17 11:34:43.000000 | 10.1.0.11:3080 | replay | 69% | canceled | manually stopped | INPUT="/tmp/traffic", USER="root", SPEED=0.000000, READ_ONLY=false |
64+
+----------------------------+----------------------------+----------------+--------+----------+----------+------------------+--------------------------------------------------------------------+
65+
2 rows in set (0.01 sec)
66+
```
67+
68+
## MySQL 兼容性
69+
70+
该语句是 TiDB 对 MySQL 语法的扩展。
71+
72+
## 另请参阅
73+
74+
* [TiProxy 流量回放](/tiproxy/tiproxy-traffic-replay.md)
75+
* [`TRAFFIC CAPTURE`](/sql-statements/sql-statement-traffic-capture.md)
76+
* [`TRAFFIC REPLAY`](/sql-statements/sql-statement-traffic-replay.md)
77+
* [`CANCEL TRAFFIC JOBS`](/sql-statements/sql-statement-cancel-traffic-jobs.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
title: TRAFFIC CAPTURE
3+
summary: TiDB 数据库中 TRAFFIC CAPTURE 的使用概况。
4+
---
5+
6+
# TRAFFIC CAPTURE
7+
8+
TiDB v9.0.0 引入了 `TRAFFIC CAPTURE` 语法,用于向集群中所有 [TiProxy](/tiproxy/tiproxy-overview.md) 实例发送请求,使 TiProxy 捕获客户端流量并保存到流量文件。
9+
10+
TiProxy 支持将流量捕获到本地存储或外部存储。捕获流量到本地时,需要在捕获流量之后手动将流量文件复制到回放的 TiProxy 集群上。而使用外部存储时则无需手动复制。
11+
12+
TiProxy 支持的外部存储包括 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage,以及兼容 S3 协议的其他文件存储服务。关于外部存储,请参见[外部存储服务的 URI 格式](/external-storage-uri.md)
13+
14+
`TRAFFIC CAPTURE` 支持以下选项:
15+
16+
- `DURATION`:(必填)指定捕获的时长。可选单位为 `m`(分钟)、`h`(小时)或 `d`(天)。例如,`DURATION="1h"` 表示指定捕获一小时的流量。
17+
- `COMPRESS`:(可选)指定是否压缩流量文件。`true` 表示压缩,压缩格式为 gzip。`false` 表示不压缩。默认值为 `true`
18+
- `ENCRYPTION_METHOD`:(可选)指定加密流量文件的算法。仅支持 `""``plaintext``aes256-ctr`。其中,`""``plaintext` 表示不加密,`aes256-ctr` 表示使用 AES256-CTR 算法加密。指定加密时,需要同时配置 [`encrytion-key-path`](/tiproxy/tiproxy-configuration.md#encryption-key-path)。默认值为 `""`
19+
20+
捕获流量要求当前用户具有 `SUPER`[`TRAFFIC_CAPTURE_ADMIN`](/privilege-management.md#动态权限) 权限。
21+
22+
## 语法图
23+
24+
```ebnf+diagram
25+
TrafficStmt ::=
26+
"TRAFFIC" "CAPTURE" "TO" stringLit TrafficCaptureOptList
27+
28+
TrafficCaptureOptList ::=
29+
TrafficCaptureOpt
30+
| TrafficCaptureOptList TrafficCaptureOpt
31+
32+
TrafficCaptureOpt ::=
33+
"DURATION" EqOpt stringLit
34+
| "ENCRYPTION_METHOD" EqOpt stringLit
35+
| "COMPRESS" EqOpt Boolean
36+
```
37+
38+
## 示例
39+
40+
捕获 1 天流量到 TiProxy 实例的本地 `/tmp/traffic` 目录:
41+
42+
```sql
43+
TRAFFIC CAPTURE TO "/tmp/traffic" DURATION="1d";
44+
```
45+
46+
捕获 10 分钟流量到 S3:
47+
48+
```sql
49+
TRAFFIC CAPTURE TO "s3://external/traffic?access-key=${access-key}&secret-access-key=${secret-access-key}" DURATION="10m";
50+
```
51+
52+
捕获时,流量文件自动加密,但不自动压缩:
53+
54+
```sql
55+
TRAFFIC CAPTURE TO "/tmp/traffic" DURATION="1h" COMPRESS=false ENCRYPTION_METHOD="aes256-ctr";
56+
```
57+
58+
## MySQL 兼容性
59+
60+
该语句是 TiDB 对 MySQL 语法的扩展。
61+
62+
## 另请参阅
63+
64+
* [TiProxy 流量回放](/tiproxy/tiproxy-traffic-replay.md)
65+
* [`TRAFFIC REPLAY`](/sql-statements/sql-statement-traffic-replay.md)
66+
* [`CANCEL TRAFFIC JOBS`](/sql-statements/sql-statement-cancel-traffic-jobs.md)
67+
* [`SHOW TRAFFIC JOBS`](/sql-statements/sql-statement-show-traffic-jobs.md)

0 commit comments

Comments
 (0)