Схемы работы сценариев автоматизации СУБД Pangolin
Схема работы скриптов автоматизированной установки СУБД Pangolin
Схема процесса автоматизированного развертывания:

Данная схема актуальна для любого типа конфигурации СУБД Pangolin.
Схемы работы скриптов автоматизированного обновления СУБД Pangolin
В данном разделе представлены схемы процесса обновления для различных типов обновления с учетом различных конфигураций экземпляра СУБД.
Обновление с переносом данных
Схема процесса обновления с переносом данных для конфигурации standalone

Описание шагов процесса обновления, представленных на схеме:
Если параметрis_inner_full_backup пользовательского конфигурационного файла установлен в значение true, то в случае возникновения ошибок при обновлении на шаге 12, 13, 14, 18, 20, 21, 22 или 25 будет запущен автоматический откат стенда к исходному состоянию до начала обновления (шаг 26).
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Скачивание дистрибутива Pangolin | Загрузка версии дистрибутива СУБД Pangolin, на которую планируется обновление |
| 2 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 3 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука разведчика |
| 4 | Запуск playbook разведчика обновления по триггеру | Данный Ansible плейбук выполняет необходимые проверки, чтобы убедится что стенд готов к обновлению, а также определяет тип обновления стенда с учетом версии, с которой будет производиться обновление |
| 5 | Вызов процесса обновления | Запуск процесса обновления |
| 6 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 7 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука обновления |
| 8 | Запуск playbook обновления по триггеру | Запуск процесса обновления. В процессе определяется тип обновления, в данном случае обновление производится с переносом данных |
| 9 | Запуск базовых проверок готовности стенда к обновлению | Проведение базовых проверок готовности стенда к обновлению |
| 10 | Создание локальной резервной копии БД и ее валидация | Создание резервной копии. Производится при наличии параметра is_inner_full_backup=true в пользовательском конфигурационном файле |
| 11 | Включение блокировки трафика | В данном сценарии обновления на весь период включена блокировка трафика |
| 12 | Обновление компонента pangolin-auth-reencrypt | Обновление соответствующего компонента |
| 13 | Обновление компонента pangolin-certs-rotate | Обновление соответствующего компонента |
| 14 | Обновление компонента pangolin-security-utilities | Обновление соответствующего компонента |
| 15 | Остановка старой версии Pangolin | Остановка установленной версии СУБД |
| 16 | Обновление файлов конфигурации и установка новой версии СУБД Pangolin | Формирование новых конфигурационных файлов, с учетом используемых ранее настроек для СУБД и установка новой версии Pangolin |
| 17 | Запуск процесса миграции данных | Миграция данных в режиме hardlink |
| 18 | Запуск новой версии Pangolin | Запуск новой версии СУБД Pangolin |
| 19 | Сбор статистики и пересчет индексов БД | Производится сбор статистики и пересчет индексов БД |
| 20 | Обновление компонента Pangolin Pooler | Обновление соответствующего компонента |
| 21 | Обновление утилиты Pangolin Tuner | Обновление соответствующего компонента |
| 22 | Обновление компонента pangolin-diagnostic-tool | Обновление соответствующего компонента |
| 23 | Конфигурирование БД | Производится финальное конфигурирование СУБД, а именно: 1. Обновление каталога безопасности. 2. Формирование итоговых конфигурационных файлов. 3. Обновление расширений. 4. Активация пользователя для созданий резервного копирования (если подключена система резервного копирования). 5. Обновление символических ссылок для рабочих каталогов и перенесенных данных. 6. Настройка «welcome message». 7. Засекречивание паролей в конфигурационных файлах |
| 24 | Выключение блокировки трафика | Выключение ранее установленной блокировки трафика |
| 25 | Обновление компонента pangolin-backup-tools | Обновление соответствующего компонента |
| 26 | Запуск процесса отката стенда к исходному состоянию, при необходимости | Данный этап производится в случае возникновения ошибок при обновлении на шаге 12, 13, 14, 18, 20, 21, 22 или 25. Если параметр is_inner_full_backup пользовательского конфигурационного файла установлен в значение true, то будет запущен автоматический откат стенда к исходному состоянию до начала обновления |
| 27 | Обновление прошло успешно | Обновление завершается |
Схема процесса обновления с переносом данных для конфигурации cluster

