Skip to content

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 的端口与数据目录
Tablespacespg_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_lockspg_stat_databasepg_class)的等待事件
ConnectedClients / Connections来自 pg_stat_activity 的客户端计数与状态统计
Counters来自 pg_stat_database 的各类计数器(两次采样求差)
TableAccess来自 pg_lockspg_stat_databasepg_class 的表访问信息
Setting来自 pg_settings 的实例设置
SlaveHosts96 / SlaveHosts10分别对应 PostgreSQL 9.6 / 10 的从库信息
ServerVersionserver_version_num 的值
AllDatabasespg_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"部分。
  • Tablespacespg_default/pg_global 的 owner 与 location,对应"Tablespaces"部分。
  • ClusterInfoUsename/Version/Is Slave 等集群信息,对应"ClusterInfo"部分。
  • Databases / IndexCacheHitRatio / TableCacheHitRatio:数据库大小、索引与表缓存命中率,对应同名部分。

其他信息

  • 作者:Carlos Salguero

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

更多细节请阅读 官方文档

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