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

Часто встречающиеся проблемы и пути их устранения

Ошибки в процессе установки СУБД Pangolin

В разделе описаны часто встречающиесяс проблемы при установке СУБД Pangolin.

Не читается файл лицензий

Возникающая ошибка:

Check license file "/opt/pangolin_license/license.json" : file is not found

Решение:

Проверьте доступность под пользователем postgres файла лицензии:

  1. Указание в переменной PG_LICENSE_PATH=/opt/pangolin_license/:

    [postgres@srv ~]$ echo $PG_LICENSE_PATH
    /opt/pangolin_license/

    При необходимости исправьте:

    export PG_LICENSE_PATH=/opt/pangolin_license/
  2. Доступность файла лицензии:

    [postgres@srv ~]$ ls -la $PG_LICENSE_PATH
    total 12
    drwxr-xr-x 2 postgres postgres 4096 Apr 12 12:17 .
    drwxr-xr-x. 5 root root 4096 Apr 12 12:14 ..
    -rw-r--r-- 1 postgres postgres 500 Apr 12 12:17 license_trial_202407.json

Скопированы некорректные символы в конфигурационный файл

После запуска в логе появляется запись об ошибках чтения конфигурационного файла в $PGDATA/log/*. Например:

2024-04-12 12:25:50.689 MSK [60403] КОНТЕКСТ: строка 100 файла конфигурации "/pgdata/06/data/pg_hba.conf"
2024-04-12 12:25:50.689 MSK [60403] СООБЩЕНИЕ: неверный метод проверки подлинности " "

Решение:

Скорее всего привнесены лишние символы при копировании строк из инструкции. Необходимо либо скорректировать, либо удалить проблемные строки и ввести их с клавиатуры например через vi.

Ошибка инициализации СУБД

Возникающая ошибка:

initdb: error while loading shared libraries: libjsoncpp.so.1: cannot open shared object file: No such file or directory

Необходимо установить пакет:

sudo apt install libjsoncpp1

Ошибка работы с unzip утилитой

Если возникла ошибка -bash: unzip: command not found – необходимо установить утилиту unzip и вернуться к шагу с распаковкой. Пример команды установки unzip:

sudo apt-get install unzip

Конфликт идентификаторов создаваемых пользователей/групп

При возникновении конфликтов идентификаторов создаваемых пользователей/групп во время установки пакета серверной или клиентской части СУБД (пример ошибки: error: group with gid=26 already exists), переопределите переменные через изменение значений. Пример изменения uid/gid для пользователя postgres:

sudo POSTGRES_USER_GUID=111 POSTGRES_GROUP_GUID=111 dnf install pangolin-dbms-6.5

Список переменных использующий uid/gid и их значения по умолчанию указаны в блоке «Подготовка к ручной установке» раздела «Установка».

Ошибки etcd

В разделе рассматриваются проблемы возникающие при работе компонента etcd.

Несоответствие идентификатора кластера

После запуска кластера возможно появление ошибки в логах sudo journalctl -xe:

sudo journalctl -xe:
etcd[1667]: request cluster ID mismatch (got {хеш} want {хеш})

Решение:

Остановите кластер и пересоздайте директорию /var/lib/etcd:

sudo systemctl stop etcd.service
sudo rm -rf /var/lib/etcd/
sudo mkdir /var/lib/etcd
sudo chown -R etcd:etcd /var/lib/etcd/
sudo systemctl start etcd.service

Несоответствие идентификатора узлов системы

Пример лога:

CRITICAL: system ID mismatch, node pg02 belongs to a different cluster: 6792170493505963560 != 6792187323051185862

Решение:

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

    etcdctl rm /service/clustername/initialize
  2. Перезапустите Pangolin Manager:

    sudo systemctl restart pangolin-manager

Cбой etcd. Узлы кластера сменили роли

Сообщения в логе имеют вид:

INFO: following a different leader because i am not the healthiest node

Решение:

  1. При одном запущенном Pangolin Manager, выполните команду:

     etcdctl rm /service/clustername/optime/leader
  2. Перезапустите Pangolin Manager:

    sudo systemctl restart pangolin-manager

Секционирование

Далее рассматриваются проблемы возникающие при использовании секционирования.

При запуске секционирования возникает ограничение блокировок по транзакциям

Решение:

Увеличить параметр max_locks_per_transactions до 1024.

Утилита pg_repack входит в бесконечный цикл

Утилита pg_repack входит в бесконечный цикл при обработке таблиц pg_pathman, что приводит к реорганизации не отдельной таблицы, а всей базы.

Решение:

Явно исключить pg_pathman из обработки с помощью ключа -C pg_pathman.