Автоматизированное обновление СУБД Pangolin
При переходе к данному разделу предполагается, что изучена информация общего блока «Обновление».
Автоматизированное обновление следует запускать на отдельном хосте не входящем в кластер СУБД Pangolin.
Автоматизированное обновление поддерживает обновление исполняемых файлов с обновлением данных системных каталогов и без, а также обновление с переносом данных.
Перед запуском Ansible плейбука, либо перед началом использования инструмента Pangolin Installer, необходимо убедиться, что на всех узлах, в том числе и на том, с которого планируется запуск автоматизированного обновления, установлены все, необходимые для корректной работы, пакеты, указанные в разделе «Список пакетных зависимостей, требуемых для корректной работы Ansible-скриптов».
Выбор способа обновления
Автоматизированное обновление СУБД, как и автоматизированная установка, доступно двумя вариантами:
- Запуск Ansible плейбуков предназначен больше для инженеров. Он более нативный и может использоваться, например, при интеграции его в работу собственных автоматизированных сценариев пользователя.
- Запуск обновления с помощью инструмента Pangolin Installer предназначен скорее для пользователей, которые хотят максимально упростить все процессы по использованию сценариев и не погружаться в тонкости их запуска. Инструмент предоставляет интуитивный запуск сценария, не требующего от пользователя никаких дополнительных шагов, кроме установки rpm/deb-пакета инструмента с помощью пакетного менеджера.
Воспользуйтесь одной из предложенных инструкций, в зависимости от выбора сценария:
Перед выполнением обновления рекомендуется сделать резервную копию базы данных до начала всех работ, чтобы избежать возможных проблем и иметь возможность откатиться к первоначальному состоянию в случае их возникновения.
class: info Схемы процессов различных сценариев обновления СУБД Pangolin автоматизированными скриптами представлены в разделе «Схемы работы сценариев автоматизации СУБД Pangolin».
Обновление при помощи Ansible плейбуков
Описание
В составе дистрибутива (папка installer
) расположены два скрипта, для обновления:
- Скрипт-разведчик — скрипт проверки перед обновлением.
- Скрипт-обновление — основной скрипт, при запуске которого происходит установка обновления.
Процесс разведки и обновления может осуществляться по различным алгоритмам, существенно различающимися по времени выполнения и сложности (зависит от объема и типа изменений между версиями):
- Обновление, при котором осуществляется замена старых файлов (исполняемых, конфигурационных, файлов расширений) на их обновленные версии, и/или добавляются новые утилиты, которые отсутст вовали в предыдущих версиях. Характеризуется малым временем выполнения и возможностью обновления без прерывания работы сервиса.
- Обновление, при котором, помимо обновления файлов, осуществляется изменение структуры или состава данных в системных каталогах обновляемых БД. Характеризуется дополнительным набором предварительным проверок, обновлением с прерыванием работы сервиса и рекомендацией по созданию резервной копии перед обновлением.
Примечание:
Под изменением структуры или состава данных понимается:
- изменение состава системных таблиц;
- изменение состава системных представлений;
- изменение состава системных функций;
- изменение списка встроенных типов данных;
- изменение формата хранения данных (включая изменения в алгоритме шифрования).
Изменение мажорной версии оригинального ядра PostgreSQL в основе СУБД Pangolin требует дополнительных проверок и ограничений.
Общая информация о сценарии разведки
Сценарий обновления состоит из обязательного запуска сценария разведки, в ходе которого пользователь получает всю необходимую ему информацию о состоянии текущего стенда с СУБД, и непосредственно сценария обновления, который можно запускать только когда разведчик выдает «success» сообщение.
Перед началом обновления запустите скрипт-разведчик, который:
-
выводит список установленных
extensions
(в процессе обновления они не будут перенесены в новую версию СУБД Pangolin):- сторонние/не входящие в текущую версию продукта СУБД Pangolin;
- запрещенные расширения;
- расширения, несовместимые с новой версией СУБД Pangolin;
- полный список ограничений, для администраторов автоматизированной системы (в случае их наличия).
-
проверяет:
-
возможность создания резервной копии (для обновления с переносом данных). Локальная РК является необходимым условием для работы механизма автоматического отката к исходной версии СУБД в случае возникновения любых внештатных ситуаций в процессе работы механизма обновления;
Внимание!
Если в настраиваемом конфигурационном слое параметр, отвечающий за создание резервного копирования, будет выключен, то в случае ошибок в процессе обновления ответственность за сохранность данных и восстановление исходной версии СУБД находится на стороне владельца настраиваемого конфигурационного слоя.
-
наличие дубликатов в конфигурационном файле Pangolin Manager (
postgres.yml
); -
наличие специальных символов в конфигурационных файлах
postgres.yml
,pg_hba.conf
,postgresql.conf
; -
количество транзакций с незавершенным статусом;
-
состояние БД на наличие близости к пороговому значению заморозки транзакций
autovacuum_freeze_max_age
; -
полный список проверок представлен в разделе «Проверка готовности к обновлению».
-
В процессе обновления будет обновлена СУБД Pangolin и версии всех утилит, входящих в состав продукта.
При обновлении происходит процесс слияния пользовательских настроек и настроек, отвечающих требованиям новой версии СУБД, в конфигурационных файлах:
postgres.yml
(в случае наличия Pangolin Manager);pangolin-pooler.ini
(в случае наличия Pangolin Pooler);pg_hba.conf
;postgresql.conf
.
Важно!
При обновлении с pgbouncer
на Pangolin Pooler
до обновления patroni
на Pangolin Manager
необходимо:
-
проверить наличие файла
/etc/patroni/reload_pgbouncer.sh
-
изменить содержимое файла:
строку
sudo systemctl restart pgbouncer
заменить наsudo systemctl restart pangolin-pooler
В случае ошибки при обновлении срабатывает механизм прерывания работы обновления версии СУБД, позволяющий остановить процесс обновления и вернуть версию СУБД в состояние до обновления.
Примечание:
Перед запуском скрипта обновления добавьте в файлы
sudoerc
основного узла, реплики и арбитра строкуuser_ansible ALL=(ALL:ALL) NOPASSWD: ALL
.
Процесс обновления при помощи Ansible плейбуков состоит из двух шагов:
- Запуск проверки готовности к обновлению с помощью скрипта-разведчика.
- Запуск сценария обновления с помощью скрипта обновления.
Проверка готовности к обновлению
Проверка по данному сценарию выполняется, если обновление происходит при помощи Ansible плейбука. В случае обновления с использованием Pangolin Installer проверка готовности к обновлению выполняется автоматически.
Автоматизированная проверка готовности к обновлению происходит при помощи запуска скрипта-разведчика (scouting
).
Информация о проверках и возможных ошибках, а также описание запуска скрипта описана в одноименном разделе «Проверка готовности к обновлению».
Запуск сценария обновления
Чтобы выполнить обновление при помощи Ansible плейбука:
-
Перейдите в каталог с распакованным дистрибутивом, а затем в каталог
installer
. -
Перед запуском обновления заполните файл
hosts.ini
в зависимости от установленного решения добавив информацию о хостах и учетных данных пользователя, которые будет использовать Ansible.Данные должны содержать те же параметры, что и при установке. Примеры заполнения файлов описаны в разделе «Автоматизированная установка при помощи Ansible-плейбука».
-
Заполните настраиваемый конфигурационный файл
custom_file_sample.yml
.Предупреждение!При обновлении в секции
3.1.HBA RULES
не поддерживаются следующие параметры:ldap_tls
;cert_dir
;openldap_config
.
-
Запустите Ansible плейбук.
Далее приведены примеры Ansible сценариев для обновления различных решений:
- для cluster-конфигурации
- для решения standalone
ansible-playbook playbook_updates.yaml \
-i inventories/cluster/hosts.ini \
-t always,cluster \
--ask-vault-pass \
-vv \
-e '{"update_complexity_level": "update_complexity_level_2"}' \
-e '{"is_inner_full_backup": true}'
--extra-vars "local_distr_path=${} \
custom_config=${}" \ansible-playbook playbook_updates.yaml \
-i inventories/standalone/hosts.ini \
-t always,standalone \
--ask-vault-pass \
-vv \
-e '{"update_complexity_level": "update_complexity_level_2"}' \
-e '{"is_inner_full_backup": true}'
--extra-vars "local_distr_path=${} \
custom_config=${}" \Описание параметров:
custom_config
- абсолютный путь к файлу конфигурацииcustom_config_sample.yml
;update_complexity_level
- тип обновления (распознается при запуске скрипта-разведчика);is_inner_full_backup
- отвеч ает за создание резервной копии;local_distr_path
- абсолютный путь к загруженному и распакованному дистрибутиву Pangolin.
Значения используемых в команде запуска Ansible ключей:
-i
- путь к inventory-файлу;-e
- переменная для передачи;--extra-vars
- переменные, которые по приоритету важнее переменных из inventory;-t
- теги для запуска;-v
- уровень логирования Ansible. Может быть, как пустым, так и -vvvvvv, где запуск без v - минимальное логирование.
После завершения обновления в его директории
/var/log/pangolin_ansible_logs/
будет сгенерирован файл с названиемpangolin_update_<date>.log
. В нем будет отображаться состояние корректности установленных обновлений.Ниже приведен пример данного файла с конфигурации продукта standalone:
msg:
- RLM.INFO__I01001:Версия ansible корректная.__RLM.INFO
- RLM.INFO__I01008:Проверка ОС прошла успешно. Текущая ОС SberLinux.__RLM.INFO
- RLM.INFO__I01002:Версия 8.8 корректная.__RLM.INFO
- RLM.INFO__I03005:Процесс обновления исполняемых файлов будет сопровождаться запуском скрипта обновления системных данных. Работа скрипта подразумевает полную недоступность кластера до конца работы сценария.__RLM.INFO
- RLM.INFO__I05020:Все необходимые RPM/DEB пакеты для установки или обновления/восстановления найдены.__RLM.INFO
- RLM.INFO__I01005:Файл лицензии license.json найден.__RLM.INFO
- RLM.INFO__I01006:Лицензия валидна.__RLM.INFO
- RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/06.004.00/2025-02-27-T1627/pangolin_dbms/pgdata/06/data/postgresql.conf завершился успешно.__RLM.INFO
- RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/06.004.00/2025-02-27-T1627/pangolin_dbms/pgdata/06/data/pg_hba.conf завершился успешно. __RLM.INFO
- RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/06.004.00/2025-02-27-T1627/pangolin_dbms/pgdata/06/data/postgresql.base.conf завершился успешно.__RLM.INFO
- RLM.INFO__I01009:Процесс мержа конфигурационного файла /pgarclogs/backups/06.004.00/2025-02-27-T1627/pangolin_dbms/pgdata/06/data/postgresql.auto.conf завершился успешно.__RLM.INFO
- RLM.INFO__I03007:Процесс обновления системных каталогов завершился успешно.__RLM.INFO
...
- RLM.OK__S05001:Обновление успешно завершено.__RLM.OK