Skip to content

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)并找出其副本,当前功能是打印复制层级的树状视图。

源主机可以用两种方式指定:

  1. 标准连接选项:--defaults-file--password--host--port--socket--user
  2. DSN:可以只写主机名(如 server.domain.com1.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;默认:summaryhostname 只打印主机名树;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 部分说明
Acharset默认字符集
Ddatabase默认数据库
Fmysql_read_default_file只从给定文件读取默认选项
hhost要连接的主机
ppassword连接密码(含逗号需转义)
Pport连接端口
Smysql_socket连接使用的 socket 文件
uuser登录用户(若非当前用户)
smysql_ssl创建 SSL 连接

其他信息

  • 作者:Baron Schwartz 和 Daniel Nichter

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

更多细节请阅读 官方文档

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