Описание шагов процесса обновления, представленных на схеме:
Если параметрis_inner_full_backup пользовательского конфигурационного файла установлен в значение true, то в случае возникновения ошибок при обновлении на шаге 13, 14, 15, 17, 18, 19 26, 27, 31, 32, 33 или 37 будет запущен автоматический откат стенда к исходному состоянию до начала обновления (шаг 39).
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Скачивание дистрибутива Pangolin | Загрузка версии дистрибутива СУБД Pangolin, на которую планируется обновление |
| 2 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 3 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука разведчика |
| 4 | Запуск playbook разведчика обновления по триггеру | Данный Ansible плейбук выполняет необходимые проверки, чтобы убедится в готовности стенда к обновлению, а также определяет тип обновления стенда с учетом версии, с которой будет производиться обновление. Для кластерной конфигурации проверяется задержка репликации между узлами. Полученная информация сравнивается с установленным в конфигурационном файле значением максимальной задержки. При превышении фактического значения над допустимым – выводится ошибка |
| 5 | Вызов процесса обновления | Запуск процесса обновления |
| 6 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 7 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука обновления |
| 8 | Запуск playbook обновления по триггеру | Запуск процесса обновления. В процессе определяется тип обновления, в данном случае обновление производится с переносом данных |
| 9 | Запуск базовых проверок готовности стенда к обновлению | Проведение базовых проверок готовности стенда к обновлению |
| 10 | Настройка процесса pg_receivewal | Настройка и запуск отдельного процесса непрерывного копирования WAL-записей с мастера на реплику (копирование производится в то же пространство, где будет находится локальная РК) |
| 11 | Создание локальной резервной копии БД и ее валидация (на реплике) | Создание резервной копии. Производится при наличии параметра is_inner_full_backup=true в пользовательском конфигурационном файле |
| 12 | Включение блокировки трафика | В данном сценарии обновления на весь период включена блокировка трафика |
| 13 | Обновление компонента pangolin-auth-reencrypt | Обновление соответствующего компонента |
| 14 | Обновление компонента pangolin-certs-rotate | Обновление соответствующего компонента |
| 15 | Обновление компонента pangolin-security-utilities | Обновление соответствующего компонента |
| 16 | Включение PAUSE mode | Включение режима PAUSE mode на Pangolin Manager |
| 17 | Обновление компонента Pangolin Manager на мастере | Обновление соответствующего компонента |
| 18 | Обновление компонента Pangolin Manager на арбитре | Обновление соответствующего компонента |
| 19 | Обновление компонента Pangolin Manager на реплике | Обновление соответствующего компонента |
| 20 | Установка пакета новой версии СУБД Pangolin (на мастере и реплике) | Установка пакета с новой версией СУБД Pangolin на мастер и на реплику |
| 21 | Обновление файлов конфигурации и установка новой версии СУБД Pangolin (на мастере и реплике) | Обновление файлов конфигурации |
| 22 | Остановка старой версии Pangolin (сначала основной узел, затем реплика) | Остановка установленной версии СУБД (действие выполняется первоначально на мастере, затем на реплике) |
| 23 | Остановка Pangolin Manager на мастере и на реплике | Остановка службы компонента Pangolin Manager (действие выполняется первоначально на мастере, затем на реплике) |
| 24 | Запуск процесса миграции данных на мастере | Миграция данных в режиме hardlink. Производится только на мастере |
| 25 | Запуск процесса миграции данных с мастера на реплику | Миграция данных с мастера на реплику с помощью утилиты rsync |
| 26 | Запуск новой версии Pangolin на мастере | Запуск новой версии СУБД Pangolin через Pangolin Manager |
| 27 | Запуск новой версии Pangolin на реплике | Запуск новой версии СУБД Pangolin через Pangolin Manager |
| 28 | Сбор статистики и пересчет индексов БД | Производится сбор статистики и пересчет индексов БД |
| 29 | Перечитывание конфигурационного файла Pangolin Manager и перезапуск службы | Выполняется перечитывание конфигурационного файла компонента и перезапуск службы Pangolin Manager (действия выполняется первоначально на мастере, затем на реплике) |
| 30 | Синхронизация кластера (выполняется на реплике) | Выполняется проверка синхронизации кластера на предмет отсутствия задержки между узлами. Проверка выполняется на реплике |
| 31 | Обновление компонента Pangolin Pooler | Обновление соответствующего компонента |
| 32 | Обновление утилиты Pangolin Tuner | Обновление соответствующего компонента |
| 33 | Обновление компонента pangolin-diagnostic-tool | Обновление соответствующего компонента |
| 34 | Выключение PAUSE mode | Выключение режима PAUSE mode на Pangolin Manager |
| 35 | Конфигурирование БД | Производится финальное конфигурирование СУБД, а именно: 1. Обновление каталога безопасности. 2. Формирование итоговых конфигурационных файлов. 3. Обновление расширений. 4. Активация пользователя для созданий резервного копирования (если подключена система резервного копирования). 5. Обновление символических ссылок для рабочих каталогов и перенесенных данных. 6. Настройка «welcome message». 7. Засекречивание паролей в конфигурационных файлах |
| 36 | Выключение блокировки трафика | Выключение ранее установленной блокировки трафика |
| 37 | Обновление компонента pangolin-backup-tools | Обновление соответствующего компонента |
| 38 | Отключение процесса pg_receivewal | Выключение ранее активной службы pg_receivewal |
| 39 | Запуск процесса отката стенда к исходному состоянию, при необходимости | Данный этап производится в случае возникновения ошибок при обновлении на шаге 13, 14, 15, 17, 18, 19 26, 27, 31, 32, 33 или 36. Если параметр is_inner_full_backup пользовательского конфигурационного файла установлен в значение true, то будет запущен автоматический откат стенда к исходному состоянию до начала обновления |
| 40 | Обновление прошло успешно | Обновление завершается |
Обновление исполняемых файлов
Схема процесса обновления исполняемых файлов для конфигурации standalone

