Часто встречающиеся проблемы и пути их устранения
Ошибки в процессе установки СУБД Pangolin
В разделе описаны часто встречающиесяс проблемы при установке СУБД Pangolin.
Не читается файл лицензий
Возникающая ошибка:
Check license file "/opt/pangolin_license/license.json" : file is not found
Решение:
Проверьте доступность под пользователем postgres
файла лицензии:
-
Указание в переменной
PG_LICENSE_PATH=/opt/pangolin_license/
:[postgres@srv ~]$ echo $PG_LICENSE_PATH
/opt/pangolin_license/При необходимости исправьте:
export PG_LICENSE_PATH=/opt/pangolin_license/
-
Доступность файла лицензии:
[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/0{base_version}/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
и их значения по умолчанию указаны в блоке «Подготовка к ручной установке» раздела «Установка».
Статус состояния узла «Pending restart»
Если по окончанию установки компонента, при просмотре членов кластера и их состояния, появилось значение «Pending restart» необходимо выполнить следующие команды под пользователем postgres:
-
Перечитать конфигурационный файл компонента:
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload clustername
-
Перезапустить узлы кластера:
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart clustername
-
Если статус остался прежним (к примеру, на реплике), рекомендуется ее проинициализировать:
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reinit clustername
Ошибки 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
Решение:
-
Выполните команду:
etcdctl rm /service/clustername/initialize
-
Перезапустите Pangolin Manager:
sudo systemctl restart pangolin-manager
Cбой etcd. Узлы кластера сменили роли
Сообщения в логе имеют вид:
INFO: following a different leader because i am not the healthiest node
Решение:
-
При одном запущенном Pangolin Manager, выполните команду:
etcdctl rm /service/clustername/optime/leader
-
Перезапустите Pangolin Manager:
sudo systemctl restart pangolin-manager
Секционирование
Далее рассматриваются проблемы возникающие при использовании секционирования.
При запуске секционирования возникает ограничение блокировок по транзакциям
Решение:
Увеличить параметр max_locks_per_transactions
до 1024.
Утилита pg_repack входит в бесконечный цикл
Утилита pg_repack
входит в бесконечный цикл при обработке таблиц pg_pathman
, что приводит к реорганизации не отдельной таблицы, а всей базы.
Решение:
Явно исключить pg_pathman
из обработки с помощью ключа -C pg_pathman
.