Skip to content

pt-secure-collect

收集、脱敏、打包并加密诊断数据,用于安全地向 Percona 或他人分享故障现场。

语法

bash
pt-secure-collect [<flags>] <command> [<args> ...]

默认情况下,pt-secure-collect 会收集以下工具的输出:

  • pt-stalk --no-stalk --iterations=2 --sleep=30
  • pt-summary
  • pt-mysql-summary

用法示例

以下命令需要目标 MySQL 通过 ~/.my.cnf--config-file 可连;涉及密码一律用 --ask-mysql-pass 交互输入,不在命令行写明文。收集产物默认脱敏并加密(加密密码同样在终端询问),适合直接发给技术支持排障。

场景:默认收集并加密

最常用的一键收集:跑 pt-stalk/pt-summary/pt-mysql-summary,脱敏后加密打包(加密密码交互输入):

bash
pt-secure-collect collect --ask-mysql-pass

场景:指定远程 MySQL

连远程 MySQL 实例收集,主机、端口、用户显式给出:

bash
pt-secure-collect collect --mysql-host 10.0.0.1 --mysql-port 3306 --mysql-user dba --ask-mysql-pass

场景:保留临时文件自查

收集后不删临时目录,便于先本地检查脱敏结果再外发:

bash
pt-secure-collect collect --ask-mysql-pass --temp-dir /tmp/diag --no-remove-temp-files

场景:附带额外诊断命令

在收集流程里顺带跑其他 pt 工具(可多次使用 --extra-cmd):

bash
pt-secure-collect collect --ask-mysql-pass --extra-cmd "pt-duplicate-key-checker" --extra-cmd "pt-index-usage"

场景:解密收到的文件

技术支持发回的加密包,解密时密码从终端询问:

bash
pt-secure-collect decrypt diag-2026.aes --outfile diag-2026.tar

场景:加密已有文件外发

把本地已有的诊断文件加密后再发给对方:

bash
pt-secure-collect encrypt report.txt --outfile report.txt.aes

场景:脱敏日志文件

把慢日志里的查询替换成指纹、混淆主机名,得到可安全分享的版本:

bash
pt-secure-collect sanitize --input-file slow.log --output-file slow.log.sanitized

全局选项

选项说明
--help显示上下文相关的帮助(还可试 --help-long--help-man
--debug启用 debug 日志级别

子命令

collect —— 收集数据

收集、脱敏、打包并加密各 pt 工具的数据:

bash
pt-secure-collect collect <flags>
选项说明
--bin-dirPercona Toolkit 可执行文件所在目录(当它们不在 PATH 中时)
--temp-dir数据收集使用的临时目录,默认 ${HOME}/data_collection_{timestamp}
--include-dir把该目录一并包含进脱敏后的 tar 文件
--config-file配置文件路径,默认 ~/.my.cnf
--mysql-hostMySQL 主机,默认 127.0.0.1
--mysql-portMySQL 端口,默认 3306
--mysql-userMySQL 用户名
--mysql-passwordMySQL 密码
--ask-mysql-pass交互式询问 MySQL 密码
--extra-cmd额外执行该命令作为数据收集的一部分,可多次使用
--encrypt-password使用该密码加密输出文件;省略时在命令行询问
--no-collect不收集数据
--no-sanitize不脱敏数据
--no-encrypt不加密输出文件
--no-sanitize-hostnames不脱敏主机名
--no-sanitize-queries不把查询替换为其指纹
--no-remove-temp-files不删除临时文件

decrypt —— 解密文件

解密加密文件,密码从终端询问:

bash
pt-secure-collect decrypt [flags] <input file>
选项说明
--outfile输出到该文件;省略时输出文件名与输入相同并加 .aes 扩展名

encrypt —— 加密文件

加密文件,密码从终端询问:

bash
pt-secure-collect encrypt [flags] <input file>
选项说明
--outfile输出到该文件;省略时输出文件名与输入相同并去掉 .aes 扩展名

sanitize —— 脱敏文件

把文件中的查询替换为其指纹,并混淆主机名:

bash
pt-secure-collect sanitize [flags]
选项说明
--input-file输入文件;省略时从标准输入读取
--output-file输出文件;省略时写到标准输出
--no-sanitize-hostnames不脱敏主机名
--no-sanitize-queries不把查询替换为其指纹

其他信息

  • 作者:Carlos Salguero

  • 通用说明:已知问题的反馈方式、PTDEBUG 调试安全提示、系统要求基线,见 通用说明

更多细节请阅读 官方文档

Percona Toolkit 中文文档 · 社区维护的第三方学习站