Описание шагов процесса обновления, представленных на схеме:
В случае возникновения ошибок при обновлении на шаге 11, 12, 13, 16, 17, 18, 19 или 21 будет запущен автоматический откат стенда к исходному состоянию (шаг 22).
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Скачивание дистрибутива Pangolin | Загрузка версии дистрибутива СУБД Pangolin, на которую планируется обновление |
| 2 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 3 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука разведчика |
| 4 | Запуск playbook разведчика обновления по триггеру | Данный Ansible плейбук выполняет необходимые проверки, чтобы убедится что стенд готов к обновлению, а также определяет тип обновления стенда с учетом версии, с которой будет производиться обновление |
| 5 | Вызов процесса обновления | Запуск процесса обновления |
| 6 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 7 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука обновления |
| 8 | Запуск playbook обновления по триггеру | Запуск процесса обновления. В процессе определяется тип обновления, в данном случае производится обновление исполняемых файлов |
| 9 | Запуск базовых проверок готовности стенда к обновлению | Проведение базовых проверок готовности стенда к обновлению |
| 10 | Запуск скрипта inplace_upgrade.sh с ключом info | Этот этап определяет необходимость проведения обновления с помощью утилиты pg_inplace_upgrade. Результатом данного этапа могут быть 3 значения:1. Код состояния 0. Запуск утилиты требуется, базовые проверки готовности стенда к обновлению системных данных прошли успешно.2. Код состояния 1. Запуск утилиты требуется, но базовые проверки готовности стенда к обновлению системных данных прошли неуспешно.3. Код состояния 2. Запуск утилиты не требуется |
| 11 | Обновление компонента pangolin-auth-reencrypt | Обновление соответствующего компонента |
| 12 | Обновление компонента pangolin-certs-rotate | Обновление соответствующего компонента |
| 13 | Обновление компонента pangolin-security-utilities | Обновление соответствующего компонента |
| 14 | Остановка старой версии Pangolin | Остановка установленной версии СУБД |
| 15 | Обновление файлов конфигурации и установка новой версии СУБД Pangolin | Формирование новых конфигурационных файлов, с учетом используемых ранее настроек для СУБД и установка новой версии Pangolin |
| 16 | Запуск новой версии Pangolin | Запуск новой версии СУБД Pangolin |
| 17 | Обновление компонента Pangolin Pooler | Обновление соответствующего компонента |
| 18 | Обновление утилиты Pangolin Tuner | Обновление соответствующего компонента |
| 19 | Обновление компонента pangolin-diagnostic-tool | Обновление соответствующего компонента |
| 20 | Конфигурирование БД | Производится финальное конфигурирование СУБД, а именно: 1. Восстановление конфигурационных файлов. 2. Обновление расширений. 3. Удаление исходных пакетов серверной и клиентской части. 4. Настройка «welcome message». 5. Засекречивание паролей в конфигурационных файлах |
| 21 | Обновление компонента pangolin-backup-tools | Обновление соответствующего компонента |
| 22 | Запуск процесса отката стенда к исходному состоянию, при необходимости | Данный этап производится в случае возникновения ошибок при обновлении на шаге 11, 12, 13, 16, 17, 18, 19 или 21 |
| 23 | Обновление прошло успешно | Обновление завершается |
Схема процесса обновления исполняемых файлов для конфигурации cluster

Описание шагов процесса обновления, представленных на схеме:
В случае возникновения ошибок при обновлении на шаге 11, 12, 13, 16, 22, 26, 27, 28 или 30 будет запущен автоматический откат стенда к исходному состоянию до начала обновления (шаг 31).
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Скачивание дистрибутива Pangolin | Загрузка версии дистрибутива СУБД Pangolin, на которую планируется обновление |
| 2 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 3 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука разведчика |
| 4 | Запуск playbook разведчика обновления по триггеру | Данный Ansible плейбук выполняет необходимые проверки, чтобы убедится что стенд готов к обновлению, а также определяет тип обновления стенда с учетом версии, с которой будет производиться обновление |
| 5 | Вызов процесса обновления | Запуск процесса обновления |
| 6 | Проверка переменных узла, полученных в качестве аргументов | Проверка наличия необходимых переменных и их корректности |
| 7 | Передача групповых переменных | Формирование и передача переменных необходимых для запуска Ansible плейбука обновления |
| 8 | Запуск playbook обновления по триггеру | Запуск процесса обновления. В процессе определяется тип обновления, в данном случае производится обновление исполняемых файлов |
| 9 | Запуск базовых проверок готовности стенда к обновлению | Проведение базовых проверок готовности стенда к обновлению |
| 10 | Запуск скрипта inplace_upgrade.sh с ключом info | Этот этап определяет необходимость проведения обновления с помощью утилиты pg_inplace_upgrade. Результатом данного этапа могут быть 3 значения:1. Код состояния 0. Запуск утилиты требуется, базовые проверки готовности стенда к обновлению системных данных прошли успешно.2. Код состояния 1. Запуск утилиты требуется, но базовые проверки готовности стенда к обновлению системных данных прошли неуспешно.3. Код состояния 2. Запуск утилиты не требуется |
| 11 | Обновление компонента pangolin-auth-reencrypt на всех узлах | Обновление соответствующего компонента |
| 12 | Обновление компонента pangolin-certs-rotate на всех узлах | Обновление соответствующего компонента |
| 13 | Обновление компонента pangolin-security-utilities на всех узлах | Обновление соответствующего компонента |
| 14 | Включение PAUSE mode | Включение режима PAUSE mode на Pangolin Manager |
| 15 | Обновление компонента Pangolin Manager на всех узлах | Обновление компонента Pangolin Manager на всех узлах в следующем порядке: первоначально на мастере, затем на арбитре и после на реплике |
| 16 | Выключение PAUSE mode | Выключение режима PAUSE mode на Pangolin Manager |
| 17 | Настройка и включение процесса pg_receivewal | Настройка и запуск отдельного процесса непрерывного копирования WAL-записей с мастера на реплику (копирование производится в то же пространство, где будет находится локальная РК). Действие выполняется на текущей реплике |
| 18 | Включение PAUSE mode и выключение SYNCHRONOUS mode | Включение режима PAUSE mode и выключение SYNCHRONOUS mode на Pangolin Manager |
| 19 | Обновление файлов конфигурации и установка новой версии СУБД Pangolin | Формирование новых конфигурационных файлов, с учетом используемых ранее настроек для СУБД и установка новой версии Pangolin. Обновление производится на реплике |
| 20 | Запуск новой версии Pangolin | Запуск новой версии СУБД Pangolin. Действие выполняется на текущей реплике |
| 21 | Выключение PAUSE mode и включение SYNCHRONOUS mode | Выключение режима PAUSE mode и включение SYNCHRONOUS mode на Pangolin Manager |
| 22 | Синхронизация кластера | Выполняется проверка синхронизации кластера на предмет отсутствия задержки между узлами |
| 23 | Выключение процесса pg_receivewal | Производится выключение раннее включенной службы pg_receivewal |
| 24 | Проверка обновления всех узлов СУБД | В случае если не все узлы кластера СУБД обновлены, производится переключение лидера и продолжение обновления |
| 25 | Переключение лидера на обновленный узел | Выполняется switchover кластера, в случае, если не все узлы обновлены |
| 26 | Обновление компонента Pangolin Pooler на всех узлах | Обновление соответствующего компонента |
| 27 | Обновление утилиты Pangolin Tuner на всех узлах | Обновление соответствующего компонента |
| 28 | Обновление компонента pangolin-diagnostic-tool на всех узлах | Обновление соответствующего компонента |
| 29 | Конфигурирование БД | Производится финальное конфигурирование СУБД, а именно: 1. Восстановление конфигурационных файлов. 2. Обновление расширений. 3. Удаление исходных пакетов серверной и клиентской части. 4. Настройка «welcome message». 5. Засекречивание паролей в конфигурационных файлах. 6. Восстановление исходной конфигурации DCS |
| 30 | Обновление компонента pangolin-backup-tools на всех узлах | Обновление соответствующего компонента |
| 31 | Запуск процесса отката стенда к исходному состоянию, при необходимости | Данный этап производится в случае возникновения ошибок при обновлении на шаге 11, 12, 13, 16, 22, 26, 27, 28 или 30 |
| 32 | Обновление прошло успешно | Обновление завершается |
Схема процесса обновления исполняемых файлов с использованием утилиты inplace_upgrade
В данном разделе представлена схема обновления и схема отката с использованием утилиты pg_inplace_upgrade. Схемы включают в себя все возможные типы конфигурации СУБД Pangolin.

