Чек-лист проверки корректности работы
Данный раздел содержит список проверок того, что продукт СУБД Pangolin работает корректно.
Проверка работоспособности СУБД Pangolin
Примеры команд для проверки работоспособности СУБД Pangolin:
Проверка подключения к БД
Из под пользователя postgres
на мастере или реплике выполните команду для подключения:
sudo su - postgres
psql -U <username> -d <database_name>
Введите пароль при возникновении запроса:
Password for user <username>:
Ожидаемый результат:
psql (15.5)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
Проверка корректности вывода запросов к БД
Подключитесь к БД через утилиту psql
и выполните команду вывода даты и времени:
SELECT now();
Пример вывода:
now
-------------------------------
2025-02-13 11:50:25.665725+03
(1 row)
Проверка вывода версии СУБД
Подключитесь к БД через утилиту psql
и выполните команду:
SELECT product_version();
Ожидаемый результат:
product_version
---------------------------------
Platform V Pangolin DB <version>
(1 row)
где:
- Platform V Pangolin DB — альтернативное наименование продукта;
- <version> — версия продукта.
Проверка расширений
Подключитесь к БД через утилиту psql
и выполните действия:
-
С помощью метакоманды
\dx
в psql доступен вывод списка установленных расширений:\dx
Пример вывода команды:
List of installed extensions
Name | Version | Schema | Description
----------------------+---------+------------+------------------------------------------------------------------------
pg_cron | 1.6.4 | ext | Job scheduler for PostgreSQL
pg_hint_plan | 1.5 | hint_plan |
pg_outline | 1.1 | outline | Provides ability to alter execution plan of queries.
pg_repack | 1.4.8 | ext | Reorganize tables in PostgreSQL databases with minimal locks
pg_stat_kcache | 2.2.1 | ext | Kernel statistics gathering
pg_stat_statements | 1.10 | ext | track planning and execution statistics of all SQL statements executed
pgse_backup | 1.2 | ext | Common DB objects for Pangolin installation
pgstattuple | 1.5 | ext | show tuple-level statistics
plpgsql | 1.1 | pg_catalog | PL/pgSQL procedural language
psql_lockmon | 1.0 | ext | Lock monitoring extension
psql_rotate_password | 1.0 | ext | psql_rotate_password
(11 rows) -
Список доступных расширений к установке можно вывести запросом:
SELECT name, comment FROM pg_available_extensions ORDER BY name;
Пример вывода команды:
name | comment
-----------------------------------+---------------------------------------------------
adminpack | administrative functions for PostgreSQL
amcheck | functions for verifying relation integrity
anon | Data anonymization tools
<...>
uuid-ossp | generate universally unique identifiers (UUIDs)
xid_promotion | Promote XID
xml2 | XPath querying and XSLT
(89 rows)
Действия, в случае неудачной проверки
В случае, если проверка прошла неудачно, выполните пункты:
- Очистите КТС. Для этого выполните удаление продукта СУБД Pangolin по инструкции.
- Произведите повторный запуск процесса установки.
Проверка работоспособности Pangolin Manager
Проверка состояния REST API сервиса
-
Выполните команду:
curl -s <protocol>://<pangolin_manager_host>:<pangolin_manager_port>/health
Пример вывода, в случае корректной работы:
{"state": "running", "postmaster_start_time": "2025-02-25 14:45:45.193208+03:00", "role": "master", "server_version": 150005, "xlog": {"location": 83886080}, "timeline": 2, "replication": [{"usename": "patroni", "application_name": "srv-02", "client_addr": "srv-02", "state": "streaming", "sync_state": "sync", "sync_priority": 1}], "dcs_last_seen": 1740484140, "database_system_identifier": "<hash>", "patroni": {"version": "3.2.0", "scope": "clustername", "name": "srv-01", "se_version": "2.1.6"}}
Где:
protocol
- http протокол.http
- еслиssl
не был настроен,https
- еслиssl
настроенpangolin_manager_host
- fqdn/IP хоста, на котором установлен Pangolin Manager;pangolin_manager_port
- порт, на котором работает Pangolin manager. По умолчанию - 8008.
Наличие данного вывода указывает на корректность работы REST API. Если похожий вывод не был получен или код ответа на запрос не равен 200 - это говорит о наличии проблемы.
Проверка состояния кластера
-
На мастере или реплике из под пользователя
postgres
выполните команду для получения состояния узлов кластера:/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml list
Пример вывода:
+ Cluster: clustername (<hash>) -------------------+--------------+-----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+----------------------+---------------------------+--------------+-----------+----+-----------+
| srv-01 | srv-01:5433 | Leader | running | 2 | |
| srv-02 | srv-02:5433 | Sync Standby | streaming | 2 | 0 |
+----------------------+---------------------------+--------------+-----------+----+-----------+Где
hash
- хеш кластера.По полученному выводу, необходимо убедится что кластер работает корректно, а именно:
- убедиться в наличии узлов мастера и реплики;
- убедиться, что в ролях для узлов указаны
Leader
иSync Standby
илиReplica
; - убедиться, что лидер находится в состоянии
running
, а реплика -streaming
; - убедиться, что отсутствует задержка между узлами.
Проверка корректности работы с DCS
-
На мастере или реплике из под пользователя
postgres
выполните команду:/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml show-config
Пример ожидаемого вывода:
loop_wait: 10
maximum_lag_on_failover: 1048576
postgresql:
parameters:
auth_activity_period: '60'
authentication_max_workers: '16'
logical_decoding_work_mem: 64MB
max_connections: '110'
max_prepared_transactions: '12'
max_replication_slots: '10'
max_wal_senders: '10'
max_worker_processes: '32'
track_commit_timestamp: false
wal_keep_size: 8GB
wal_level: replica
wal_log_hints: true
use_pg_rewind: true
use_slots: true
retry_timeout: 60
synchronous_mode: true
synchronous_mode_strict: false
ttl: 135В случае проблем, команда выведет ошибку.
Проверка работоспособности Pangolin Pooler
Проверка состояния сервиса
-
На мастере и реплике необходимо выполнить действия:
-
Если служба Pangolin Pooler была запущена из под пользователя
postgres
, то необходимо переключится на данного пользователя и выполнить команду:systemctl status --user pangolin-pooler
-
Если служба Pangolin Pooler была запущена из под пользователя
root
, то необходимо переключится на данного пользователя и выполнить команду:systemctl status pangolin-pooler
Ожидаемый результат:
● pangolin-pooler.service - Pangolin Pooler connection pooling for PostgreSQL
Loaded: loaded (/home/postgres/.config/systemd/user/pangolin-pooler.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2025-02-25 14:56:58 MSK; 6min ago
Process: 1662006 ExecStartPost=/bin/sleep 1 (code=exited, status=0/SUCCESS)
Process: 1662003 ExecStart=/opt/pangolin-pooler/bin/pangolin-pooler -d ${POOLERCONF} (code=exited, status=0/SUCCESS)
Process: 1662001 ExecStartPre=/bin/chown -R postgres:postgres /var/run/user/993/pangolin-pooler (code=exited, status=0/SUCCESS)
Process: 1661999 ExecStartPre=/bin/mkdir -p /var/run/user/993/pangolin-pooler (code=exited, status=0/SUCCESS)
Main PID: 1662005 (pangolin-pooler)
CGroup: /user.slice/user-993.slice/user@993.service/pangolin-pooler.service
└─1662005 /opt/pangolin-pooler/bin/pangolin-pooler -d /etc/pangolin-pooler/pangolin-pooler.iniНеобходимо обратить вниман ие на параметр
Active
. Данный параметр должен быть равенactive (running)
. -
Проверка подключения к БД через Pangolin Pooler
-
Выполните команду:
psql -h <pgbouncer_host> -p <pgbouncer_port> -U <username> -d <database> -c 'SELECT product_version();'
Где:
pgbouncer_host
- fqdn/IP-адрес сервера с установленным Pangolin Pooler;pgbouncer_port
- порт для работы с Pangoolin Pooler. По-умолчанию порт равен 6544;username
- имя пользователя БД;database
- имя БД.
Ожидаемый результат:
product_version
---------------------------
Platform V Pangolin <version>
(1 row)Где <version> — версия продукта.
Проверка работоспособности Pangolin DCS
Проверка состояния кластера DCS
На любом хосте кластера из под пользователя postgres
выполните команду:
/opt/pangolin-manager/bin/pangolin-dcs-ctl endpoint health --endpoints='<master_ip>:<rest_api_port><replica_ip>:<rest_api_port>,<arbiter_ip>:<rest_api_port>'
Где:
master_ip
- fqdn/IP-адрес мастера;replica_ip
- fqdn/IP-адрес реплики;arbiter_ip
- fqdn/IP-адрес арбитра;rest_api_port
- порт DCS для взаимодействия через REST API.
Пример ожидаемого результата:
srv-03:2481 is healthy
srv-01:2481 is healthy
srv-02:2481 is healthy