Percona Toolkit to potężny, darmowy produkt o otwartym kodzie źródłowym opracowany przez firmę Percona. Jest to zbiór narzędzi wiersza poleceń, które umożliwiają wykonywanie różnych zadań MySQL, MongoDB, PostgreSQL i systemowych, które ogólnie są zbyt skomplikowane, aby można je było wykonać ręcznie. Obsługuje Percona Server dla MySQL, MySQL, MariaDB, PostgreSQL, Percona Server dla MongoDB i MongoDB.
W tym blogu pokażemy, jak zainstalować Percona Toolkit i jak korzystać z nowego narzędzia dodanego niedawno w pakiecie Percona Toolkit o nazwie pt-pg-summary.
Instalowanie zestawów narzędzi Percona
Najpierw zobaczmy, jak zainstalować Percona Toolkits, aby móc korzystać z pt-pg-summary. W tym przypadku użyjemy CentOS 7 i PostgreSQL 12.
Zainstaluj repozytorium Percona:
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Po zainstalowaniu repozytorium powinieneś być w stanie zainstalować pakiet percona-toolkit:
$ yum install percona-toolkit
Teraz wystarczy uruchomić go z poprawnymi parametrami.
$ 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
Uruchamianie zestawów narzędzi Percona
Po uruchomieniu tego narzędzia zobaczysz dane wyjściowe pogrupowane według następujących kategorii:
- Port bazy danych i Data_Directory
- Lista przestrzeni tabel
- Slave i lag z Master
- Informacje o klastrze
- Bazy danych
- Wskaźniki trafień w pamięci podręcznej indeksu
- Wskaźniki trafień w pamięci podręcznej tabeli
- Lista Wait_events dla całego Klastra - wszystkie bazy danych
- Lista użytkowników i client_addr lub client_hostname połączonych z --all-databases
- Liczniki różnią się po 10 sekundach
- Dostęp do tabeli na bazę danych
- Ustawienia instancji
- Polecenie uruchamiania procesów
Więc uruchommy go na instancji PostgreSQL, aby zobaczyć przykład:
$ pt-pg-summary -hlocalhost -p5432 -Uadmindb
Pierwszą akcją jest zebranie informacji z serwera 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
...
Następnie pokaże wszystkie zebrane informacje w ten sposób:
##### --- 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
Teraz masz wszystkie te informacje, które możesz wykorzystać do różnych celów, takich jak rozwiązywanie problemów, monitorowanie wydajności, a nawet przegląd bieżącej konfiguracji. Możesz również uzupełnić to innym zestawem Percona Toolkit, takim jak „pt-summary”, aby uzyskać więcej informacji o systemie, w którym działa.
Wnioski
Percona Toolkit to potężne narzędzie pomagające w zadaniach związanych z zarządzaniem bazami danych. Teraz dzięki pt-pg-summary będziesz mógł mieć informacje o swojej instancji PostgreSQL i możesz zintegrować to z systemem monitorowania lub nawet połączyć to narzędzie z innym komponentem Percona Toolkit, aby zebrać jeszcze więcej informacji z twoich systemów.