pt-pg-summary
收集 PostgreSQL 集群的信息,输出概览报告。
语法
bash
pt-pg-summary [OPTIONS] [HOST:[PORT]]用法示例
以下命令假定已通过 PGPASSWORD 环境变量、~/.pgpass 或本机 Unix socket 配置好 PostgreSQL 连接;需显式指定连接时用 -h主机 -p端口 -U用户 --ask-pass 或 --defaults-file=/path/pg.conf(命令里不写明文密码)。命令可直接复制,替换其中的主机、库名与路径即可。
场景:汇总本地 PG 实例
巡检或迁移前,快速汇总本机 PostgreSQL 集群的版本、配置、库大小与缓存命中率:
bash
pt-pg-summary场景:汇总远程 PG 实例
要汇总另一台服务器上的实例,用 HOST:PORT 位置参数指定,并交互式输入密码:
bash
pt-pg-summary 10.0.0.5:5432 -U admin --ask-pass场景:只汇总部分业务库
只关心某几个库(避免把模板库、系统库一起拉),用逗号分隔:
bash
pt-pg-summary --databases appdb,reportdb场景:延长状态计数器采样间隔
计数器部分默认两次采样间隔 10 秒;想观察更长时间窗口的增量,可加大间隔:
bash
pt-pg-summary --sleep 30场景:落盘采样便于离线重出报告
把生成摘要所用的数据文件保存到目录,事后不连数据库也能重出报告:
bash
pt-pg-summary --save-samples /data/pg-samples场景:用已保存采样重出报告
已有 --save-samples 落盘的目录时,直接基于这些文件重新生成报告:
bash
pt-pg-summary --read-samples /data/pg-samples选项
| 选项 | 说明 |
|---|---|
--help / --help-long / --help-man | 显示上下文相关的帮助;--help-long、--help-man 输出更详细 |
--version | 显示应用版本并退出 |
--databases | 只汇总该逗号分隔的数据库列表;未指定时汇总所有库 |
-h, --host | 连接的主机或本地 Unix socket |
-W, --password | 连接密码 |
-p, --port | 连接端口 |
--sleep | 收集状态计数器时的睡眠秒数;未指定时睡 10 秒 |
-U, --username | 登录用户(若非当前用户) |
--disable-ssl | 禁用 SSL 连接(默认启用) |
--verbose | 显示详细日志 |
--debug | 日志中显示调试信息 |
--list-encrypted-tables(实验性) | 包含所有库中加密表的列表 |
--ask-pass(实验性) | 连接 PostgreSQL 时交互式询问密码 |
--config(实验性) | 配置文件 |
--defaults-file(实验性) | 只从给定文件读取 PostgreSQL 选项 |
--read-samples(实验性) | 从该目录中的文件生成报告 |
--save-samples(实验性) | 把生成摘要所用的数据文件保存到该目录 |
输出说明
报告包含以下部分(示例输出见官方文档):
| 部分 | 说明 |
|---|---|
| PortAndDatadir | 来自 pg_settings 的端口与数据目录 |
| Tablespaces | pg_catalog.pg_tablespace 中表空间的 owner 与 location |
| ClusterInfo | 来自 pg_stat_activity 的集群信息(用户、时间、客户端地址、版本、启动时间、是否从库等) |
| Databases | 来自 pg_stat_database 的数据库名与大小 |
| IndexCacheHitRatio | 来自 pg_statio_user_indexes 的索引命中率 |
| TableCacheHitRatio | 来自 pg_statio_user_tables 的表缓存命中率 |
| GlobalWaitEvents / DatabaseWaitEvents | 来自 pg_stat_activity(及 pg_locks、pg_stat_database、pg_class)的等待事件 |
| ConnectedClients / Connections | 来自 pg_stat_activity 的客户端计数与状态统计 |
| Counters | 来自 pg_stat_database 的各类计数器(两次采样求差) |
| TableAccess | 来自 pg_locks、pg_stat_database、pg_class 的表访问信息 |
| Setting | 来自 pg_settings 的实例设置 |
| SlaveHosts96 / SlaveHosts10 | 分别对应 PostgreSQL 9.6 / 10 的从库信息 |
| ServerVersion | server_version_num 的值 |
| AllDatabases | pg_database 中非模板库的 datname |
下面是一段真实的 pt-pg-summary 输出开头(节选自官方文档示例,逐字照抄):
text
##### --- Database Port and Data_Directory --- ####
+----------------------+----------------------------------------------------+
| Name | Setting |
+----------------------+----------------------------------------------------+
| data_directory | /var/lib/postgresql/data |
+----------------------+----------------------------------------------------+
##### --- List of Tablespaces ---- ######
+----------------------+----------------------+----------------------------------------------------+
| Name | Owner | Location |
+----------------------+----------------------+----------------------------------------------------+
| pg_default | postgres | |
| pg_global | postgres | |
+----------------------+----------------------+----------------------------------------------------+
##### --- Cluster Information --- ####
+------------------------------------------------------------------------------------------------------+
Usename : postgres
Time : 2020-04-21 13:38:22.770077 +0000 UTC
Client Address : 172.19.0.1
Client Hostname:
Version : PostgreSQL 9.6.17 on x86_64-pc-linux-gnu (Debian 9.6.17-2.pgdg90+1), compiled by
Started : 2020-04-21 13:36:59.909175 +0000 UTC
Is Slave : false
+------------------------------------------------------------------------------------------------------+
##### --- Databases --- ####
+----------------------+------------+
| Dat Name | Size |
+----------------------+------------+
| postgres | 7071 kB |
| template1 | 6961 kB |
| template0 | 6961 kB |
+----------------------+------------+
##### --- Index Cache Hit Ratios --- ####
Database: postgres
+----------------------+------------+
| Index Name | Ratio |
+----------------------+------------+
| index hit rate | 0.00 |
+----------------------+------------+
##### --- Table Cache Hit Ratios --- ####
Database: postgres
+----------------------+------------+
| Index Name | Ratio |
+----------------------+------------+
| cache hit rate | 0.00 |
+----------------------+------------+(以上为节选,完整示例见官方文档)
值得重点看的几处:
- PortAndDatadir:第一段
data_directory来自pg_settings,对应"PortAndDatadir"部分。 - Tablespaces:
pg_default/pg_global的 owner 与 location,对应"Tablespaces"部分。 - ClusterInfo:
Usename/Version/Is Slave等集群信息,对应"ClusterInfo"部分。 - Databases / IndexCacheHitRatio / TableCacheHitRatio:数据库大小、索引与表缓存命中率,对应同名部分。
其他信息
作者:Carlos Salguero
通用说明:已知问题的反馈方式、PTDEBUG 调试安全提示、系统要求基线,见 通用说明。
更多细节请阅读 官方文档。