pt-replica-find
查找并打印 MySQL 副本(replica)的复制层级树。
语法
bash
pt-replica-find [OPTIONS] [DSN]bash
pt-replica-find --host source-host用法示例
以下命令假定已通过选项文件或本机 socket 配置好 MySQL 连接;远程主机用 --host 主机 或 DSN(如 h=主机,P=端口,不写明文密码)指定。命令可直接复制,替换其中的主机名即可。
场景:打印完整复制拓扑树
从 source-host 出发,默认 --report-format summary 打印每个副本的版本、Server ID、复制状态、binlog 格式等摘要,形成层级树:
bash
pt-replica-find --host source-host场景:只看主机名树
只想快速看清主从层级、不要每台副本的详细设置,用 --report-format hostname 只打印主机名/端口树:
bash
pt-replica-find --host source-host --report-format hostname场景:非标准端口的主库
主库不在 3306 时,用 DSN 显式指定端口(非标准端口下副本发现默认改走 hosts 方法):
bash
pt-replica-find h=source-host,P=3307场景:把 IP 解析成主机名
报告里想把 1.2.3.4 显示成可读主机名(如 10.10.7.14 (dbase1.sample.net)),加 --resolve-address;会多耗几秒:
bash
pt-replica-find --host source-host --resolve-address功能说明
pt-replica-find 连接到 MySQL 复制源(source)并找出其副本,当前功能是打印复制层级的树状视图。
源主机可以用两种方式指定:
- 标准连接选项:
--defaults-file、--password、--host、--port、--socket、--user。 - DSN:可以只写主机名(如
server.domain.com或1.2.3.4),或key=value,key=value字符串,键为单字母:h(主机)、P(端口)、S(socket 文件)、u(用户)、p(密码)、F(defaults 文件)。
工具会读取常规的 MySQL 选项文件(如 ~/.my.cnf),因此通常无需在命令行指定用户名密码等。
退出状态
0 表示成功;其他值为 Perl 进程本身的退出状态。
选项
| 选项 | 说明 |
|---|---|
--ask-pass | 连接 MySQL 时交互式询问密码 |
--[no]buffer-stdout | 默认开启 STDOUT 缓冲;使用 tee、kubectl logs 等后处理工具想看到实时进度时可关闭 |
-A, --charset | 类型:string。默认字符集(utf8 时设置 binmode/mysql_enable_utf8 并执行 SET NAMES UTF8) |
--config | 类型:Array。读取逗号分隔的配置文件列表;如指定必须放在命令行第一个选项的位置 |
-D, --database | 类型:string。使用的数据库 |
-F, --defaults-file | 类型:string。只从给定文件读取 mysql 选项,必须给绝对路径 |
--help | 显示帮助并退出 |
-h, --host | 类型:string。要连接的主机 |
-s, --mysql_ssl | 类型:int。创建 SSL MySQL 连接 |
-p, --password | 类型:string。连接密码(含逗号需转义) |
--pid | 类型:string。创建指定的 PID 文件;冲突规则与自动清理见官方文档 |
-P, --port | 类型:int。连接端口 |
--recurse | 类型:int。层级递归深度,默认无限。参见 --recursion-method |
--recursion-method | 类型:array;默认:processlist,hosts。查找副本的递归方法:processlist(SHOW PROCESSLIST,首选)、hosts(SHOW REPLICAS,MySQL 8.1 前为 SHOW SLAVE HOSTS,服务器使用非标准端口时必需)、none(不查找副本)。首选方法找不到副本时会尝试其他方法 |
--report-format | 类型:string;默认:summary。hostname 只打印主机名树;summary 打印每个副本的设置摘要(版本、Server ID、Uptime、复制状态、binlog 格式、Slave 状态、自增设置等) |
--resolve-address | 把 IP 解析回主机名,报告中同时打印两者(如 10.10.7.14 (dbase1.sample.net));可能增加几秒运行时间 |
--slave-user | 已废弃,用 --replica-user 代替 |
--slave-password | 已废弃,用 --replica-password 代替 |
--replica-user | 类型:string。连接副本使用的用户,可以在副本上使用权限更低的用户,但该用户必须存在于所有副本上 |
--replica-password | 类型:string。连接副本使用的密码,需与 --replica-user 配合,且该用户密码在所有副本上一致 |
--set-vars | 类型:Array。以逗号分隔的 变量=值 列表设置 MySQL 变量;默认 wait_timeout=10000;无法设置时打印警告并继续 |
-S, --socket | 类型:string。连接使用的 socket 文件 |
-u, --user | 类型:string。登录用户(若非当前用户) |
--version | 显示版本并退出 |
DSN 选项
| 键 | DSN 部分 | 说明 |
|---|---|---|
A | charset | 默认字符集 |
D | database | 默认数据库 |
F | mysql_read_default_file | 只从给定文件读取默认选项 |
h | host | 要连接的主机 |
p | password | 连接密码(含逗号需转义) |
P | port | 连接端口 |
S | mysql_socket | 连接使用的 socket 文件 |
u | user | 登录用户(若非当前用户) |
s | mysql_ssl | 创建 SSL 连接 |
其他信息
作者:Baron Schwartz 和 Daniel Nichter
通用说明:已知问题的反馈方式、PTDEBUG 调试安全提示、系统要求基线,见 通用说明。
更多细节请阅读 官方文档。