Описание шагов процесса обновления, представленных на схеме:
В случае возникновения ошибок при обновлении будет запущен автоматический откат стенда к исходному состоянию до начала обновления. Схема подобного отката представлена вподразделе далее.
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Установка rpm/deb-пакета с виртуальным окружением | Пакет необходим для запуска Ansible-скриптов, содержит pip-зависимости |
| 2 | Проверка наличия дистрибутива Pangolin | Проверка наличия дистрибутива СУБД Pangolin, на которую планируется обновление |
| 3 | Создание каталога или локального репозитория | Должен содержать rpm/deb-пакеты компонентов, необходимых к установке на всех стендах. Список компонентов определяется исходя из конфигурации стенда |
| 4 | Проверка наличия конфигурационного файла | Подготовка наличия заполненного пользовательского конфигурационного файла |
| 5 | Формирование строки запуска | Формирование строки запуска |
| 6 | Запуск playbook обновления | Запуск процесса обновления с помощью Ansible плейбука. В данном случае производится обновление исполняемых файлов |
| 7 | Запуск базовых проверок готовности стенда к обновлению | Проведение базовых проверок готовности стенда к обновлению. Список проверок может отличаться в зависимости от конфигурации стенда |
| 8 | Запуск скрипта inplace_upgrade.sh с ключом info | На данном этапе производятся следующие действия: - проверка доступности рабочих каталогов скрипта; - проверка наличия всех скриптов для корректного запуска; - проверка наличия изменения системного каталога относительно новой версии системного каталога |
| 9 | Включение блокировки трафика | В данном сценарии обновления на весь период включена блокировка трафика |
| 10 | Проверка состояния полной синхронизации реплики | Проверка состояния узла реплики в sync_standby и lag = 0. Время ожидания синхронизации регулируется параметром в кастомном конфигурационном файле: patroni_lag_checker.retry_check |
| 11 | Создание локальной резервной копии БД | Снятие полной резервной копии |
| 12 | Подготовка файла с лицензией | Проверка валидности лицензии по пути указанному до JSON-файл с лицензией |
| 13 | Обновление компонента pangolin-auth-reencrypt на всех узлах | Обновление соответствующего компонента |
| 14 | Обновление компонента pangolin-certs-rotate на всех узлах | Обновление соответствующего компонента |
| 15 | Обновление компонента pangolin-security-utilities на всех узлах | Обновление соответствующего компонента |
| 16 | Обновление компонента Pangolin Manager | Обновление компонента (при кластерной конфигурации). На данном этапе производятся следующие действия: - включение режима паузы ( PAUSE mode) для Pangolin Manager;- остановка службы; - обновление rpm/deb-пакета; - копирование конфигурационного файла после объединения; - обновление файла .bash_profile;- выключение режима паузы для Pangolin Manager; - перезагрузка БД |
| 17 | Подготовительные действия перед обновлением СУБД | На данном этапе производятся следующие действия: - включение режима паузы ( PAUSE mode) для Pangolin Manager;- конфигурирование файла .bash_profile;- проверка корректности ролей кластера. В случае, если роли в момент обновления поменялись местами, производится переключение (switch); - сохранение исходных значений для synchronous_commit / autovacuum / cron.database_name;- сохранение исходной конфигурации DCS, если кластерная конфигурация; - создание слота репликации tmp_update_slot |
| 18 | Остановка службы crond | Остановка службы crond |
| 19 | Выключение кластера СУБД Pangolin | Остановка узлов кластера СУБД |
| 20 | Обновление серверной и клиентской части | Обновление соответствующего rpm/deb-пакета |
| 21 | Обновление компонента pangolin-timescaledb | Обновление соответствующего rpm/deb-пакета |
| 22 | Копирование документации | Копирование документации новой версии |
| 23 | Копирование содержимого 3rd Party в PGHOME | Копирование содержимого 3rd Party новой версии в каталог PGHOME |
| 24 | Выключение параметров synchronous_commit, autovacuum и cron.database_name | Выключение параметров synchronous_commit / autovacuum / cron.database_name=template1 |
| 25 | Запуск скрипта inplace_upgrade.sh с ключом update | На данном этапе производятся следующие действия только на основном узле (мастер): - Резервная копия системных файлов для восстановления, в случае неудачного завершения процесса; - Изменение версии системного каталога; - Переименование путей до табличных пространств, относительно новой версии системного каталога; - Запуск узлов БД; - Снятие дампа исходного системного каталога для проверки целостность системных данных; - Действие по добавлению новых системных объектов одной транзакцией в binary_mode;- Снятие дампа обновленного системного каталога для проверки целостность системных данных; - Запуск тестов по проверки корректности обновления системных данных |
| 26 | Запуск процесса восстановления | Запуск процесса отката стенда к исходному состоянию, в случае возникновения ошибок при обновлении на шаге 25 |
| 27 | Запуск скрипта inplace_upgrade.sh с ключом update | На данном этапе производятся следующие действия только на реплике: - Изменение версии системного каталога; - Переименование путей до табличных пространств, относительно новой версии системного каталога |
| 28 | Включение кластера СУБД Pangolin | Запуск всех узлов кластера СУБД. Происходит проверка корректности ролей кластера. В случае, если роли в момент обновления поменялись местами, производится переключение (switch) |
| 29 | Включение SYNCHRONOUS mode (synchronous_mode и synchronous_mode_strict) | Включение SYNCHRONOUS mode для синхронизации добавленных системных данных каталога |
| 30 | Проверка состояния синхронизации реплики | Проверка (по API Pangolin Manager) статус роли реплики. Время ожидания синхронизации регулируется параметром в кастомном конфигурационном файле: patroni_lag_checker.retry_check |
| 31 | Восстановление исходных значений для synchronous_commit / autovacuum / cron.database_name | Восстановление исходных значений для synchronous_commit / autovacuum / cron.database_name и удаление временного слота репликации tmp_update_slot |
| 32 | Обновление компонента Pangolin Pooler | Обновление соответствующего компонента |
| 33 | Обновление утилиты Pangolin Tuner | Обновление соответствующего компонента |
| 34 | Обновление компонента pangolin-diagnostic-tool | Обновление соответствующего компонента |
| 35 | Конфигурирование БД | Производится финальное конфигурирование СУБД, а именно: 1. Восстановление конфигурационных файлов после объединения. 2. Обновление расширений. 3. Удаление исходных пакетов серверной и клиентской части. 4. Настройка «welcome message». 5. Засекречивание паролей в конфигурационных файлах. 6. Восстановление исходной конфигурации DCS (при кластерной конфигурации) |
| 36 | Обновление компонента pangolin-backup-tools на всех узлах | Обновление соответствующего компонента |
| 37 | Выключение блокировки трафика и запуск службы crond | Выключение ранее установленной блокировки трафика и запуск службы crond |
| 38 | Обновление прошло успешно | Обновление завершается |
Схема процесса восстановления в случае неудачного обновления с использованием утилиты inplace_upgrade

