PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Usando o pt-pg-summary Percona Toolkit for PostgreSQL

O Percona Toolkit é um produto poderoso, gratuito e de código aberto desenvolvido pela Percona. É uma coleção de ferramentas de linha de comando que permitem executar diferentes tarefas do MySQL, MongoDB, PostgreSQL e do sistema que, em geral, são muito complexas para serem executadas manualmente. Ele suporta Percona Server para MySQL, MySQL, MariaDB, PostgreSQL, Percona Server para MongoDB e MongoDB.

Neste blog, mostraremos como instalar o Percona Toolkit e como usar uma nova ferramenta adicionada recentemente no pacote Percona Toolkit chamada pt-pg-summary.

Instalando os kits de ferramentas Percona

Primeiro, vamos ver como instalar Percona Toolkits para poder usar pt-pg-summary. Nesse caso, usaremos o CentOS 7 e o PostgreSQL 12.

Instale o Repositório Percona:

$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Tendo o repositório instalado, você poderá instalar o pacote percona-toolkit:

$ yum install percona-toolkit

Agora você só precisa executá-lo usando os parâmetros corretos.

$ pt-pg-summary --help

usage: pt-pg-summary [<flags>]

Percona Toolkit - PostgreSQL Summary

Flags:

      --help                     Show context-sensitive help (also try --help-long and --help-man).

      --version                  Show application version.

      --databases=DATABASES ...  Summarize this comma-separated list of databases. All if not specified

  -h, --host=HOST                Host to connect to

  -W, --password=PASSWORD        Password to use when connecting

  -p, --port=PORT                Port number to use for connection

      --sleep=10                 Seconds to sleep when gathering status counters

  -U, --username=USERNAME        User for login if not current user

      --disable-ssl              Diable SSL for the connection

      --verbose                  Show verbose log

      --debug                    Show debug information in the logs

Executando kits de ferramentas Percona

Ao executar esta ferramenta, você verá uma saída agrupada pelas seguintes categorias:

  • Porta do banco de dados e Data_Directory
  • Lista de Tablespaces
  • Escravo e o atraso com Mestre
  • Informações do cluster
  • Bancos de dados
  • Taxas de acerto do cache de índice
  • Taxas de acertos do cache de tabela
  • Lista de Wait_events para todo o cluster - todos os bancos de dados
  • Lista de usuários e client_addr ou client_hostname conectados a --all-databases
  • Diferença de contadores após 10 segundos
  • Acesso à tabela por banco de dados
  • Configurações da instância
  • Processa o comando de inicialização

Então, vamos executá-lo em uma instância do PostgreSQL para ver um exemplo:

$ pt-pg-summary -hlocalhost -p5432 -Uadmindb

A primeira ação é coletar as informações do seu servidor PostgreSQL:

INFO[0000] Connecting to the database server using: host=localhost port=5432 user=admindb sslmode=disable dbname=postgres

INFO[0000] Connection OK

INFO[0000] Detected PostgreSQL version: 12.0.5

INFO[0000] Getting global information

INFO[0000] Collecting global counters (1st pass)

INFO[0000] Collecting Cluster information

INFO[0000] Waiting 10 seconds to read  counters

INFO[0000] Collecting Connected Clients information

INFO[0000] Collecting Database Wait Events information

INFO[0000] Collecting Global Wait Events information

...

Depois, mostrará todas as informações coletadas desta forma:

##### --- Database Port and Data_Directory --- ####

+----------------------+----------------------------------------------------+

|         Name         |                      Setting                       |

+----------------------+----------------------------------------------------+

| data_directory       | /var/lib/pgsql/12/data                             |

+----------------------+----------------------------------------------------+

##### --- List of Tablespaces ---- ######

+----------------------+----------------------+-----------------------------+

|         Name         |         Owner        |               Location      |

+----------------------+----------------------+-----------------------------+

| pg_default           | postgres             |                             |

| pg_global            | postgres             |                             |

+----------------------+----------------------+-----------------------------+

##### --- Slave and the lag with Master --- ####

+----------------------+----------------------+------------------+----------+

|  Application Name    |    Client Address    |      State       |   Lag    |

+----------------------+----------------------+------------------+----------+

