TRAFFIC CAPTURE

d

TiDB v9.0.0 引入了 TRAFFIC CAPTURE 语法,用于向集群中所有 TiProxy 实例发送请求,使 TiProxy 捕获客户端流量并保存到流量文件。

TiProxy 支持将流量捕获到本地存储或外部存储。捕获流量到本地时,需要在捕获流量之后手动将流量文件复制到回放的 TiProxy 集群上。而使用外部存储时则无需手动复制。

TiProxy 支持的外部存储包括 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage,以及兼容 S3 协议的其他文件存储服务。关于外部存储,请参见外部存储服务的 URI 格式

TRAFFIC CAPTURE 支持以下选项:

  • DURATION:(必填)指定捕获的时长。可选单位为 m(分钟)、h(小时)或 d(天)。例如,DURATION="1h" 表示指定捕获一小时的流量。
  • COMPRESS:(可选)指定是否压缩流量文件。true 表示压缩,压缩格式为 gzip。false 表示不压缩。默认值为 true
  • ENCRYPTION_METHOD:(可选)指定加密流量文件的算法。仅支持 ""plaintextaes256-ctr。其中,""plaintext 表示不加密,aes256-ctr 表示使用 AES256-CTR 算法加密。指定加密时,需要同时配置 encrytion-key-path。默认值为 ""

捕获流量要求当前用户具有 SUPERTRAFFIC_CAPTURE_ADMIN 权限。

语法图

TrafficStmt
TRAFFICCAPTURETOstringLitTrafficCaptureOptList
TrafficCaptureOptList
TrafficCaptureOptTrafficCaptureOptListTrafficCaptureOpt
TrafficCaptureOpt
DURATIONEqOptstringLitENCRYPTION_METHODEqOptstringLitCOMPRESSEqOptBoolean

示例

捕获 1 天流量到 TiProxy 实例的本地 /tmp/traffic 目录:

TRAFFIC CAPTURE TO "/tmp/traffic" DURATION="1d";

捕获 10 分钟流量到 S3:

TRAFFIC CAPTURE TO "s3://external/traffic?access-key=${access-key}&secret-access-key=${secret-access-key}" DURATION="10m";

捕获时,流量文件自动加密,但不自动压缩:

TRAFFIC CAPTURE TO "/tmp/traffic" DURATION="1h" COMPRESS=false ENCRYPTION_METHOD="aes256-ctr";

MySQL 兼容性

该语句是 TiDB 对 MySQL 语法的扩展。

另请参阅

文档内容是否有帮助?