Описание шагов процесса отката, представленных на схеме:
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Проверки возможности запуска автоматического восстановления | На данном этапе производятся следующие действия: - Вычисления текущего места «падения» и определения списка компонентов для восстановления; - В случае невозможности запуска скрипта автоматического отката, восстановить стенд необходимо будет в ручном режиме |
| 2 | Восстановление компонента pangolin-diagnostic-tool | Восстановление соответствующего исходного компонента |
| 3 | Восстановление серверной и клиентской части | Восстановление соответствующего исходного rpm/deb-пакета |
| 4 | Запуск скрипта inplace_upgrade.sh с ключом reset | На данном этапе происходит восстановление файлов системных каталогов и файла pg_control из РК на узле мастер, сделанной во время запуска скрипта с командой update |
| 5 | Включение кластера СУБД Pangolin | Запуск узлов кластера СУБД |
| 6 | Обновление компонента Pangolin Manager | Восстановление исходного компонента (при кластерной конфигурации) |
| 7 | Восстановление компонента pangolin-security-utilities на всех узлах | Восстановление соответствующего исходного компонента |
| 8 | Восстановление компонента pangolin-auth-reencrypt на всех узлах | Восстановление соответствующего исходного компонента |
| 9 | Восстановление компонента pangolin-certs-rotate на всех узлах | Восстановление соответствующего исходного компонента |
| 10 | Включение блокировки трафика | Выключение ранее установленной блокировки трафика |
Обновление со сторонними расширениями
Схема процесса разведки перед обновлением со сторонними расширениями
Необходимые условия:
- КТС или серверы с поддерживаемой версией ОС в версии продукта, в которой реализуется данная функциональность.
- Наличие ранее установленной не последней версии СУБД Pangolin.
- Наличие установленных сторонних расширений.

