pt-secure-collect
收集、脱敏、打包并加密诊断数据,用于安全地向 Percona 或他人分享故障现场。
语法
bash
pt-secure-collect [<flags>] <command> [<args> ...]默认情况下,pt-secure-collect 会收集以下工具的输出:
pt-stalk --no-stalk --iterations=2 --sleep=30pt-summarypt-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-dir | Percona Toolkit 可执行文件所在目录(当它们不在 PATH 中时) |
--temp-dir | 数据收集使用的临时目录,默认 ${HOME}/data_collection_{timestamp} |
--include-dir | 把该目录一并包含进脱敏后的 tar 文件 |
--config-file | 配置文件路径,默认 ~/.my.cnf |
--mysql-host | MySQL 主机,默认 127.0.0.1 |
--mysql-port | MySQL 端口,默认 3306 |
--mysql-user | MySQL 用户名 |
--mysql-password | MySQL 密码 |
--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 调试安全提示、系统要求基线,见 通用说明。
更多细节请阅读 官方文档。