Обновление бинарных файлов
Актуально для СУБД Pangolin версии 6.x.x.
Скрипт обновления бинарных файлов pangolin_update_binary_script
используется для применения исправлений и доработок в рамках одной мажорной версии.
Ручное обновление
Чтобы выполнить обновление бинарных файлов Pangolin с использованием скрипта:
-
Убедитесь, что на стенде:
- нет задержки репликации на узлах кластера Pangolin;
- Pangolin работоспособный (есть доступ в базу данных);
- отключен мониторинг (фоновых процессов и мониторинг статуса репликации) на время выполнения обновления бинарных файлов;
- отсутствует активное резервное копирование.
-
Скачайте и распакуйте дистрибутив.
-
Из дистрибутива скопируйте rpm-файл файл
platform-v-pangolin-<Версия Pangolin>-<Версия ОС>.rpm
Pangolin на узлы кластера. -
Проверьте наличие утилиты перешифрования в директории
/etc/postgres
на узлах Pangolin. Если файлы утилиты перешифрования есть, то скопируйте их из дистрибутиваpangolin-auth-reencrypt
в каталог/etc/postgres
с правамиroot:root 755
. -
Выполните команду для замены бинарных файлов от суперпользователя на узлах с Pangolin:
sudo yum install platform-v-pangolin-dbms-<Версия Pangolin>-<Версия ОС>.rpm
-
Удалите старый каталог, затем создайте на него символьные ссылки:
sudo rm -rf /usr/pangolin-{version-from}
sudo ln -sf /usr/pangolin-{version-to} /usr/pangolin-{version-from} -
Выполните перезапуск Pangolin (restart) в зависимости от типа установки с помощью сервиса
postgresql.service
илиpatronictl
. -
Проверьте работоспособность Pangolin.
Автоматическое обновление
Руководство по автоматическому обновлению бинарных файлов Pangolin:
-
Проверьте, что на стенде:
- нет задержки репликации на узлах кластера Pangolin;
- Pangolin работоспособный (есть доступ в базу данных);
- отключен мониторинг (фоновых процессов и мониторинг статуса репликации) на время выполнения обновления бинарных файлов;
- отсутствует активное резервное копирование.
-
Скачайте и распакуйте дистрибутив.
-
Скопируйте RPM-файл Pangolin и бинарный файл утилиты
pangolin-auth-reencrypt
в папкуinstaller/scripts_external/pangolin_update_binary_script/roles/update_binary_script/files
. -
Настройте узлы в
installer/scripts_external/pangolin_update_binary_script/inventories
. -
Ознакомьтесь с переменными по умолчанию в файле
scripts_external/pangolin_update_binary_script/playbook_update_binary.yaml
и при необходимости скорректируйте их:- PG_PORT: 5433 #порт postgresql
- REMOTE_TMP: /home/postgres/update_binary_cache_dir #временная директория для хранения rpm на время выполнения скрипта
- RPM_NAME: platform-v-pangolin-dbms-<Версия Pangolin>-<Версия ОС>.rpm #имя rpm-файла
- PGHOME: /usr/pangolin-{version-from} #расположение нового pghome
- PGHOME_OLD: /usr/pangolin-{version-to} #расположение старого pghome
- patroni_conf_dir: /etc/patroni #расположение конфигурационных файлов patroni
- clustername: clustername #имя кластера
- patronictl_path: /usr/patroni/patroni_venv/bin/patronictl #расположение patronictl
- patroni_wait_seconds: 15 #задержка после выполнения команд restart/switchover
- LANG: en_US.UTF-8 # язык интерфейса ОС
- LC_ALL: en_US.UTF-8 # язык интерфейса ОС -
Перейдите в каталог
installer/scripts_external/pangolin_update_binary_script
и запустите playbook:
-
для решения standalone:
ansible-playbook playbook_update_binary.yaml \
-i inventories/standalone/hosts.ini -t standalone \
--flush-cache -vv \
--ssh-extra-args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' -vv -
для кластерной конфигурации:
ansible-playbook playbook_update_binary.yaml \
-i inventories/cluster/hosts.ini -t cluster \
--flush-cache -vv \
--ssh-extra-args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' -vv
Проверки и информационные сообщения процесса обновления
Проверка пароля через параметр postgres_db_pass
Пароль исходной БД должен совпадать с паролем, переданным в пользовательский конфигурационный файл через параметр postgres_db_pass
. В случае несовпадения в лог будет выведена ошибка, блокирующая дальнейшее обновление:
FAIL__Пароль от суперпользователя postgres в пользовательском конфигурационном файле не совпадает с текущим паролем в БД. Скорректируйте значение параметра 'postgres_db_pass' в пользовательском конфигурационном файле.__FAIL