Табличное описание процесса:
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Установка rpm/deb-пакета с виртуальным окружением | Содержит pip-зависимости. Необходим для запуска Ansible-скриптов |
| 2 | Проверка наличия дистрибутива Pangolin | Проверка наличия дистрибутива Pangolin |
| 3 | Создание каталога или локального репозитория | Должен содержать rpm/deb-пакеты компонентов, необходимых к установке на всех стендах. Список компонентов определяется исходя из конфигурации развертывания |
| 4 | Проверка наличия подготовленного конфигурационного файла | Подготовка наличия заполненного пользовательского конфигурационного файла |
| 5 | Формирование строки запуска | Формирование строки запуска |
| 6 | Запуск playbook разведчика | Запуск плейбука разведчика |
| 7 | Запуск assert проверок | Запуск критически важных проверок, без которых результаты последующих проверок могут стать недействительными. Если минимальный набор критических проверок не пройден, сценарий завершает работу |
| 8 | Запуск common проверок | Запуск общих проверок, которые могут включать проверку настроек Linux системы, свободного места, наличия зависимостей компонентов и так далее |
| 9 | Запуск проверок компонента pangolin-backup-tools | Запуск проверок компонента pangolin-backup-tools |
| 10 | Запуск проверок компонента pangolin-pooler | Запуск проверок компонента pangolin-pooler |
| 11 | Запуск проверок компонента pangolin-manager | Запуск проверок компонента pangolin-manager |
| 12 | Запуск проверок компонента pangolin-extensions | На данном этапе производятся следующие действия: - проверка наличия сторонних расширений в БД; - сохранение информации об установленных сторонних расширениях; - проверка наличия исходных rpm/deb-пакетов расширений на стенде; - сохранение информации об установленных rpm/deb-пакетов расширений; - проверка возможности запуска обновления с установленными сторонними расширениями; - проверка исходной версии стороннего расширения на возможность обновления согласно матрице совместимости; - проверка допустимых версий зависимостей расширения относительно исходной версии расширения, если такие зависимости есть. Согласно матрице совместимости зависимостей расширения; - проверка в текущей БД типов данных postgis, хранящихся в виде массива, и основанных на них объектов физического хранения;- проверка, что в текущей БД и при текущем пользователе схема, в которой создано расширение PostGIS включено в search_path (иначе остальные расширения не могут быть загружены, они не найдут типы данных и spatial_ref_sys);- печать информационного сообщения с информацией об изменениях, в следующих функциях в схеме расширения для PostGIS;- печать информационного сообщения с информацией об изменениях, в следующих функциях в схеме расширения для pgrouting;- проверка в текущей БД типов данных PostGIS с предопределенным SRID, и основанных на них объектах всех типов;- проверка, что пользователь не внес свои SRID, несовместимые с PostGIS и блокирующие установку |
| 13 | Запуск проверок компонента pangolin-dbms | Запуск проверок компонента серверной и клиентской части pangolin-dbms. Также на данном этапе при обновлении с переносом данных запускается pg_upgrade check и загрузка дампа схемы в тестовую базу |
| 14 | Запуск печати информационных сообщений | Вывод сообщений уровней info, error и warning, собранных в процессе работы скрипта разведчика |
Схема процесса обновления с переносом данных стендов со сторонними расширениями
Необходимые условия:
- КТС или серверы с поддерживаемой версией ОС в версии продукта, в которой реализуется данная функциональность.
- Наличие ранее установленной не последней версии СУБД Pangolin.
- Наличие установленных сторонних расширений.

Табличное описание процесса:
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Установка rpm/deb-пакета с виртуальным окружением | Содержит pip зависимости. Необходим для запуска Ansible-скриптов |
| 2 | Проверка наличия дистрибутива Pangolin | Проверка наличия дистрибутива Pangolin |
| 3 | Создание каталога или локального репозитория | Должен содержать rpm/deb-пакеты компонентов, необходимых к установке на всех стендах. Список компонентов определяется исходя из конфигурации развертывания |
| 4 | Проверка наличия подготовленного конфигурационного файла | Подготовка наличия заполненного пользовательского конфигурационного файла |
| 5 | Формирование строки запуска | Формирование строки запуска |
| 6 | Запуск playbook обновления | Запуск Ansible плейбука обновления СУБД Pangolin (playbook_update.yaml) |
| 7 | Запуск базовых проверок готовности стенда к обновлению | Список проверок может отличаться в зависимости от конфигурации развертывания. На данном этапе также производится создание резервной копии рабочих файлов компонентов. Включая проверку наличия в репозитории исходных rpm/deb-пакетов сторонних расширений, если таковые имеются |
| 8 | Включение блокировки трафика | Включение блокировки трафика |
| 9 | Подготовка файла с лицензией | Проверка валидности лецензии |
| 10 | Установка rpm/deb-пакетов сторонних расширений | Установка новых версии rpm/deb-пакетов сторонних расширений в случае их наличия в БД |
| 11 | Обновление rpm/deb-пакета компонента pangolin-auth-reencrypt | Обновление rpm/deb-пакета |
| 12 | Обновление rpm/deb-пакета компонента pangolin-certs-rotate-agent | Обновление rpm/deb-пакета |
| 13 | Обновление rpm/deb-пакета компонента pangolin-security-utilities | Обновление rpm/deb-пакета |
| 14 | Обновление rpm/deb-пакета компонента pangolin-manager-venv | Обновление rpm/deb-пакета |
| 15 | Обновление rpm/deb-пакета компонента pangolin-manager | Обновление rpm/deb-пакета |
| 16 | Обновление rpm/deb-пакета серверной и клиентской части | Обновление rpm/deb-пакета |
| 17 | Обновление rpm/deb-пакета pangolin-auth-password | Обновление rpm/deb-пакета |
| 18 | Обновление rpm/deb-пакета pangolin-timescaledb | Обновление rpm/deb-пакета |
| 19 | Инициализация кластера БД на мастере | Инициализация кластера баз данных с локалью и кодировкой исходной БД |
| 20 | Подготовка стенда к миграции данных | На данном этапе производятся следующие действия: - подготовка новых конфигурационных файлов БД на основе исходных; - выключение autovacuum/archive_mode/cron.database_name в исходной и новой версии БД;- настройка старого и нового pg_hba для корректной миграции;- включение блокировки загрузки сторонних расширений через параметр blocked_extensions_prefix;- удаление сторонних расширений в конфигурационном файле postgresql.conf (для любой конфигурации) и postgres.yml (для конфигурации с pangolin-manager) из shared_preload_libraries/session_preload_libraries;- остановка службы cron;- включение режима паузы для pangolin-manager, при кластерной конфигурации;- перевод кластера в асинхронный режим, при кластерной конфигурации; - остановка СУБД на мастере; - остановка СУБД на реплике; - обновление .bash_profile |
| 21 | Миграция данных с помощью pg_upgrade на мастере | На данном этапе производятся следующие действия: - запуск pg_upgrade с функцией --link;- обновление ссылок до табличных пространств |
| 22 | Миграция данных с помощью rsync | На данном этапе производятся следующие действия: - создание временных ssh-ключей; - запуск rsync с функциями --hard-links, --progress, --size-only, --no-inc-recursive, --delete. Функции --checksum и --compress регулируются через кастомный файл |
| 23 | Завершающие действия после миграции данных | На данном этапе производятся следующие действия: - восстановление исходных конфигурационных файлов БД; - очистка старого кластера Pangolin Manager, при кластерной конфигурации запуск СУБД на мастере запуск СУБД на реплике запуск reindex на мастере запуск vacuumdb на мастере обновление расширения timescaledb в БД, при необходимости |
| 24 | Обновление rpm/deb-пакета компонента pangolin-pooler | Обновление rpm/deb-пакета |
| 25 | Обновление rpm/deb-пакета компонента pangolin-tuner | Обновление rpm/deb-пакета |
| 26 | Обновление rpm/deb-пакета компонента pangolin-diagnostic-tool | Обновление rpm/deb-пакета |
| 27 | Обновление rpm/deb-пакета компонента pangolin-backup-tools | Обновление rpm/deb-пакета |
| 28 | Завершающие действия после обновления | На данном этапе производятся следующие действия: - обновление расширений; - восстановление значений в конфигурационных файлах для параметров shared_preload_libraries/session_preload_libraries;- шифрование паролей в конфигурационных файлах; - восстановление исходного patroni.dynamic.json;- настройка «welcome message»; - переименование PGDATA/PGHOME;- запуск службы cron;- удаление исходных пакетов серверной и клиентской части |
| 29 | Выключение блокировки трафика | Выключение блокировки трафика |
Схема процесса обновления данных системного каталога для стендов со сторонними расширениями
Необходимые условия:
- КТС или серверы с поддерживаемой версией ОС в версии продукта, в которой реализуется данная функциональность.
- Наличие ранее установленной не последней версии СУБД Pangolin.
- Наличие установленных сторонних расширений.

