Перейти к основному содержимому

Чек-лист проверки корректности работы

Данный раздел содержит список проверок того, что продукт СУБД 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 и выполните действия:

  1. С помощью метакоманды \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)
  2. Список доступных расширений к установке можно вывести запросом:

    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)

Действия, в случае неудачной проверки

В случае, если проверка прошла неудачно, выполните пункты:

  1. Очистите КТС. Для этого выполните удаление продукта СУБД Pangolin по инструкции.
  2. Произведите повторный запуск процесса установки.

Проверка работоспособности Pangolin Manager

Проверка состояния REST API сервиса

  1. Выполните команду:

    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 - это говорит о наличии проблемы.

Проверка состояния кластера

  1. На мастере или реплике из под пользователя 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

  1. На мастере или реплике из под пользователя 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

Проверка состояния сервиса

  1. На мастере и реплике необходимо выполнить действия:

    • Если служба 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

  1. Выполните команду:

    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.

Действия, в случае неудачной проверки

В случае, если проверки прошли неудачно, рекомендуем выполнить действия:

  1. Очистить КТС. Для этого необходимо выполнить пункты описанные в разделе Удаление.
  2. Произвести повторный запуск процесса установки.