Ручное обновление с переносом данных СУБД Pangolin
Данный раздел рассматривает ручное обновление с переносом данных СУБД Pangolin.
Перед началом выполнения инструкции необходимо убедиться, что yum/dnf-репозитории настроены корректно.
При обновлении пакетов, содержащих эпоху в номере версии, важно учитывать специфику работы пакетных менеджеров. При попытке обновить пакет на новую версию без эпохи, обновление не произойдет. Перед выполнением обновления данных компонентов необходимо предварительно удалить текущий установленный пакет компонента.
Каждый пункт будет начинаться с информации в круглых скобках о том, на каких узлах необходимо выполнить данный шаг. Все команды необходимо выполнять последовательно.
Например, сочетание (мастер, реплика) означает, что действия, указанные в пункте, необходимо выполнить сначала на основном узле, затем на реплике (при этом выполнять действия на арбитре не нужно).
Обновление выполняется покомпонентно. Шаги, соответствующие компонентам, отсутствующим в конфигурации, следует пропустить.
Обновление СУБД может осуществляться пользователем с правами суперпользователя, а также пользователем postgres.
Все команды ниже являются примерами. Их необходимо отредактировать в соответствии с требуемыми параметрами и конфигурациями. В названиях rpm/deb-пакетов и в блоках кода, при необходимости, замените наименование ОС и пакетного менеджера. Также, в данной инструкции, распакованный дистрибутив находится в каталоге под названием pangolin.
В случае, если обновление прошло неуспешно, произведите восстановление по инструкции «Восстановление после неудачного обновления с переносом данных».
Обозначения
В инструкции используются переменные для динамической настройки. Перед выполнением команд эти переменные будут экспортироваться. Скорректируйте значение относительно реализуемого сценария обновления:
PANGOLIN_VER_OLD– исходная версия СУБД Pangolin (формат -х.х.х);PANGOLIN_VER– новая версия СУБД Pangolin (формат -х.х.х);PANGOLIN_FULL_VER– новая версия СУБД Pangolin (формат -0х.00х.0х);PANGOLIN_FULL_VER_OLD– исходная версия СУБД Pangolin (формат -0х.00х.0х);PANGOLIN_DBMS_MAJOR_MINOR_OLD– исходная мажорная и минорная версия СУБД Pangolin (формат -х.х);PANGOLIN_DBMS_MAJOR– новая мажорная версия СУБД Pangolin (формат -х);PANGOLIN_DBMS_MAJOR_OLD– исходная мажорная версия СУБД Pangolin (формат -х);PANGOLIN_DBMS_MINOR_OLD- исходная минорная версия СУБД Pangolin (формат -x) (переменная не используется при обновлении с версии СУБД Pangolin выше 7.х.х);PANGOLIN_TIMESCALEDB_OLD– исходная версия расширения timescaledb (формат -х.х.х);PANGOLIN_TIMESCALEDB– новая версия расширения timescaledb (формат -х.х.х);PANGOLIN_TIMESCALEDB_RELEASE– новая версия релиза пакета расширения timescaledb (формат -х.х.х);PANGOLIN_POOLER_OLD– исходная версия компонента Pangolin Pooler (формат -х.х.х);PANGOLIN_POOLER– новая версия компонента Pangolin Pooler (формат -х.х.х);PANGOLIN_MANAGER_OLD– исходная версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_MANAGER_VENV_OLD– исходная версия зависимостиpangolin-manager-venv(формат -х.х.х);PANGOLIN_MANAGER– новая версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_MANAGER_VENV– новая версия зависимостиpangolin-manager-venv(формат -х.х.х);PANGOLIN_BACKUP_TOOLS_OLD– исходная версия компонента Pangolin Backup Tools (формат -х.х.х);PANGOLIN_BACKUP_TOOLS_VENV_OLD– исходная версия зависимостиpangolin-backup-tools-venv(формат -х.х.х);PANGOLIN_BACKUP_TOOLS– новая версия компонента Pangolin Backup Tools (формат -х.х.х);PANGOLIN_BACKUP_TOOLS_VENV– новая версия зависимостиpangolin-backup-tools-venv(формат -х.х.х);PANGOLIN_TUNER_OLD– исходная версия компонента Pangolin Tuner (формат -х.х.х);PANGOLIN_TUNER– новая версия компонента Pangolin Tuner (формат -х.х.х);PASSWORD_HASH_VER- новая версия компонента Pangolin Password Hash (формат -x.x.x);PANGOLIN_POSTGIS– новая версия пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_POSTGIS_OLD– исходная версия пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_PGROUTING– новая версия пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PGROUTING_OLD– исходная версия пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PG_BACKGROUND– новая версия пакета стороннего расширения pg_background (формат -х.х.х);PANGOLIN_PG_BACKGROUND_OLD– исходная версия пакета стороннего расширения pg_background (формат -х.х.х);PANGOLIN_POSTGIS_RELEASE– новая версия релиза пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_PGROUTING_RELEASE– новая версия релиза пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PG_BACKGROUND_RELEASE– новая версия релиза пакета стороннего расширения pg_background (формат -х.х.х);PGPASSWORD- пароль от пользователя БД (по умолчанию пользовательpostgres);PGDATA– исходный путь до данных СУБД Pangolin (формат -/pgdata/xx);PGDATA_NEW– новый путь до данных СУБД Pangolin (формат -/pgdata/xx);PGHOME– исходный путь до серверной части СУБД Pangolin (формат -/usr/pangolin);PGHOME_NEW– новый путь до серверной части СУБД Pangolin (формат -/opt/pangolin-dbms-server);PGHOME_CLIENT– исходный путь до клиентской части СУБД Pangolin (формат -/opt/pangolin-dbms-client);PGHOME_CLIENT_NEW– новый путь до клиентской части СУБД Pangolin (формат -/opt/pangolin-dbms-client);PGBACKUP– исходный путь для резервного копирования СУБД Pangolin (формат -/pgarclogs/xx);PGBACKUP_NEW– новый путь для резервного копирования СУБД Pangolin (формат -/pgarclogs/xx);PGPORT- порт СУБД Pangolin (по умолчанию5433);CLUSTERNAME- наименование кластера (по умолчаниюclustername).
Предусловие
Перед переходом к процессу обновления необходимо ознакомиться с информацией в данном разделе.
Перед началом обновления необходимо выключить службу crond во избежание сторонних подключений на всех хостах СУБД.
В случае кластерной конфигурации дождитесь полного отсутствия задержки репликации между мастером и репликой. Перед началом процесса обновления узлы кластера должны быть синхронизированы.
Перед началом обновления необходимо произвести проверку готовности СУБД к процессу обновления и устранить выявленные проблемы. Список необходимых проверок представлен в разделе «Проверка готовности к обновлению».
Проверка и устранение возможных ограничений происходит автоматически при выборе автоматизированного способа обновления.
Правила замены параметров в файлах конфигурации приведены в разделе «Изменения перечня конфигурационных параметров при обновлении».
В случае использования расширения timescaledb убедитесь, что обновляемая версия расширения поддерживается и подходит для запланированного сценария обновления. В противном случае необходимо сначала обновить расширение до допустимой версии. Если поднять версию расширения в рамках одной версии СУБД невозможно, следует произвести обновление СУБД на промежуточную, а затем на целевую версию. Уточнение по процессу обновления стендов с предустановленным расширением timescaledb указано в «Таблице поддерживаемых для обновления версий СУБД».
Список ограничений перед проведением обновления с переносом данных СУБД Pangolin
Проверка на наличие и устранение данных ограничений происходит автоматически при выборе автоматизированного способа обновления.
Перед началом обновления необходимо выполнить проверку на ограничения. Для этого выполните следующие действия:
-
Убедитесь в отсутствии активных внешних подключений к СУБД в течение всего процесса обновления.
-
Убедитесь, что у существующих пользователей и администраторов БД есть необходимые полномочия на создание объектов и назначения прав в полном объеме.
-
Ознакомьтесь с особенностями обновления, связанные с переходом на ядро PostgreSQL 18.3.
-
Проверьте наличие расширений, установленных в схему
publicили в системный каталог (рекомендуется: перенести в схемуext). -
В случае кластерной конфигурации, обновите строку подключения к СУБД (проверьте значение портов) и убедитесь, что в строке указаны оба узла кластера (active и standby), так как в процессе обновления утилита
confdбудет автоматически удалена. Пример исправления неактуальной строки для подключения:Строку:
jdbc:postgresql://127.0.0.1:6544,127.0.0.2:6544/dbname?prepareThreshold=0`Исправьте на:
jdbc:postgresql://127.0.0.1:6544,127.0.0.2:6544/dbname?targetServerType=мастер&prepareThreshold=0 -
В случае использования расширения
psql_rotate_password, необходимо обязательно добавить его в параметрshared_preload_librariesконфигурационного файлаpostgres.yml/postgresql.conf. Чтобы определить, используется лиpsql_rotate_password, для каждой БД выполните запрос:SELECT extname FROM pg_extension WHERE extname='psql_rotate_password';
Сценарий обновления
Сценарий обновления с переносом данных СУБД Pangolin состоит из следующих шагов:
- Шаг 1. Резервное копирование (обязательно);
- Шаг 2. Подготовка к обновлению (обязательно);
- Шаг 3. Остановка компонентов СУБД Pangolin (обязательно);
- Шаг 4. Обновление компонента pangolin-auth-reencrypt (опционально, выполните в случае использования компонента);
- Шаг 5. Обновление компонента pangolin-certs-rotate (опционально, выполните в случае использования компонента);
- Шаг 6. Обновление компонента безопасности pangolin-security-utilities (опционально, выполните в случае использования компонента);
- Шаг 7. Обновление компонента pangolin-diagnostic-tool (опционально, выполните в случае использования компонента);
- Шаг 8. Обновление компонента резервного копирования pangolin-backup-tools (опционально, выполните в случае использования компонента);
- Шаг 9. Обновление компонента Pangolin Pooler (опционально, выполните в случае использования компонента);
- Шаг 10. Обновление компонента Pangolin Manager (опционально, выполните в случае кластерной конфигурации);
- Шаг 11. Обновление компонента серверной части СУБД Pangolin (обязательно);
- Шаг 12. Обновление компонента клиентской части СУБД Pangolin (обязательно);
- Шаг 13. Обновление пакетов расширений oracle_fdw и tds_fdw (опционально, выполните в случае использования расширений);
- Шаг 14. Обновление пакета расширения pangolin-timescaledb (опционально, выполните в случае использования расширения);
- Шаг 15. Обновление компонента pangolin-auth-password (опционально, выполните в случае использования компонента);
- Шаг 16. Обновление компонента Pangolin Tuner (опционально, выполните в случае использования компонента);
- Шаг 17. Обновление опциональных пакетов (опционально, выполните в случае использования libpq-части);
- Шаг 18. Обновление пакетов pangolin-untrusted расширений (опционально, выполните в случае использования untrusted-расширений);
- Шаг 19. Обновление пакетов сторонних расширений (опционально, выполните в случае использования сторонних расширений);
- Шаг 20. Подготовка к миграции данных (обязательно);
- Шаг 21. Миграция данных с помощью утилиты pg_upgrade (обязательно);
- Шаг 22. Актуализация путей до табличных пространств (обязательно);
- Шаг 23. Перенос данных с помощью rsync на реплику (опционально, выполните в случае кластерной конфигурации);
- Шаг 24. Индексирование и очистка устаревших записей (обязательно);
- Шаг 25. Запуск компонентов СУБД Pangolin (обязательно);
- Шаг 26. Очистка кластера Pangolin Manager (опционально, выполните в случае кластерной конфигурации);
- Шаг 27. Обновление каталога безопасности (обязательно);
- Шаг 28. Завершающие действия (обязательно).
Шаг 1. Резервное копирование (обязательно)
Перед выполнением обновления выполните резервную копию базы данных до начала всех работ, чтобы избежать возможных проблем и иметь возможность откатиться к первоначальному состоянию в случае их возникновения.
Действия по резервному копированию СУБД
-
(мастер, реплика, арбитр) Сохраните рабочие файлы компонентов СУБД Pangolin при их наличии на узле стенда:
-
general:(Обязательно) Действия по резервному копированию общих системных файлов
mkdir -p ~/pangolin/cache/backup/usr/local/sbinmkdir -p ~/pangolin/cache/backup/etcmkdir -p ~/pangolin/cache/backup/home/{postgres,kmadmin_pg}sudo cp -a /usr/local/sbin/dynmotd.sh ~/pangolin/cache/backup/usr/local/sbin/sudo cp -a /etc/profile ~/pangolin/cache/backup/etc/sudo cp -a /home/postgres/.bash_profile ~/pangolin/cache/backup/home/postgressudo cp -a /home/postgres/.bashrc ~/pangolin/cache/backup/home/postgressudo cp -a /home/kmadmin_pg/.bash_profile ~/pangolin/cache/backup/home/kmadmin_pgsudo cp -a /home/kmadmin_pg/.bashrc ~/pangolin/cache/backup/home/kmadmin_pg -
pangolin-auth-reencrypt:(Опционально) Действия по резервному копированию компонента pangolin-auth-reencrypt
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_auth_reencrypt/etc/pangolin-auth-reencryptmkdir -p ~/pangolin/cache/backup/pangolin_auth_reencrypt/{path_to_service}sudo cp -a {path_to_service}/pangolin-auth-reencrypt@.service ~/pangolin/cache/backup/pangolin_auth_reencrypt/{path_to_service}/sudo cp -a {path_to_service}/pangolin-auth-reencrypt.service ~/pangolin/cache/backup/pangolin_auth_reencrypt/{path_to_service}/sudo cp -a /etc/pangolin-auth-reencrypt/enc_util.cfg ~/pangolin/cache/backup/pangolin_auth_reencrypt/etc/pangolin-auth-reencrypt/sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_auth_reencrypt/ pangolin-auth-reencrypt-$PANGOLIN_VER_OLD -
pangolin-certs-rotate:(Опционально) Действия по резервному копированию компонента pangolin-certs-rotate
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_certs_rotate/{path_to_service}mkdir -p ~/pangolin/cache/backup/pangolin_certs_rotate/etc/pangolin-certs-rotatesudo cp -a {path_to_service}/pangolin-certs-rotate.service ~/pangolin/cache/backup/pangolin_certs_rotate/{path_to_service}/sudo cp -a /etc/pangolin-certs-rotate/pangolin-certs-rotate.yml ~/pangolin/cache/backup/pangolin_certs_rotate/etc/pangolin-certs-rotate/sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_certs_rotate/ pangolin-certs-rotate-$PANGOLIN_VER_OLD -
pangolin-security-utilities:(Опционально) Действия по резервному копированию компонента pangolin-security-utilities
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_security_utilitiessudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_security_utilities/ pangolin-security-utilities-$PANGOLIN_VER_OLD -
pangolin-backup-tools:(Опционально) Действия по резервному копированию компонента pangolin-backup-tools
export PANGOLIN_BACKUP_TOOLS_OLD=x.x.xexport PANGOLIN_BACKUP_TOOLS_VENV_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_backup_tools/etc/pangolin-backup-tools/etc/pangolin-backup-toolssudo cp -a /etc/pangolin-backup-tools/backup-tools-env ~/pangolin/cache/backup/pangolin_backup_tools/etc/pangolin-backup-tools/sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_backup_tools/ pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_backup_tools/ pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV_OLD -
Pangolin Pooler:
(Опционально) Действия по резервному копированию компонента Pangolin Pooler
export PANGOLIN_POOLER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_pooler/{path_to_service}mkdir -p ~/pangolin/cache/backup/pangolin_pooler/etc/pangolin-poolersudo cp -a {path_to_service}/pangolin-pooler.service ~/pangolin/cache/backup/pangolin_pooler/{path_to_service}/sudo cp -a /etc/pangolin-pooler/pangolin-pooler.ini ~/pangolin/cache/backup/pangolin_pooler/etc/pangolin-pooler/sudo cp -a /etc/pangolin-pooler/userlist.txt ~/pangolin/cache/backup/pangolin_pooler/etc/pangolin-pooler/sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_pooler/ pangolin-pooler-$PANGOLIN_POOLER_OLD -
Pangolin Manager:
(Опционально) Действия по резервному копированию компонента Pangolin Manager
export PANGOLIN_MANAGER_OLD=x.x.xexport PANGOLIN_MANAGER_VENV_OLD=x.x.xexport PGDATA=/pgdata/xxmkdir -p ~/pangolin/cache/backup/pangolin_manager/{path_to_service}mkdir -p ~/pangolin/cache/backup/pangolin_manager/etc/pangolin-managersudo cp -a {path_to_service}/pangolin-manager.service ~/pangolin/cache/backup/pangolin_manager/{path_to_service}/sudo cp -a /etc/pangolin-manager/postgres.yml ~/pangolin/cache/backup/pangolin_manager/etc/pangolin-manager/sudo cp -a $PGDATA/data/patroni.dynamic.json ~/pangolin/cache/backup/pangolin_manager/sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_manager/ pangolin-manager-$PANGOLIN_MANAGER_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_manager/ pangolin-manager-venv-$PANGOLIN_MANAGER_VENV_OLD -
pangolin-dbms:(Обязательно) Действия по резервному копированию основного компонента СУБД
export PANGOLIN_VER_OLD=x.x.xexport PGDATA=/pgdata/xxexport PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_DBMS_MINOR_OLD=xmkdir -p ~/pangolin/cache/backup/pangolin_dbms/{path_to_service}mkdir -p ~/pangolin/cache/backup/pangolin_dbms/$PGDATAsudo cp -a {path_to_service}/postgresql.service ~/pangolin/cache/backup/pangolin_dbms/{path_to_service}/ # для конфигурации без Pangolin Managersudo cp -a {path_to_service}/pangolin-dbms.service ~/pangolin/cache/backup/pangolin_dbms/{path_to_service}/ # для конфигурации без Pangolin Manager и обновляемой версии выше 7.х.хsudo find "$PGDATA/data/" -maxdepth 1 -name "*.conf" -exec cp -a {} ~/pangolin/cache/backup/pangolin_dbms/$PGDATA/data \;sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-$PANGOLIN_VER_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-client-$PANGOLIN_VER_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-$PANGOLIN_VER_OLD # для обновляемой версии выше 7.х.хsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-client-$PANGOLIN_VER_OLD # для обновляемой версии выше 7.х.х -
pangolin-timescaledb:(Опционально) Действия по резервному копированию расширения timescaledb
export PANGOLIN_TIMESCALEDB_OLD=x.x.xexport PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_DBMS_MINOR_OLD=xmkdir -p ~/pangolin/cache/backup/pangolin_timescaledbsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_timescaledb/ pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD -
pangolin-auth-password:(Опционально) Действия по резервному копированию компонента pangolin-auth-password
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_auth_passwordsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_auth_password/ pangolin-auth-password-$PANGOLIN_VER_OLD -
pangolin-tuner:(Опционально) Действия по резервному копированию компонента Pangolin Tuner
export PANGOLIN_TUNER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_tunersudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_tuner/ pangolin-tuner-$PANGOLIN_TUNER_OLD -
pangolin-diagnostic-tool:(Опционально) Действия по резервному копированию компонента pangolin-diagnostic-tool
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_diagnostic_toolsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_diagnostic_tool/ pangolin-diagnostic-tool-$PANGOLIN_VER_OLD -
Опциональные компоненты:
(Опционально) Действия по резервному копированию компонентов libpq
export PANGOLIN_VER_OLD=x.x.xexport PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_DBMS_MINOR_OLD=xsudo mkdir -p ~/pangolin/cache/backup/pangolin_dbms_libpq ~/pangolin/cache/backup/pangolin_dbms_libpq_devsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms_libpq/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-$PANGOLIN_VER_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms_libpq_dev/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-dev-$PANGOLIN_VER_OLD -
pangolin-untrustedрасширения:(Опционально) Действия по резервному копированию Untrusted-расширений
export PANGOLIN_VER_OLD=x.x.xexport PANGOLIN_DBMS_MAJOR_OLD=xsudo mkdir -p ~/pangolin/cache/backup/pangolin_untrustedsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_untrusted/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-<ext_name>-$PANGOLIN_VER_OLDГде
ext_name- название untrusted-расширения. -
pangolin-externalрасширения:(Опционально) Действия по резервному копированию сторонних расширений
export PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_POSTGIS_OLD=x.x.xexport PANGOLIN_PGROUTING_OLD=x.x.xexport PANGOLIN_PG_BACKGROUND_OLD=x.xsudo mkdir -p ~/pangolin/cache/backup/pangolin_externalsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_external/ {postgis_pkg_name}-$PANGOLIN_POSTGIS_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_external/ {pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLDsudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_external/ {pg_background_pkg_name}-$PANGOLIN_PG_BACKGROUND_OLDГде:
postgis_pkg_name- наименование исходного пакета стороннего расширенияPostGIS(формат:pangolin-postgisилиpangolin-postgis-$PANGOLIN_DBMS_MAJOR_OLD);pgrouting_pkg_name- наименование исходного пакета стороннего расширенияpgrouting(формат: pangolin-pgrouting илиpangolin-pgrouting-$PANGOLIN_DBMS_MAJOR_OLD);pg_background_pkg_name- наименование исходного пакета стороннего расширенияpg_background(формат:pangolin-pg-backgroundилиpangolin-pg-background-$PANGOLIN_DBMS_MAJOR_OLD).
Где
{path_to_service}– актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ отroot» это может быть путь/home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть/usr/lib/systemd/system/,/lib/systemd/system/или/etc/systemd/system/. -
-
(мастер) Добавьте запись
host репликаtion postgres 127.0.0.1/32 scram-sha-256первой строкой в файл$PGDATA/data/pg_hba.confили в файл/etc/pangolin-manager/postgres.ymlв секциюpg_hbaдля конфигурации с Pangolin Manager для корректного выполнения резервной копии БД. -
(мастер) Перечитайте обновленный конфигурационный файл БД.
- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
sudo -iu - postgresexport PGDATA=/pgdata/xxexport PGHOME=/usr/pangolin$PGHOME/bin/pg_ctl reload -D $PGDATA/dataexitsudo -iu postgresexport CLUSTERNAME=clustername/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLUSTERNAMEexitОшибка «This system supports the C.UTF-8 locale which is recommended»
Если при вызове утилиты возникает ошибка в локалях кодировки:
This system supports the C.UTF-8 locale which is recommended, добавьте следующее содержимое в конец файла~/.bash_profileпод пользователемpostgresследующим содержимым при помощи текстового редактора:export LC_ALL=C.UTF-8export LANG=C.UTF-8 -
(мастер) Создайте каталог для резервной копии:
export PANGOLIN_FULL_VER_OLD=0х.00х.0хsudo mkdir -p /pgarclogs/$PANGOLIN_FULL_VER_OLD/pg_probackupsudo chmod -R 0700 /pgarclogs/cache/backup/pangolin_dbmssudo chown -R postgres:postgres /pgarclogs/$PANGOLIN_FULL_VER_OLD/ -
(мастер) Выполните резервное копирование:
sudo -iu postgresexport PANGOLIN_FULL_VER_OLD=0х.00х.0хexport PGPASSWORD=<password_postgres>export PGPORT=<порт СУБД>export PGDATA=/pgdata/xxexport CLUSTERNAME=clustername/opt/pangolin-backup-tools/bin/pg_probackup init -B /pgarclogs/$PANGOLIN_FULL_VER_OLD/pg_probackup/opt/pangolin-backup-tools/bin/pg_probackup add-instance -B /pgarclogs/$PANGOLIN_FULL_VER_OLD/pg_probackup -D $PGDATA/data --instance $CLUSTERNAME/opt/pangolin-backup-tools/bin/pg_probackup backup -B /pgarclogs/$PANGOLIN_FULL_VER_OLD/pg_probackup --instance $CLUSTERNAME -b FULL -h 127.0.0.1 -p $PGPORT -U postgres --compress-algorithm=zlib --compress-level=4 -j 14 --temp-slot --stream --progress -wexit -
(мастер) Удалите строку
host репликаtion postgres 127.0.0.1/32 scram-sha-256из файла$PGDATA/data/pg_hba.confдля конфигурации без Pangolin Manager или из файла/etc/pangolin-manager/postgres.ymlдля конфигурации с Pangolin Manager. -
(мастер) Перечитайте обновленный конфигурационный файл БД.
- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
sudo -iu - postgresexport PGDATA=/pgdata/xxexport PGHOME=/usr/pangolin$PGHOME/bin/pg_ctl reload -D $PGDATA/dataexitsudo -iu postgresexport CLUSTERNAME=clustername/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLUSTERNAMEexit
Шаг 2. Подготовка к обновлению (обязательно)
Сохраните настройки СУБД и подготовьте конфигурационные файлы для новой версии. Корректное выполнение этого этапа гарантирует сохранение всех пользовательских настроек и параметров работы СУБД после обновления.
Действия по подготовке к обновлению СУБД
-
(мастер) Сохраните исходные значения стенда для последующей инициализации новой БД:
sudo -iu postgresexport PGPASSWORD=<password_postgres>psql -c "SHOW SERVER_ENCODING;" > current_value.txtpsql -c "SHOW LC_COLLATE;" >> current_value.txtpsql -c "SHOW LC_CTYPE;" >> current_value.txtpsql -c "SHOW LC_MESSAGES;" >> current_value.txtpsql -c "SHOW LC_MONETARY;" >> current_value.txtpsql -c "SHOW LC_NUMERIC;" >> current_value.txtpsql -c "SHOW LC_TIME;" >> current_value.txtpsql -c "SELECT setting FROM pg_settings WHERE name='wal_segment_size';" >> current_value.txtpsql -c "SELECT oid, pg_tablespace_location(oid) FROM pg_tablespace WHERE spcname not in ('pg_default', 'pg_global');" >> current_value.txtexit -
(мастер, реплика) Сформируйте конфигурационные файлы для работы с новой версией СУБД:
- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
Скопируйте текущие конфигурационные файлы на мастере:
export PGDATA=/pgdata/xxmkdir -p ~/pangolin/cache/mergesudo cp $PGDATA/data/postgresql.conf ~/pangolin/cache/merge/postgresql.confsudo cp $PGDATA/data/postgresql.base.conf ~/pangolin/cache/merge/postgresql.base.confsudo cp $PGDATA/data/pg_hba.conf ~/pangolin/cache/merge/pg_hba.confИзмените значение параметров в скопированных конфигурационных файлах для работы с новой версией СУБД.
Пример редактируемых параметров:
archive_command = '/opt/pangolin-backup-tools/bin/pg_probackup archive-push -B $PGBACKUP_NEW --instance $CLUSTERNAME --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100'pg_plugins_path = '$PGHOME_NEW/lib'hba_file = '$PGDATA_NEW/data/pg_hba.conf'ident_file = '$PGDATA_NEW/data/pg_ident.conf'Скопируйте текущие конфигурационные файлы:
export PGDATA=/pgdata/xxmkdir -p ~/pangolin/cache/mergesudo cp $PGDATA/data/patroni.dynamic.json ~/pangolin/cache/merge/patroni.dynamic.jsonsudo cp /etc/pangolin-manager/postgres.yml ~/pangolin/cache/merge/postgres.ymlИзмените значение параметров в скопированных конфигурационных файлах для работы с новой версией СУБД.
Пример редактируемых параметров:
postgresql:bin_dir: $PGHOME_NEW/binbin_dir_client: $PGHOME_CLIENT_NEW/bindata_dir: $PGDATA_NEW/dataparameters:archive_command: /opt/pangolin-backup-tools/bin/pg_probackup archive-push -B $PGBACKUP_NEW --instance $CLUSTERNAME --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100pg_plugins_path: $PGHOME_NEW/lib -
(мастер, реплика, арбитр) Скачайте дистрибутив в рабочий каталог и распакуйте его. Далее по инструкции путь к компонентам дистрибутива будет формироваться по
~/pangolin:mkdir -p ~/pangolintar -xzvf pangolin.tar.gz -C ~/pangolin
Шаг 3. Остановка компонентов СУБД Pangolin (обязательно)
Остановите все компоненты СУБД Pangolin перед обновлением. Этот шаг обязателен для предотвращения повреждения данных и корректного выполнения процесса обновления.
Действия по остановке компонентов СУБД
Перед остановкой необходимо выполнить команду CHECKPOINT на мастере.
-
(мастер) В случае конфигурации с Pangolin Manager введите компонент в режим паузы:
sudo -iu postgres/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=true' --forceexit -
(мастер, реплика, арбитр) Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на мастере, затем на реплике, после на арбитре:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin-managersudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit -
на арбитре:
sudo systemctl stop pangolin-certs-rotatesudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin-manager
-
на мастере и реплике:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin-managersudo systemctl stop etcdsudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit -
на арбитре:
sudo systemctl stop etcd
-
на мастере:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg# в случае наличия файла `postgresql.service`:sudo systemctl stop postgresql# в случае отсутствия файла `postgresql.service`:sudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin-manager$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user stop pangolin-certs-rotatesystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin-managerexitsudo -iu kmadmin_pgXDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user stop pangolin-auth-reencryptexit
-
на мастере и реплике:
sudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin-managersystemctl --user stop etcd$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user stop etcdexit
-
на мастере:
sudo -iu postgresexport PGHOME=/usr/pangolinexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pangolin-auth-reencrypt# в случае наличия файла `postgresql.service`:systemctl --user stop postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptexit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Проверьте, что все компоненты корректно остановлены:
sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|pangolin-dbms|pangolin-certs-rotate|pangolin-auth-reencrypt|etcd" | grep -v grepЕсли команда в пункте 3 вернула не пустой результат, то выполните следующее:
sudo kill -9 <pid>sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|pangolin-dbms|pangolin-certs-rotate|pangolin-auth-reencrypt|etcd" | grep -v grep
Шаг 4. Обновление компонента pangolin-auth-reencrypt (опционально)
Действия по обновлению компонента pangolin-auth-reencrypt
-
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.xsudo dnf update -y ~/pangolin/utilities/pangolin-auth-reencrypt-$PANGOLIN_VER-sberlinux9.x86_64.rpm -
(мастер, реплика) С помощью текстового редактора произведите замену старых значений
$PGDATA,$PGHOME,$PGHOME_CLIENTна новые$PGDATA_NEW,$PGHOME_NEW,$PGHOME_CLIENT_NEWв service-файле компонента{path_to_service}.Где
{path_to_service}– актуальный путь до service-файлаpangolin-auth-reencrypt.serviceкомпонента. В случае, если функциональность «Отказ отroot» включена это может быть путь/home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть/usr/lib/systemd/system/,/lib/systemd/system/или/etc/systemd/system/.
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитра.
Шаг 5. Обновление компонента pangolin-certs-rotate (опционально)
Действия по обновлению компонента pangolin-certs-rotate
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf update -y ~/pangolin/utilities/pangolin-certs-rotate-$PANGOLIN_VER-sberlinux9.x86_64.rpm
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитра.
Шаг 6. Обновление компонента безопасности pangolin-security-utilities (опционально)
Действия по обновлению компонента pangolin-security-utilities
-
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.xsudo dnf update -y ~/pangolin/utilities/pangolin-security-utilities-$PANGOLIN_VER-sberlinux9.x86_64.rpmВнимание!В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитра.
-
(мастер, реплика) Произведите проверку файла
secret_dump_key.binна стенде:sudo ls -la /etc/pangolin-security-utilities/secret_dump_key.binВнимание!Выполните следующие шаги только при отсутствии файла
secret_dump_key.bin. При наличии — повторное создание не требуется и дальнейшие действия не выполняются, переходите к шагу 7.При отсутствии файла
secret_dump_key.binвыполните:- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
-
С помощью утилиты
pg_dump_generate_secret_fileсоздайте файл для хранения ключа засекречивания:sudo /opt/pangolin-security-utilities/bin/pg_dump_generate_secret_file
-
С помощью утилиты
generate_encryption_keyсоздайте ключ засекречивания, который далее будет использоваться для создания файла с ключом засекречивания:sudo /opt/pangolin-security-utilities/bin/generate_encryption_key -
Создайте файл для хранения ключа засекречивания:
sudo /opt/pangolin-security-utilities/bin/pg_dump_generate_secret_file -t BASE64 -m -
На запрос
Enter secret keyвведите сгенерированный в пункте 1 ключ.
Шаг 7. Обновление компонента pangolin-diagnostic-tool (опционально)
Действия по обновлению компонента pangolin-diagnostic-tool
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf update -y ~/pangolin/utilities/pangolin-diagnostic-tool-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 8. Обновление компонента резервного копирования pangolin-backup-tools (опционально)
Действия по обновлению компонента pangolin-backup-tools
-
(мастер, реплика) Произведите обновление обязательной зависимости (
pangolin-backup-tools-venv) компонента:tar -xzf ~/pangolin/3rdparty/3rdparty.tar.gz -C ~/pangolin/3rdparty/export PANGOLIN_BACKUP_TOOLS_VENV=x.x.xsudo dnf update -y ~/pangolin/3rdparty/pangolin-backup-tools-venv/pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV-sberlinux9.x86_64.rpm -
(мастер, реплика) Произведите обновление компонента:
export PANGOLIN_BACKUP_TOOLS=x.x.xsudo dnf update -y ~/pangolin/pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS-sberlinux9.x86_64.rpm -
(мастер, реплика) Актуализируйте конфигурационный файл
/etc/pangolin-backup-tools/backup-tools-envсогласно шаблону ниже:# PATH, used for access to required executable files, default value: "${PATH}:{PGHOME}/bin/"PATH="${PATH}:$PGHOME_NEW/bin/"# path to PGHOME, default value: "/opt/pangolin-backup-tools/bin"PGHOME="/opt/pangolin-backup-tools"# path to python libraries, required for manage_backup.bin, default value: "/opt/pangolin-backup-tools/lib/python3/site-packages"PYTHONPATH="/opt/pangolin-backup-tools/lib/python3/site-packages"# path to libraries, required for executable files, default value: "/opt/pangolin-backup-tools/lib"LD_LIBRARY_PATH="/opt/pangolin-backup-tools/lib"# path to plugins libraries, default value: "/opt/pangolin-backup-tools/lib"PG_PLUGINS_PATH="/opt/pangolin-backup-tools/lib"# Pangolin DBMS server IP, default value: "127.0.0.1"ARG_KEY_DBMS_SERVER_IP="127.0.0.1"# Pangolin DBMS port, default value: "5433"ARG_KEY_DBMS_SERVER_PORT="5433"# user used for access to database, default value: "backup_user"ARG_KEY_DBMS_CONNECT_USER="backup_user"# database to connect, default value: "postgres"ARG_KEY_DBMS_CONNECT_DATA_BASE="postgres"# path to backup storage, default value: "/pgarclogs"ARG_KEY_DBMS_CONNECT_BACKUP_DIR="$PGBACKUP_NEW"# password to connect to Pangolin DBMS, default value: 'sample_password'# cluster name, default value: "clustername"PGINSTANCE="$CLUSTERNAME"# WAL archives listWALSTATE_FILE="$ARG_KEY_DBMS_CONNECT_BACKUP_DIR/wals_to_delete"# Log fileLOG_FILE="$ARG_KEY_DBMS_CONNECT_BACKUP_DIR/archive.log"# path to script, used for creating backup files, default value: "/opt/pangolin-backup-tools/bin/manage_backup.sh"MANAGE_BACKUP_SCRIPT="/opt/pangolin-backup-tools/bin/manage_backup.sh"# to checkpoint before backup DBPG_FAST_CHECKPOINT=False# setting up of connection stringPANGOLIN_BACKUP_TOOLS_ARGS="$PANGOLIN_BACKUP_TOOLS_ARGS --host $ARG_KEY_DBMS_SERVER_IP"PANGOLIN_BACKUP_TOOLS_ARGS="$PANGOLIN_BACKUP_TOOLS_ARGS -p $ARG_KEY_DBMS_SERVER_PORT"PANGOLIN_BACKUP_TOOLS_ARGS="$PANGOLIN_BACKUP_TOOLS_ARGS -U $ARG_KEY_DBMS_CONNECT_USER"PANGOLIN_BACKUP_TOOLS_ARGS="$PANGOLIN_BACKUP_TOOLS_ARGS -d $ARG_KEY_DBMS_CONNECT_DATA_BASE"PANGOLIN_BACKUP_TOOLS_ARGS="$PANGOLIN_BACKUP_TOOLS_ARGS -B $ARG_KEY_DBMS_CONNECT_BACKUP_DIR"# environment variables to launch manage backupexport PATHexport PGHOMEexport PYTHONPATHexport LD_LIBRARY_PATHexport PG_PLUGINS_PATHexport PG_FAST_CHECKPOINT
Шаг 9. Обновление компонента Pangolin Pooler (опционально)
Действия по обновлению компонента Pangolin Pooler
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_POOLER=x.x.x
sudo dnf update -y ~/pangolin/pangolin-pooler-$PANGOLIN_POOLER-sberlinux9.x86_64.rpm
Шаг 10. Обновление компонента Pangolin Manager (опционально)
Действия по обновлению компонента Pangolin Manager
-
(мастер, реплика) Произведите обновление обязательной зависимости (
pangolin-manager-venv) компонента:tar -xzf ~/pangolin/3rdparty/3rdparty.tar.gz -C ~/pangolin/3rdparty/export PANGOLIN_MANAGER_VENV=x.x.xsudo dnf update -y ~/pangolin/3rdparty/pangolin-manager-venv/pangolin-manager-venv-$PANGOLIN_MANAGER_VENV-sberlinux9.x86_64.rpm -
(мастер, реплика) Произведите обновление компонента:
export PANGOLIN_MANAGER=x.x.xsudo dnf update -y ~/pangolin/pangolin-manager-$PANGOLIN_MANAGER-sberlinux9.x86_64.rpm -
(мастер, реплика) С помощью текстового редактора произведите замену старых значений
$PGDATA,$PGHOME,$PGHOME_CLIENTна новые$PGDATA_NEW,$PGHOME_NEW,$PGHOME_CLIENT_NEWв service-файле компонента{path_to_service}.Где
{path_to_service}– актуальный путь до service-файлаpangolin-manager.serviceкомпонента. В случае, если функциональность «Отказ отroot» включена это может быть путь/home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть/usr/lib/systemd/system/,/lib/systemd/system/или/etc/systemd/system/. -
(мастер, реплика) Перенаправьте вспомогательную символьную ссылку для корректной работы компонента:
export PANGOLIN_DBMS_MAJOR=xexport PGHOME_NEW=/opt/pangolin-dbms-server-$PANGOLIN_DBMS_MAJORsudo ln -sfvn $PGHOME_NEW /opt/pangolin-dbms
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 11. Обновление компонента серверной части СУБД Pangolin (обязательно)
Действия по обновлению серверной части СУБД
-
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.xexport PANGOLIN_DBMS_MAJOR=xsudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_VER-sberlinux9.x86_64.rpm -
(мастер, реплика) С помощью текстового редактора произведите замену старых значений
$PGDATA,$PGHOME,$PGHOME_CLIENTна новые$PGDATA_NEW,$PGHOME_NEW,$PGHOME_CLIENT_NEWв service-файле компонента{path_to_service}.Где
{path_to_service}– актуальный путь до service-файлаpostgresql.serviceкомпонента. В случае, если функциональность «Отказ отroot» включена это может быть путь/home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть/usr/lib/systemd/system/,/lib/systemd/system/или/etc/systemd/system/.
Шаг 12. Обновление компонента клиентской части СУБД Pangolin (обязательно)
Действия по обновлению клиентской части СУБД
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-client-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 13. Обновление пакетов расширений oracle_fdw и tds_fdw (опционально)
Выполните данный шаг, если данные расширения зарегистрированы в СУБД. Проверку можно выполнить с помощью метакоманды в psql \dx.
Действия по обновлению пакетов расширений oracle_fdw и tds_fdw
-
(мастер, реплика) Распакуйте архив
extensions.tar.gz:tar -xzf ~/pangolin/extensions/extensions.tar.gz -C ~/pangolin/extensions/ -
(мастер, реплика) Произведите обновление пакетов расширений:
export PANGOLIN_DBMS_MAJOR=xexport PANGOLIN_VER=x.x.xsudo dnf install -y ~/pangolin/extensions/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-<ext_name>-$PANGOLIN_VER-sberlinux9.x86_64.rpmГде
ext_name– название расширения.
Шаг 14. Обновление пакета расширения pangolin-timescaledb (опционально)
Действия по обновлению пакета расширения pangolin-timescaledb
(мастер, реплика) Произведите обновление пакета расширения:
export PANGOLIN_TIMESCALEDB=x.x.x
export PANGOLIN_TIMESCALEDB_RELEASE=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf install -y ~/pangolin/timescaledb/pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR-apache-$PANGOLIN_TIMESCALEDB-$PANGOLIN_TIMESCALEDB_RELEASE.sberlinux9-x86_64.rpm
Шаг 15. Обновление компонента pangolin-auth-password (опционально)
Действия по обновлению компонента pangolin-auth-password
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf update -y ~/pangolin/utilities/pangolin-auth-password-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 16. Обновление компонента Pangolin Tuner (опционально)
Действия по обновлению компонента Pangolin Tuner
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_TUNER=x.x.x
sudo dnf update -y ~/pangolin/utilities/pangolin-tuner-$PANGOLIN_TUNER-sberlinux9.x86_64.rpm
Шаг 17. Обновление опциональных пакетов (опционально)
Действия по обновлению пакетов libpq
(мастер, реплика) Произведите обновление опциональных пакетов:
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_VER=x.x.x
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-libpq-$PANGOLIN_VER-sberlinux9.x86_64.rpm
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-libpq-dev-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 18. Обновление пакетов pangolin-untrusted расширений (опционально)
Выполните данный шаг, если в СУБД используются untrusted-расширения. Список данных расширений и подробную информацию о них можно прочитать в разделе «Информация по Untrusted-расширениям».
Действия по обновлению пакетов Untrusted-расширений
-
(мастер, реплика) Распакуйте архив, содержащий untrusted-расширения:
tar -xzf ~/pangolin/untrusted/untrusted.tar.gz -C ~/pangolin/untrusted/ -
(мастер, реплика) Произведите обновление пакетов расширений:
export PANGOLIN_DBMS_MAJOR=xexport PANGOLIN_VER=x.x.xsudo dnf install -y ~/pangolin/untrusted/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-<ext_name>-$PANGOLIN_VER-sberlinux9.x86_64.rpmГде
ext_name- название untrusted-расширения.
Шаг 19. Обновление пакетов сторонних расширений (опционально)
Только для обновления с версий 6.6.0 и выше. Выполните данный шаг, если в СУБД используются сторонние расширения. Список данных расширений и подробную информацию о них можно прочитать в разделе postgis. Поддержка геоданных и pg_background. Запуск команд в фоновом режиме.
Действия по обновлению пакетов сторонних расширений
-
(мастер, реплика) Произведите обновление пакетов сторонних расширений:
export PANGOLIN_POSTGIS=x.x.xexport PANGOLIN_PGROUTING=x.x.xexport PANGOLIN_PG_BACKGROUND=x.xexport PANGOLIN_POSTGIS_RELEASE=x.x.xexport PANGOLIN_PGROUTING_RELEASE=x.x.xexport PANGOLIN_PG_BACKGROUND_RELEASE=x.x.xexport PANGOLIN_DBMS_MAJOR=xsudo dnf install -y ~/pangolin/3rdparty/postgis/pangolin-postgis-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_POSTGIS-$PANGOLIN_POSTGIS_RELEASE.sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin/3rdparty/pgrouting/pangolin-pgrouting-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_PGROUTING.sberlinux9.x86_64.rpmsudo dnf install -y ~/pangolin/3rdparty/pg_background/pangolin-pg-background-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_PG_BACKGROUND.sberlinux9.x86_64.rpm -
(мастер, реплика) Актуализируйте путь в конфигурационном файле к динамическим библиотекам для корректной работы сторонних расширений.
dynamic_library_pathдолжен содержать обязательное значение/opt/pangolin-extensions/{base_version}/libв первом приоритете. При необходимости, добавить через знак:исходные значения параметра.- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
Отредактируйте конфигурационный файл
~/pangolin/cache/merge/postgresql.conf:dynamic_library_path = '/opt/pangolin-extensions/{base_version}/lib:/opt/pangolin-extensions/{pangolin_major_old_version}/lib:$libdir'Отредактируйте конфигурационный файл
~/pangolin/cache/merge/postgres.yml:postgresql:parameters:dynamic_library_path: "/opt/pangolin-extensions/{base_version}/lib:/opt/pangolin-extensions/{pangolin_major_old_version}/lib:$libdir"Где:
{pangolin_major_old_version}- исходная мажорная версия СУБД Pangolin (формат -0х);{base_version}– базовая версия продукта (текущая: 8).
-
Добавьте в конфигурационном файле параметр
extension_control_pathс путем до.controlфайлов для корректной работы сторонних расширений.- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
Отредактируйте конфигурационный файл
~/pangolin/cache/merge/postgresql.conf:extension_control_path = '/opt/pangolin-extensions/{pangolin_major_old_version}/share:$system'Отредактируйте конфигурационный файл
~/pangolin/cache/merge/postgres.yml:postgresql:parameters:extension_control_path: "/opt/pangolin-extensions/{pangolin_major_old_version}/share:$system"Где:
{pangolin_major_old_version}- исходная мажорная версия СУБД Pangolin (формат -0х).
Шаг 20. Подготовка к миграции данных (обязательно)
Подготовьте окружение для миграции данных: создайте необходимые директории, инициализируйте новый кластер СУБД и перенесите конфигурационные файлы.
Действия по подготовке к миграции данных СУБД
-
(мастер, реплика, арбитр) Создайте директории и рабочие поддиректории
$PGDATA_NEW/data,$PGBACKUP_NEW, а также каталоги для работы утилитыpg_upgrade:export PGDATA_NEW=/pgdata/xxexport PGBACKUP_NEW=/pgarclogs/xxsudo mkdir -p $PGDATA_NEW/{data,raft_data,raft_dump,raft} $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresql/pg_upgradesudo chown -R postgres:postgres $PGDATA_NEW $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresqlsudo chmod -R 0700 $PGDATA_NEW $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresql -
(мастер) Произведите установку пакета
pangolin-password-hash:export PASSWORD_HASH_VER=x.x.xsudo dnf install -y ~/pangolin/utilities/pangolin-password-hash-$PASSWORD_HASH_VER-sberlinux9.x86_64.rpm -
(мастер) Инициализируйте новый кластер СУБД Pangolin:
sudo /opt/pangolin-password-hash/bin/pangolin_password_hash -t scram-sha-256 -P '<password_postgres>' > ~/pangolin/cache/.tmp_filesudo cp -r ~/pangolin/cache/.tmp_file /home/postgres/sudo chown postgres:postgres /home/postgres/.tmp_filesudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/bin/initdb -D $PGDATA_NEW/data -k -A scram-sha-256 --pwfile ~/.tmp_file -E UTF8 --update-authid --lc-collate <данные из файла current_value.txt> --lc-ctype <данные из файла current_value.txt> --lc-messages <данные из файла current_value.txt> --lc-monetary <данные из файла current_value.txt> --lc-numeric <данные из файла current_value.txt> --lc-time <данные из файла current_value.txt> --wal-segsize <данные из файла current_value.txt>exitПример заполненной команды
initdb:/opt/pangolin-dbms-server/bin/initdb -D /pgdata/08/data -k -A scram-sha-256 --pwfile ~/.tmp_file -E UTF8 --update-authid --lc-collate en_US.utf-8 --lc-ctype en_US.utf-8 --lc-messages en_US.utf8 --lc-monetary en_US.utf8 --lc-numeric en_US.utf8 --lc-time en_US.utf8 --wal-segsize 16 -
(мастер) Переместите предварительно подготовленные конфигурационные файлы каталога в рабочую директорию:
export PGDATA_NEW=/pgdata/xxsudo cp -rf ~/pangolin/cache/merge/postgresql.conf $PGDATA_NEW/data/postgresql.confsudo cp -rf ~/pangolin/cache/merge/postgresql.base.conf $PGDATA_NEW/data/postgresql.base.confsudo cp ~/pangolin/cache/merge/pg_hba.conf $PGDATA_NEW/data/pg_hba.confsudo find "$PGDATA_NEW/data/" -maxdepth 1 -name "*.conf" -exec chown postgres:postgres {} \;sudo find "$PGDATA_NEW/data/" -maxdepth 1 -name "*.conf" -exec chmod 0700 {} \;(мастер, реплика) Дополнительно Для конфигурации с Pangolin Manager:
export PGDATA_NEW=/pgdata/xxsudo cp -rf ~/pangolin/cache/merge/postgres.yml /etc/pangolin-manager/postgres.ymlsudo cp -rf ~/pangolin/cache/merge/patroni.dynamic.json $PGDATA_NEW/data/patroni.dynamic.json # выполнить действие только на узле мастерsudo chown postgres:postgres /etc/pangolin-manager/postgres.yml $PGDATA_NEW/data/patroni.dynamic.jsonsudo chmod 0600 /etc/pangolin-manager/postgres.yml $PGDATA_NEW/data/patroni.dynamic.json -
(мастер) Внесите следующие корректировки в конфигурационные файлы СУБД для миграции с комментарием
tmp_line:export PGDATA=/pgdata/xxexport PGDATA_NEW=/pgdata/xxsudo sed -i '1ilocal all postgres scram-sha-256 #tmp_line' $PGDATA/data/pg_hba.confsudo sed -i '1ilocal all postgres scram-sha-256 #tmp_line' $PGDATA_NEW/data/pg_hba.confsudo sed -i -e "\$aautovacuum = 'off' #tmp_line" $PGDATA/data/postgresql.confsudo sed -i -e "\$asynchronous_commit = 'off' #tmp_line" $PGDATA/data/postgresql.confsudo sed -i -e "\$acron.database_name = 'template1' #tmp_line" $PGDATA/data/postgresql.confsudo sed -i -e "\$aautovacuum = 'off' #tmp_line" $PGDATA_NEW/data/postgresql.confsudo sed -i -e "\$asynchronous_commit = 'off' #tmp_line" $PGDATA_NEW/data/postgresql.confsudo sed -i -e "\$acron.database_name = 'template1' #tmp_line" $PGDATA_NEW/data/postgresql.conf
Шаг 21. Миграция данных с помощью утилиты pg_upgrade (обязательно)
Выполните миграцию данных из старой версии СУБД в новую с помощью утилиты pg_upgrade.
Действия по миграции данных СУБД
(мастер) Запустите миграцию данных с помощью pg_upgrade:
sudo -iu postgres
export PANGOLIN_OLD_VER=x.x
export PGPORT=<порт СУБД>
export PGHOST=127.0.0.1
export PGHOME=/usr/pangolin
export PGHOME_NEW=/opt/pangolin-dbms-server
export PGHOME_CLIENT=/usr/pangolin-dbms-client
export PGHOME_CLIENT_NEW=/opt/pangolin-dbms-client
export PGPASSWORD=<password_postgres>
export PGDATA=/pgdata/xx
export PGDATA_NEW=/pgdata/xx
$PGHOME_NEW/bin/pg_upgrade -b $PGHOME/bin -B $PGHOME_NEW/bin --old-bindirclient $PGHOME_CLIENT/bin --new-bindirclient $PGHOME_CLIENT_NEW/bin -d $PGDATA/data -D $PGDATA_NEW/data -p $PGPORT -P 5433 -j 2 --socketdir=/var/run/postgresql/pg_upgrade -l /pgarclogs/pg_upgrade --link -r
exit
Если в процессе обновления возникают ошибки, связанные с загрузкой расширений, например:
pg_restore: error: could not execute query: ERROR: duplicate key value violates unique constraint "pg_proc_oid_index"
DETAIL: Key (oid)=(17932) already exists.
добавьте к вызову pg_upgrade параметр --two-phases-extensions=fuzzystrmatch,postgis,postgis_raster,postgis_sfcgal,postgis_topology,postgis_tiger_geocoder,address_standardizer,address_standardizer_data_us,pgrouting,isn
Если параметр --two-phases-extensions уже используется, добавьте в передаваемый список расширение isn.
При предустановленном в СУБД расширении timescaledb, в строку запуска утилиты pg_upgrade, требуется добавить дополнительный флаг -c timescaledb.restoring='on'.
Если в процессе обновления возникают ошибки связанные с загрузкой расширений, например:
could not load library "$libdir/pg_stat_kcache": ERROR: This module can only be loaded via shared_preload_libraries
Или
2025-07-21 16:28:15.673 MSK [804508] FATAL: unrecognized configuration parameter "pg_stat_statements.max"
2025-07-21 16:28:15.673 MSK [804508] HINT: make sure pg_stat_statements is loaded, and make sure pg_stat_kcache is present after pg_stat_statements in the shared_preload_libraries setting
Попробуйте добавить их в параметр shared_preload_libraries, который находится в $PGDATA_NEW/data/postgresql.conf, в правильном порядке, как в примере ниже:
export PGDATA_NEW=/pgdata/xx
sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = 'pg_stat_statements,pg_stat_kcache'/g" $PGDATA_NEW/data/postgresql.conf
Шаг 22. Актуализация путей до табличных пространств (обязательно)
Актуализируйте пути к табличным пространствам после миграции данных. Этот шаг обязателен, если в СУБД используются пользовательские табличные пространства, расположенные вне основного каталога данных.
Действия по актуализации путей до табличных пространств
(мастер) Актуализируйте пути табличных пространств (ТП):
export PGDATA=/pgdata/xx
export PGDATA_NEW=/pgdata/xx
sudo rm -rf $PGDATA/tablespaces/<название ТП>/PG_15_XXXXXXXXX
sudo cp -ra $PGDATA/tablespaces $PGDATA_NEW/tablespaces
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
ln -sfn <path> $PGDATA_NEW/data/pg_tblspc/<oid>
exit
Где, значения для <path> и <oid> необходимо заменить на значения oid и pg_tablespace_location из файла /home/postgres/current_value.txt соответственно. В параметре <path> перед выполнением команды заменить значение $PGDATA на значение $PGDATA_NEW.
Пример команды:
sudo -iu postgres
ln -sfn /pgdata/08/tablespaces/Tbl_t /pgdata/08/data/pg_tblspc/16739
exit
Шаг 23. Перенос данных с помощью rsync на реплику (опционально)
Выполните данный шаг, если конфигурация с Pangolin Manager, иначе данный шаг пропустите и переходите к шагу 24.
Действия по переносу данных на реплику
-
(реплика) Сгенерируйте ключ доступа для переноса данных с мастера на реплику:
sudo -iu postgresmkdir -p /pgarclogs/cache/rsyncssh-keygenexitGenerating public/private rsa key pair.# Введите имя файла, в котором будет сохранен ключ: /pgarclogs/cache/rsync/ssh_key_rsyncEnter file in which to save the key (/home/postgres/.ssh/id_rsa): /pgarclogs/cache/rsync/ssh_key_rsync# Введите ключевую фразу (опционально):Enter passphrase (empty for no passphrase): <passphrase or enter># Введите ту же ключевую фразу еще раз (опционально):Enter same passphrase again: <passphrase or enter>Your identification has been saved in /pgarclogs/cache/rsync/ssh_key_rsync.Your public key has been saved in /pgarclogs/cache/rsync/ssh_key_rsync.pub.The key fingerprint is:SHA256:5VV.........The key's randomart image is:+---[RSA 3072]----+| ==+|| .BBo+|| .o.=*=+|| o..+ +++|| S .o = =o|| + o *.+|| o =. .* || ..oo.+. E|| .oo o... |+----[SHA256]-----+Копирование ssh-ключа с реплики на мастер:
sudo -iu postgresmkdir ~/.ssh && chmod 700 ~/.sshssh-copy-id -i /pgarclogs/cache/rsync/ssh_key_rsync postgres@<ip-address_мастер>exit -
(реплика) Запустите
rsyncдля переноса данных/pgdata:sudo -iu postgresexport PGDATA_NEW=/pgdata/xxsshpass -d4 /bin/rsync --delay-updates -F --checksum --archive --rsync-path=rsync --hard-links --progress --size-only --no-inc-recursive --delete --rsh='ssh -S none -i /pgarclogs/cache/rsync/ssh_key_rsync -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' --out-format='<<CHANGED>>%i %n%L' postgres@<ip-address_мастер>:$PGDATA_NEW /pgdataexit -
(реплика) Если есть табличные пространства, находящиеся в не
/pgdata, их необходимо аналогично перенести:sshpass -d4 /bin/rsync --delay-updates -F --checksum --archive --rsync-path=rsync --hard-links --size-only --stats --dry-run --delete --no-inc-recursive --rsh='ssh -S none -i /pgarclogs/cache/rsync/ssh_key_rsync -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' --out-format='<<CHANGED>>%i %n%L' <ip-address_мастер>:/pgdata/xx/tablespaces/tsin /pgdata/xx/tablespaces
Шаг 24. Индексирование и очистка устаревших записей (обязательно)
Выполните переиндексацию и анализ данных в обновленной БД. Этот шаг обязателен для обеспечения корректной работы индексов после миграции и оптимизации производительности СУБД.
Действия по индексированию и очистке устаревших записей
-
(мастер) Запустите экземпляр СУБД на мастере:
sudo -iu postgresexport PGHOME_NEW=/opt/pangolin-dbms-serverexport PGDATA_NEW=/pgdata/xx$PGHOME_NEW/bin/pg_ctl start -D $PGDATA_NEW/dataexit -
(мастер) Проиндексируйте данные в БД:
sudo -iu postgresexport PGPASSWORD=<password_postgres>export PGHOME_CLIENT_NEW=/opt/pangolin-dbms-clientexport PGHOST=127.0.0.1export PGDATA=$PGDATA_NEW$PGHOME_CLIENT_NEW/bin/reindexdb -j 2 --all$PGHOME_CLIENT_NEW/bin/vacuumdb -j 2 --analyze-in-stages --allexitВ случае наличия файла
/pgarclogs/pg_upgrade/reindex_gin.sqlвыполните следующую команду:sudo -iu postgresexport PGPASSWORD=<password_postgres>export PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/bin/psql < /pgarclogs/pg_upgrade/reindex_gin.sqlexit -
(мастер) Остановите экземпляр СУБД на мастере:
sudo -iu postgresexport PGHOME_NEW=/opt/pangolin-dbms-serverexport PGDATA_NEW=/pgdata/xx$PGHOME_NEW/bin/pg_ctl stop -D $PGDATA_NEW/dataexit
Шаг 25. Запуск компонентов СУБД Pangolin (обязательно)
Запустите все компоненты СУБД Pangolin после завершения обновления. Этот шаг обязателен для возобновления работы СУБД и предоставления доступа к данным.
Действия по запуску компонентов СУБД Pangolin
-
(мастер, реплика, арбитр) Запустите компоненты СУБД Pangolin:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl daemon-reloadsudo systemctl restart pangolin-poolersudo systemctl restart pangolin-certs-rotatesudo systemctl restart pangolin-auth-reencrypt@postgressudo systemctl restart pangolin-auth-reencrypt@kmadmin_pgsudo systemctl restart pangolin-manager -
на арбитре:
sudo systemctl daemon-reloadsudo systemctl restart pangolin-certs-rotatesudo systemctl restart pangolin-auth-reencrypt@postgressudo systemctl restart pangolin-auth-reencrypt@kmadmin_pgsudo systemctl restart pangolin-manager
-
на мастере и реплике:
sudo systemctl daemon-reloadsudo systemctl restart pangolin-poolersudo systemctl restart pangolin-certs-rotatesudo systemctl restart pangolin-auth-reencrypt@postgressudo systemctl restart pangolin-auth-reencrypt@kmadmin_pgsudo systemctl restart pangolin-managersudo systemctl restart etcd -
на арбитре:
sudo systemctl daemon-reloadsudo systemctl restart etcd
-
на мастере:
sudo systemctl daemon-reloadsudo systemctl restart pangolin-poolersudo systemctl restart pangolin-certs-rotatesudo systemctl restart pangolin-auth-reencrypt@postgressudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg# в случае наличия файла `postgresql.service`:sudo systemctl restart postgresql# в случае отсутствия файла `postgresql.service`:sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA_NEW/dataexit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgressystemctl --user daemon-reloadsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-managerexitsudo -iu kmadmin_pgsystemctl --user daemon-reloadsystemctl --user restart pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user daemon-reloadsystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-managerexitsudo -iu kmadmin_pgXDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user daemon-reloadXDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user restart pangolin-auth-reencryptexit
-
на мастере и реплике:
sudo -iu postgressystemctl --user daemon-reloadsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-managersystemctl --user restart etcdexitsudo -iu kmadmin_pgsystemctl --user daemon-reloadsystemctl --user restart pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user daemon-reloadsystemctl --user restart etcdexit
-
на мастере:
sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-serversystemctl --user daemon-reloadsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencrypt# в случае наличия файла `postgresql.service`:systemctl --user restart postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA_NEW/dataexitsudo -iu kmadmin_pgsystemctl --user daemon-reloadsystemctl --user restart pangolin-auth-reencryptexit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Произведите проверку состояния служб:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl status pangolin-poolersudo systemctl status pangolin-certs-rotatesudo systemctl status pangolin-auth-reencrypt@postgressudo systemctl status pangolin-auth-reencrypt@kmadmin_pgsudo systemctl status pangolin-manager -
на арбитре:
sudo systemctl status pangolin-certs-rotatesudo systemctl status pangolin-auth-reencrypt@postgressudo systemctl status pangolin-auth-reencrypt@kmadmin_pgsudo systemctl status pangolin-manager
-
на мастере и реплике:
sudo systemctl status pangolin-poolersudo systemctl status pangolin-certs-rotatesudo systemctl status pangolin-auth-reencrypt@postgressudo systemctl status pangolin-auth-reencrypt@kmadmin_pgsudo systemctl status pangolin-managersudo systemctl status etcd -
на арбитре:
sudo systemctl status etcd
-
на мастере:
sudo systemctl status pangolin-poolersudo systemctl status pangolin-certs-rotatesudo systemctl status pangolin-auth-reencrypt@postgressudo systemctl status pangolin-auth-reencrypt@kmadmin_pg# в случае наличия файла `postgresql.service`:sudo systemctl status postgresql# в случае отсутствия файла `postgresql.service`:sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/bin/pg_ctl status -D $PGDATA_NEW/dataexit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgressystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-managerexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-managerexitsudo -iu kmadmin_pgXDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status pangolin-auth-reencryptexit
-
на мастере и реплике:
sudo -iu postgressystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-managersystemctl --user status etcdexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user status etcdexit
-
на мастере:
sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-serversystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencrypt# в случае наличия файла `postgresql.service`:systemctl --user status postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME_NEW/bin/pg_ctl status -D $PGDATA_NEW/dataexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Запустите сторонние сервисы:
sudo systemctl restart crond
Шаг 26. Очистка кластера Pangolin Manager (опционально)
Выполните данный шаг, если конфигурация с Pangolin Manager, иначе данный шаг пропустите и переходите к шагу 27.
Действия по очистке кластера Pangolin Manager
-
(мастер) Произведите очистку кластера:
sudo -iu postgresexport CLUSTERNAME=clustername/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml remove $CLUSTERNAMEexit -
(мастер) Произведите
restartкомпонента Pangolin Manager:- С включенной функциональностью «Отказ от
root» - Без функциональности «Отказ от
root»
sudo -iu postgressystemctl --user restart pangolin-managerexitsudo systemctl restart pangolin-manager - С включенной функциональностью «Отказ от
-
(мастер) Выведите Pangolin Manager из режима паузы:
sudo -iu postgresexport CLUSTERNAME=clustername/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=false' --force/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart $CLUSTERNAMEexit -
(реплика) Произведите
restartкомпонента Pangolin Manager на реплике:- С включенной функциональностью «Отказ от
root» - Без функциональности «Отказ от
root»
sudo -iu postgressystemctl --user restart pangolin-managerexitsudo systemctl restart pangolin-manager - С включенной функциональностью «Отказ от
Шаг 27. Обновление каталога безопасности (обязательно)
Обновите каталог безопасности СУБД для применения новых механизмов защиты. Этот шаг обязателен для корректной работы функциональностей безопасности в новой версии СУБД.
Действия по обновлению каталога безопасности
-
(мастер) Добавьте временный параметр
enable_protection_catalogs_upgradeпод пользователемpostgresв конец конфигурационного файла (в зависимости от конфигурации) с помощью обычного текстового редактора:- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
Отредактируйте конфигурационный файл
$PGDATA_NEW/data/postgresql.conf:enable_protection_catalogs_upgrade = TrueОтредактируйте конфигурационный файл
/etc/pangolin-manager/postgres.yml:postgresql:parameters:enable_protection_catalogs_upgrade: True -
(мастер) Произведите
reloadиrestartСУБД в зависимости от конфигурации:- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/pg_ctl reload -D $PGDATA_NEW/data$PGHOME_NEW/pg_ctl restart -D $PGDATA_NEW/dataexitsudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport CLUSTERNAME=clustername/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 $CLUSTERNAMEexit -
(мастер) Проверьте подключение к каждой БД поочередно, кроме БД с включенным флагом
datallowconn.<DB>- заменить на название базы данных:Получение списка БД с выключенным флагом
datallowconn:sudo -iu postgrespsql -c "SELECT datname FROM pg_database WHERE not datallowconn;"exitПроверьте подключение к каждой БД, полученной из запроса выше:
sudo -iu postgrespsql -c "SELECT NOW();" -d <DB>exit -
(мастер) Удалите временный параметр
enable_protection_catalogs_upgradeпод пользователемpostgresиз конфигурационного файла (в зависимости от конфигурации) с помощью обычного текстового редактора: -
(мастер) Произведите
reloadиrestartСУБД в зависимости от конфигурации:- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
sudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport PGHOME_NEW=/opt/pangolin-dbms-server$PGHOME_NEW/pg_ctl reload -D $PGDATA_NEW/data$PGHOME_NEW/pg_ctl restart -D $PGDATA_NEW/dataexitsudo -iu postgresexport PGDATA_NEW=/pgdata/xxexport CLUSTERNAME=clustername/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 $CLUSTERNAMEexit
Шаг 28. Завершающие действия (обязательно)
Выполните завершающие действия: удалите временные файлы и параметры, актуализируйте конфигурацию. Этот шаг обязателен для приведения СУБД в рабочее состояние и удаления служебных данных, созданных в процессе обновления.
Действия по завершению обновления СУБД
-
(мастер, реплика) Удалите временные параметры из рабочих конфигурационных файлов:
export PGDATA_NEW=/pgdata/xxsudo sed -i '/local all postgres scram-sha-256 #tmp_line/d' $PGDATA_NEW/data/pg_hba.confsudo sed -i "/autovacuum = 'off' #tmp_line/d" $PGDATA_NEW/data/postgresql.confsudo sed -i "/synchronous_commit = 'off' #tmp_line/d" $PGDATA_NEW/data/postgresql.confsudo sed -i "/cron.database_name = 'template1' #tmp_line/d" $PGDATA_NEW/data/postgresql.conf -
(мастер, реплика) Удалите неактуальные рабочие файлы исходной БД:
export PGDATA_NEW=/pgdata/xxexport PANGOLIN_DBMS_MAJOR_MINOR_OLD=x.xexport PGDATA=/pgdata/xxexport PGBACKUP=/pgarclogs/xxsudo dnf remove -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_MINOR_OLD pangolin-dbms-$PANGOLIN_DBMS_MAJOR_MINOR_OLD-clientsudo ln -sfvn $PGDATA_NEW /pgdata/datasudo rm -rf $PGDATA $PGBACKUP -
(мастер, реплика, арбитр) Актуализируйте
dynmotd.sh:export PANGOLIN_MANAGER=x.x.xexport PANGOLIN_MANAGER_OLD=x.x.xexport PANGOLIN_FULL_VER=0x.00x.0xexport PANGOLIN_FULL_VER_OLD=0x.00x.0xsudo sed -i "s/$PANGOLIN_MANAGER_OLD/$PANGOLIN_MANAGER/g" /usr/local/sbin/dynmotd.shsudo sed -i "s/$PANGOLIN_FULL_VER_OLD/$PANGOLIN_FULL_VER/g" /usr/local/sbin/dynmotd.sh -
(мастер, реплика, арбитр) Актуализируйте
~/.bash_profileдля пользователяpostgres:export PGHOME="\/usr\/pangolin-x.x"export PGHOME_NEW="\/opt\/pangolin-dbms-server-x"export PGHOME_CLIENT="\/usr\/pangolin-dbms-client-x"export PGHOME_CLIENT_NEW="\/opt\/pangolin-dbms-client-x"export PGDATA="\/pgdata\/xx"export PGDATA_NEW="\/pgdata\/xx"sudo sed -i "s/$PGHOME/$PGHOME_NEW/g" /home/postgres/.bash_profilesudo sed -i "s/$PGHOME_CLIENT/$PGHOME_CLIENT_NEW/g" /home/postgres/.bash_profilesudo sed -i "s/$PGDATA/$PGDATA_NEW/g" /home/postgres/.bash_profile -
В случае использования ОС Astra Linux «Смоленск» выполните действия описанные в разделе особенностей работы с данной ОС.