Percona Toolkit è un prodotto potente, gratuito e open source sviluppato da Percona. È una raccolta di strumenti da riga di comando che consentono di eseguire diverse attività MySQL, MongoDB, PostgreSQL e di sistema che, in generale, sono troppo complesse per essere eseguite manualmente. Supporta Percona Server per MySQL, MySQL, MariaDB, PostgreSQL, Percona Server per MongoDB e MongoDB.
In questo blog, ti mostreremo come installare Percona Toolkit e come utilizzare un nuovo strumento aggiunto di recente nel pacchetto Percona Toolkit chiamato pt-pg-summary.
Installazione di Percona Toolkit
Per prima cosa, vediamo come installare Percona Toolkits per poter usare pt-pg-summary. In questo caso, utilizzeremo CentOS 7 e PostgreSQL 12.
Installa il repository Percona:
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Dopo aver installato il repository, dovresti essere in grado di installare il pacchetto percona-toolkit:
$ yum install percona-toolkit
Ora devi solo eseguirlo utilizzando i parametri corretti.
$ 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
Esecuzione di Percona Toolkit
Quando esegui questo strumento, vedrai un output raggruppato per le seguenti categorie:
- Porta del database e directory_dati
- Elenco dei tablespace
- Slave e il ritardo con il Maestro
- Informazioni sul cluster
- Banche dati
- Rapporti di hit della cache dell'indice
- Rapporti hit della cache della tabella
- Elenco di Wait_events per l'intero Cluster - tutti i database
- Elenco utenti e client_addr o client_hostname collegati a --all-databases
- I contatori differiscono dopo 10 secondi
- Accesso alla tabella per database
- Impostazioni istanza
- Elabora il comando di avvio
Quindi, eseguiamolo su un'istanza PostgreSQL per vedere un esempio:
$ pt-pg-summary -hlocalhost -p5432 -Uadmindb
La prima azione è raccogliere le informazioni dal tuo server 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
...
Quindi, mostrerà tutte le informazioni raccolte in questo modo:
##### --- 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
Ora hai tutte queste informazioni, puoi usarle per diversi scopi come la risoluzione dei problemi, il monitoraggio delle prestazioni o anche per avere una panoramica della tua configurazione attuale. Puoi anche integrarlo con un altro Toolkit Percona come "pt-summary" per avere maggiori informazioni sul sistema in cui è in esecuzione.
Conclusione
Percona Toolkit è un potente strumento per aiutarti con le attività di gestione del database. Ora con pt-pg-summary, sarai in grado di avere informazioni sulla tua istanza PostgreSQL e puoi integrarle in un sistema di monitoraggio o persino combinare questo strumento con un altro componente Percona Toolkit per raccogliere ancora più informazioni dai tuoi sistemi.