Percona Toolkit е мощен, безплатен продукт с отворен код, разработен от Percona. Това е колекция от инструменти на командния ред, които ви позволяват да изпълнявате различни MySQL, MongoDB, PostgreSQL и системни задачи, които като цяло са твърде сложни за ръчно изпълнение. Той поддържа Percona Server за MySQL, MySQL, MariaDB, PostgreSQL, Percona Server за MongoDB и MongoDB.
В този блог ще ви покажем как да инсталирате Percona Toolkit и как да използвате нов инструмент, добавен наскоро в пакета Percona Toolkit, наречен pt-pg-summary.
Инсталиране на Percona Toolkits
Първо, нека да видим как да инсталирате Percona Toolkits, за да можете да използвате pt-pg-summary. В този случай ще използваме CentOS 7 и PostgreSQL 12.
Инсталирайте хранилището на Percona:
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Имайки инсталираното хранилище, трябва да можете да инсталирате пакета percona-toolkit:
$ yum install percona-toolkit
Сега просто трябва да го стартирате, като използвате правилните параметри.
$ 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
Изпълнение на Percona Toolkits
Когато стартирате този инструмент, ще видите изход, групиран по следните категории:
- Порт на базата данни и директория_данни
- Списък с пространства за таблици
- Slave и изоставането с Master
- Информация за клъстера
- Бази данни
- Коефициенти на попадения в кеша на индекса
- Коефициенти на посещения в кеша на таблици
- Списък с Wait_events за целия клъстер – всички бази данни
- Списък с потребители и client_addr или client_hostname, свързани с --all-databases
- Брочите се различават след 10 секунди
- Достъп до таблица за база данни
- Настройки на екземпляра
- Команда за стартиране на процеси
И така, нека го стартираме на PostgreSQL екземпляр, за да видим пример:
$ pt-pg-summary -hlocalhost -p5432 -Uadmindb
Първото действие е да съберете информацията от вашия 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
...
След това ще покаже цялата събрана информация по следния начин:
##### --- 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
Сега имате цялата тази информация, можете да я използвате за различни цели като отстраняване на неизправности, наблюдение на производителността или дори за преглед на текущата си конфигурация. Можете също да допълните това с друг инструментариум на Percona като „pt-summary“, за да имате повече информация за системата, в която се изпълнява.
Заключение
Percona Toolkit е мощен инструмент, който да ви помогне със задачи за управление на база данни. Сега с pt-pg-summary ще можете да имате информация за вашия екземпляр на PostgreSQL и можете да го интегрирате в система за наблюдение или дори да комбинирате този инструмент с друг компонент на Percona Toolkit, за да събирате още повече информация от вашите системи.