Чек-лист проверки корректности работы#
Данный раздел содержит список проверок того, что продукт Platform V Pangolin DB работает корректно.
Проверка работоспособности СУБД 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
Показателем корректной работы кластера Pangolin DCS будет являться состояние is healthy на всех узлах кластера.
Проверка работоспособности etcd#
Для проверки работоспособности etcd на любом хосте кластера из под пользователя postgres выполните команду:
ETCDCTL_API=<etcd_version> etcdctl --endpoints https://<master_ip>:<etcd_port>,https://<replica_ip>:<etcd_port>,https://<arbiter_ip>:<etcd_port> --cert-file <path_to_cert> --key-file <path_to_key> --ca-file <path_to_root_cert> cluster-health 2>&1
где:
etcd_version- версия используемого etcd API;master_ip- fqdn/IP-адрес мастера;replica_ip- fqdn/IP-адрес реплики;arbiter_ip- fqdn/IP-адрес арбитра;etcd_port- порт etcd;path_to_cert- путь до сертификата etcd;path_to_key- путь до приватного ключа сертификата etcd;path_to_root_cert- путь до корневого сертификата.
Пример ожидаемого результата:
member <hash> is healthy: got healthy result from https://srv-03:2379
member <hash> is healthy: got healthy result from https://srv-01:2379
member <hash> is healthy: got healthy result from https://srv-02:2379
cluster is healthy
где:
hash- хеш узла кластера
Показателем корректной работы кластера etcd будет являться состояние is healthy на всех узлах кластера.
Проверка работоспособности с Хранилищем секретов#
Чтобы убедиться в том, что Хранилище секретов работает корректно необходимо из под пользователя kmadmin_pg выполнить команду:
/opt/pangolin-security-utilities/bin/setup_kms_credentials show
Пример ожидаемого результата:
┏━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ # ┃ protocol ┃ host ┃ port ┃ root CA path ┃ suffix ┃ prefix ┃ namespace ┃ cred type ┃ auth point ┃ id ┃ status ┃
┣━━━━╋━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━╋━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━┫
┃ 0 ┃ https ┃ <vault_srv> ┃ 8200 ┃ /pg_ssl/root.crt ┃ postgresql ┃ kv ┃ ┃ Userpass Auth Method ┃ userpass ┃ adminencryption ┃ Ok ┃
┗━━━━┻━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━┻━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┛
где:
vault_srv- ip-адрес до vault сервера
Показателем корректной работы будет являться состояние Ok в колонке status.
Проверка работоспособности шифрования паролей#
Если была включена функциональноть шифрования паролей, то для проверки ее корректной работы необходимо на мастере переключиться на пользователя postgres и выполнить команду:
/bin/pg_auth_config check
Пример ожидаемого вывода:
Connection settings for host: "localhost", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "localhost", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-01-ip", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-01-ip", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-02-ip", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-02-ip", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-01", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-01", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "srv-02", port "5433", database "postgres", user "patroni" are OK
Connection settings for host: "srv-02", port "5433", database "replication", user "patroni" are OK
Connection settings for host: "localhost", port "5433", database "postgres", user "profile_tuz" are OK
Connection settings for host: "localhost", port "5433", database "First_db", user "profile_tuz" are OK
Connection settings for host: "srv-01", port "5433", database "postgres", user "profile_tuz" are OK
Connection settings for host: "srv-01", port "5433", database "First_db", user "profile_tuz" are OK
Connection settings for host: "srv-02", port "5433", database "First_db", user "profile_tuz" are OK
Connection settings for host: "srv-02", port "5433", database "postgres", user "profile_tuz" are OK
Connection settings for host: "localhost", port "5433", database "postgres", user "backup_user" are OK
Connection settings for host: "127.0.0.1", port "5433", database "postgres", user "backup_user" are OK
Connection settings for host: "srv-01", port "5433", database "postgres", user "backup_user" are OK
Connection settings for host: "srv-01-ip", port "5433", database "postgres", user "backup_user" are OK
Connection settings for host: "srv-02", port "5433", database "postgres", user "backup_user" are OK
Connection settings for host: "srv-02-ip", port "5433", database "postgres", user "backup_user" are OK
По результатам вывода данной команды необходимо убедиться, что все подключения имеет статус OK.
Действия, в случае неудачной проверки#
В случае, если проверки прошли неудачно, рекомендуем выполнить действия:
Очистить КТС. Для этого необходимо выполнить пункты описанные в разделе Удаление.
Произвести повторный запуск процесса установки.