| pgsql_14_node_0      | 10.10.10.127         | streaming        |     0.00 |

+----------------------+----------------------+------------------+----------+

##### --- Cluster Information --- ####

+---------------------------------------------------------------------------+

 Usename        : admindb

 Time           : 2020-11-12 17:27:18.200552 +0000 UTC

 Client Address : ::1

 Client Hostname:

 Version        : PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8....

 Started        : 2020-11-12 17:07:07.185407 +0000 UTC

 Is Slave       : false

+---------------------------------------------------------------------------+

##### --- Databases --- ####

+----------------------+------------+

|       Dat Name       |    Size    |

+----------------------+------------+

| postgres             |    8193 kB |

| template1            |    8193 kB |

| template0            |    8049 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 |

+----------------------+------------+

##### --- List of Wait_events for the entire Cluster - all-databases --- ####

+----------------------+----------------------+---------+

|   Wait Event Type    |        Event         |  Count  |

+----------------------+----------------------+---------+

| Activity             | BgWriterHibernate    |     1   |

| Activity             | WalWriterMain        |     1   |

| Activity             | LogicalLauncherMain  |     1   |

| Activity             | WalSenderMain        |     1   |

| Client               | ClientRead           |     2   |

| Activity             | CheckpointerMain     |     1   |

| Activity             | AutoVacuumMain       |     1   |

+----------------------+----------------------+---------+

##### --- List of users and client_addr or client_hostname connected to --all-databases --- ####

+----------------------+------------+---------+----------------------+--------+

|   Wait Event Type    |        Client        |         State        |  Count |

+----------------------+------------+---------+----------------------+--------+

| admindb              | 10.10.10.121/32      | idle                 |      2 |

| cmon_replication     | 10.10.10.127/32      | active               |      1 |

| admindb              | ::1/128              | active               |      1 |

+----------------------+------------+---------+----------------------+--------+

##### --- Counters diff after 10 seconds --- ####

+----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+

| Database             | Numbackends | XactCommit | XactRollback | BlksRead    | BlksHit    | TupReturned | TupFetched | TupInserted | TupUpdated | TupDeleted | Conflicts | TempFiles | TempBytes | Deadlocks  |

+----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+

|                      |       0     |       0    |       0      |       0     |     119    |      77     |      31    |       0     |       0    |       0    |       0   |       0   |       0   |       0    |

| postgres             |       0     |      39    |       0      |       0     |    1541    |    1641     |     816    |       0     |       0    |       0    |       0   |       0   |       0   |       0    |

...

##### --- Table access per database --- ####

Database: postgres

+----------------------------------------------------+------+--------------------------------+---------+

|                       Relname                      | Kind |             Datname            |  Count  |

+----------------------------------------------------+------+--------------------------------+---------+

| pg_database_datname_index                          |   i  |                                |       1 |

| pg_class                                           |   r  | postgres                       |       1 |

| pg_database                                        |   r  |                                |       1 |

...

##### --- Instance settings --- ####

                      Setting                                            Value

allow_system_table_mods                       : off

application_name                              :

archive_cleanup_command                       :

archive_command                               : (disabled)

archive_mode                                  : off

archive_timeout                               : 0

array_nulls                                   : on

authentication_timeout                        : 60

autovacuum                                    : on

autovacuum_analyze_scale_factor               : 0.1

…

##### --- Processes start up command --- ####

PID  :    Command line

  5158 : /usr/pgsql-12/bin/postgres -p 5432

Agora que você tem todas essas informações, pode usá-las para diferentes finalidades, como solução de problemas, monitoramento de desempenho ou até mesmo para ter uma visão geral de sua configuração atual. Você também pode complementar isso com outro Percona Toolkit como “pt-summary” para ter mais informações sobre o sistema em que ele está sendo executado.

Conclusão


Percona Toolkit é uma ferramenta poderosa para ajudá-lo com tarefas de gerenciamento de banco de dados. Agora com o pt-pg-summary, você poderá ter informações sobre sua instância do PostgreSQL, podendo integrá-la em um sistema de monitoramento ou até mesmo combinar essa ferramenta com outro componente do Percona Toolkit para coletar ainda mais informações de seus sistemas.