Табличное описание процесса:
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Установка rpm/deb-пакета с виртуальным окружением | Содержит pip зависимости. Необходим для запуска Ansible-скриптов |
| 2 | Проверка наличия дистрибутива Pangolin | Проверка наличия дистрибутива Pangolin |
| 3 | Создание каталога или локального репозитория | Должен содержать rpm/deb-пакеты компонентов, необходимых к установке на всех стендах. Список компонентов определяется исходя из конфигурации развертывания |
| 4 | Проверка наличия подготовленного конфигурационного файла | Подготовка наличия заполненного пользовательского конфигурационного файла |
| 5 | Формирование строки запуска | Формирование строки запуска |
| 6 | Запуск playbook обновления | Запуск Ansible плейбука обновления СУБД Pangolin (playbook_update.yaml) |
| 7 | Запуск базовых проверок готовности стенда к обновлению | Список проверок может отличаться в зависимости от конфигурации развертывания |
| 8 | Включение блокировки трафика | Включение блокировки трафика |
| 9 | Подготовка файла с лицензией | Проверка валидности лецензии |
| 10 | Установка rpm/deb-пакетов сторонних расширений | Установка новых версии rpm/deb-пакетов сторонних расширений в случае их наличия в БД |
| 11 | Обновление rpm/deb-пакета компонента pangolin-auth-reencrypt | Обновление rpm/deb-пакета |
| 12 | Обновление rpm/deb-пакета компонента pangolin-certs-rotate-agent | Обновление rpm/deb-пакета |
| 13 | Обновление rpm/deb-пакета компонента pangolin-security-utilities | Обновление rpm/deb-пакета |
| 14 | Обновление rpm/deb-пакета компонента pangolin-manager-venv | Обновление rpm/deb-пакета |
| 15 | Обновление rpm/deb-пакета компонента pangolin-manager | Обновление rpm/deb-пакета |
| 16 | Подготовка стенда к загрузке системных данных | На данном этапе производятся следующие действия: - подготовка новых конфигурационных файлов БД на основе исходных; - обновление .bash_profile; - остановка службы cron; - проверка корректности ролей кластера. В случае, если роли в момент обновления поменялись местами: - производится switch; - создание временного слота репликации tmp_update_slot checkpoint; - включение режима паузы для Pangolin Manager; - остановка СУБД на мастере; - остановка СУБД на реплике |
| 17 | Обновление rpm/deb-пакета серверной и клиентской части | Обновление rpm/deb-пакета |
| 18 | Обновление rpm/deb-пакета pangolin-auth-password | Обновление rpm/deb-пакета |
| 19 | Обновление rpm/deb-пакета pangolin-timescaledb | Обновление rpm/deb-пакета |
| 20 | Запуск inplace_upgrade на мастере | На данном этапе производятся следующие действия только на мастере: - Бэкап системных файлов для восстановления, в случае неуспеха; - Изменение версии системного каталога; - Переименование путей до табличных пространств, относительно новой версии системного каталога; - Запуск узла БД; - Снятие дампа исходного системного каталога для проверки целостность системных данных; - Действие по добавлению новых системных объектов одной транзакцией в binary_mode;- Снятие дампа обновленного системного каталога для проверки целостность системных данных; - Запуск тестов по проверки корректности обновления системных данных |
| 21 | Запуск inplace_upgrade с функцией -r на реплике | На данном этапе производятся следующие действия только на реплике: Изменение версии системного каталога, если это необходимо Переименование путей до табличных пространств, относительно новой версии системного каталога |
| 22 | Завершающие действия после загрузки системных данных | На данном этапе производятся следующие действия: - восстановление конфигурационных файлов БД; - выключение режима паузы для Pangolin Manager; - включение synchronous_mode и synchronous_mode_strict; - запуск СУБД на мастере; - запуск СУБД на реплике; - ожидание полной синхронизации узлов кластера; - удаление временного слота репликации tmp_update_slot; - обновление расширения timescaledb в БД, при необходимости |
| 23 | Обновление rpm/deb-пакета компонента pangolin-pooler | Обновление rpm/deb-пакета |
| 24 | Обновление rpm/deb-пакета компонента pangolin-tuner | Обновление rpm/deb-пакета |
| 25 | Обновление rpm/deb-пакета компонента pangolin-diagnostic-tool | Обновление rpm/deb-пакета |
| 26 | Обновление rpm/deb-пакета компонента pangolin-backup-tools | Обновление rpm/deb-пакета |
| 27 | Обновление rpm/deb-пакетов сторонних расширений | Если в кастомном файле параметр extensions_update_ver был выставлен в true. Будет произведено обновлена версия исходных rpm/deb-пакетов сторонних расширений, а также обновлена версия в БД (ALTER EXTENSION UPDATE) |
| 28 | Завершающие действия после обновления | На данном этапе производятся следующие действия: - обновление расширений; - шифрование паролей в конфигурационных файлах; - восстановление исходного patroni.dynamic.json; - настройка «welcome message»; - запуск службы cron; - удаление исходных пакетов серверной и клиентской части |
| 29 | Выключение блокировки трафика | Выключение блокировки трафика |
Схема процесса обновления исполняемых файлов для стендов со сторонними расширениями
Необходимые условия:
- КТС или серверы с поддерживаемой версией ОС в версии продукта, в которой реализуется данная функциональность.
- Наличие ранее установленной не последней версии СУБД Pangolin.
- Наличие установленных сторонних расширений.

