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

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

  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. Произвести повторный запуск процесса установки.