Табличное описание процесса:
| Номер шага | Наименование шага | Описание |
|---|---|---|
| 1 | Установка rpm/deb-пакета с виртуальным окружением | Содержит pip зависимости. Необходим для запуска Ansible-скриптов |
| 2 | Проверка наличия дистрибутива Pangolin | Проверка наличия дистрибутива Pangolin |
| 3 | Создание каталога или локального репозитория | Должен содержать rpm/deb-пакеты компонентов, необходимых к установке на всех стендах. Список компонентов определяется исходя из конфигурации развертывания |
| 4 | Проверка наличия подготовленного конфигурационного файла | Подготовка наличия заполненного пользовательского конфигурационного файла |
| 5 | Формирование строки запуска | Формирование строки запуска |
| 6 | Запуск playbook обновления | Запуск Ansible плейбука обновления СУБД Pangolin (playbook_update.yaml) |
| 7 | Запуск базовых проверок готовности стенда к обновлению | Список проверок может отличаться в зависимости от конфигурации развертывания |
| 8 | Включение блокировки трафика | Включение блокировки трафика |
| 9 | Подготовка файла с лицензией | Проверка валидности лицензии |
| 10 | Установка rpm/deb-пакетов сторонних расширений | Установка новых версии rpm/deb-пакетов сторонних расширений в случае их наличия в БД |
| 11 | Обновление rpm/deb-пакета компонента pangolin-auth-reencrypt | Обновление rpm/deb-пакета |
| 12 | Обновление rpm/deb-пакета компонента pangolin-certs-rotate-agent | Обновление rpm/deb-пакета |
| 13 | Обновление rpm/deb-пакета компонента pangolin-security-utilities | Обновление rpm/deb-пакета |
| 14 | Обновление rpm/deb-пакета компонента pangolin-manager-venv | Обновление rpm/deb-пакета |
| 15 | Обновление rpm/deb-пакета компонента pangolin-manager | Обновление rpm/deb-пакета |
| 16 | Обновление rpm/deb-пакета серверной и клиентской части | На данном этапе производятся следующие действия: - обновление rpm/deb-пакетов серверной и клиентской части; - подготовка новых конфигурационных файлов БД на основе исходных; - запуск СУБД на обновляемом стенде |
| 17 | Обновление rpm/deb-пакета pangolin-auth-password | Обновление rpm/deb-пакета |
| 18 | Обновление rpm/deb-пакета pangolin-timescaledb | Обновление rpm/deb-пакета |
| 19 | Обновление rpm/deb-пакета компонента pangolin-pooler | Обновление rpm/deb-пакета |
| 20 | Обновление rpm/deb-пакета компонента pangolin-tuner | Обновление rpm/deb-пакета |
| 21 | Обновление rpm/deb-пакета компонента pangolin-diagnostic-tool | Обновление rpm/deb-пакета |
| 22 | Обновление rpm/deb-пакета компонента pangolin-backup-tools | Обновление rpm/deb-пакета |
| 23 | Обновление rpm/deb-пакетов сторонних расширений | Если в кастомном файле параметр extensions_update_ver был выставлен в true. Будет произведено обновлена версия исходных rpm/deb-пакетов сторонних расширений, а также обновлена версия в БД (ALTER EXTENSION UPDATE) |
| 24 | Завершающие действия после обновления | На данном этапе производятся следующие действия: - обновление расширений шифрование паролей в конфигурационных файлах; - восстановление исходного patroni.dynamic.json- настройка «welcome message»; - запуск службы cron; - удаление исходных пакетов серверной и клиентской части |
| 25 | Выключение блокировки трафика | Выключение блокировки трафика |