Ручное обновление с переносом данных СУБД 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/sbin
mkdir -p ~/pangolin/cache/backup/etc
mkdir -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/postgres
sudo cp -a /home/postgres/.bashrc ~/pangolin/cache/backup/home/postgres
sudo cp -a /home/kmadmin_pg/.bash_profile ~/pangolin/cache/backup/home/kmadmin_pg
sudo cp -a /home/kmadmin_pg/.bashrc ~/pangolin/cache/backup/home/kmadmin_pg -
pangolin-auth-reencrypt:(Опционально) Действия по резервному копированию компонента pangolin-auth-reencrypt
export PANGOLIN_VER_OLD=x.x.x
mkdir -p ~/pangolin/cache/backup/pangolin_auth_reencrypt/etc/pangolin-auth-reencrypt
mkdir -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.x
mkdir -p ~/pangolin/cache/backup/pangolin_certs_rotate/{path_to_service}
mkdir -p ~/pangolin/cache/backup/pangolin_certs_rotate/etc/pangolin-certs-rotate
sudo 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.x
mkdir -p ~/pangolin/cache/backup/pangolin_security_utilities
sudo 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.x
export PANGOLIN_BACKUP_TOOLS_VENV_OLD=x.x.x
mkdir -p ~/pangolin/cache/backup/pangolin_backup_tools/etc/pangolin-backup-tools/etc/pangolin-backup-tools
sudo 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_OLD
sudo 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.x
mkdir -p ~/pangolin/cache/backup/pangolin_pooler/{path_to_service}
mkdir -p ~/pangolin/cache/backup/pangolin_pooler/etc/pangolin-pooler
sudo 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.x
export PANGOLIN_MANAGER_VENV_OLD=x.x.x
export PGDATA=/pgdata/xx
mkdir -p ~/pangolin/cache/backup/pangolin_manager/{path_to_service}
mkdir -p ~/pangolin/cache/backup/pangolin_manager/etc/pangolin-manager
sudo 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_OLD
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_manager/ pangolin-manager-venv-$PANGOLIN_MANAGER_VENV_OLD -
pangolin-dbms:(Обязательно) Действия по резервному копированию основного компонента СУБД
export PANGOLIN_VER_OLD=x.x.x
export PGDATA=/pgdata/xx
export PANGOLIN_DBMS_MAJOR_OLD=x
export PANGOLIN_DBMS_MINOR_OLD=x
mkdir -p ~/pangolin/cache/backup/pangolin_dbms/{path_to_service}
mkdir -p ~/pangolin/cache/backup/pangolin_dbms/$PGDATA
sudo cp -a {path_to_service}/postgresql.service ~/pangolin/cache/backup/pangolin_dbms/{path_to_service}/ # для конфигурации без Pangolin Manager
sudo 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_OLD
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-client-$PANGOLIN_VER_OLD
sudo 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.x
export PANGOLIN_DBMS_MAJOR_OLD=x
export PANGOLIN_DBMS_MINOR_OLD=x
mkdir -p ~/pangolin/cache/backup/pangolin_timescaledb
sudo 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.x
mkdir -p ~/pangolin/cache/backup/pangolin_auth_password
sudo 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.x
mkdir -p ~/pangolin/cache/backup/pangolin_tuner
sudo 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.x
mkdir -p ~/pangolin/cache/backup/pangolin_diagnostic_tool
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_diagnostic_tool/ pangolin-diagnostic-tool-$PANGOLIN_VER_OLD -
Опциональные компоненты:
(Опционально) Действия по резервному копированию компонентов libpq
export PANGOLIN_VER_OLD=x.x.x
export PANGOLIN_DBMS_MAJOR_OLD=x
export PANGOLIN_DBMS_MINOR_OLD=x
sudo mkdir -p ~/pangolin/cache/backup/pangolin_dbms_libpq ~/pangolin/cache/backup/pangolin_dbms_libpq_dev
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_dbms_libpq/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-$PANGOLIN_VER_OLD
sudo 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.x
export PANGOLIN_DBMS_MAJOR_OLD=x
sudo mkdir -p ~/pangolin/cache/backup/pangolin_untrusted
sudo 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=x
export PANGOLIN_POSTGIS_OLD=x.x.x
export PANGOLIN_PGROUTING_OLD=x.x.x
export PANGOLIN_PG_BACKGROUND_OLD=x.x
sudo mkdir -p ~/pangolin/cache/backup/pangolin_external
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_external/ {postgis_pkg_name}-$PANGOLIN_POSTGIS_OLD
sudo dnf download --downloaddir=$(echo ~)/pangolin/cache/backup/pangolin_external/ {pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLD
sudo 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 - postgres
export PGDATA=/pgdata/xx
export PGHOME=/usr/pangolin
$PGHOME/bin/pg_ctl reload -D $PGDATA/data
exitsudo -iu postgres
export CLUSTERNAME=clustername
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLUSTERNAME
exitОшибка «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-8
export LANG=C.UTF-8 -
(мастер) Создайте каталог для резервной копии:
export PANGOLIN_FULL_VER_OLD=0х.00х.0х
sudo mkdir -p /pgarclogs/$PANGOLIN_FULL_VER_OLD/pg_probackup
sudo chmod -R 0700 /pgarclogs/cache/backup/pangolin_dbms
sudo chown -R postgres:postgres /pgarclogs/$PANGOLIN_FULL_VER_OLD/ -
(мастер) Выполните резервное копирование:
sudo -iu postgres
export PANGOLIN_FULL_VER_OLD=0х.00х.0х
export PGPASSWORD=<password_postgres>
export PGPORT=<порт СУБД>
export PGDATA=/pgdata/xx
export 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 -w
exit -
(мастер) Удалите строку
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 - postgres
export PGDATA=/pgdata/xx
export PGHOME=/usr/pangolin
$PGHOME/bin/pg_ctl reload -D $PGDATA/data
exitsudo -iu postgres
export CLUSTERNAME=clustername
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLUSTERNAME
exit
Шаг 2. Подготовка к обновлению (обязательно)
Сохраните настройки СУБД и подготовьте конфигурационные файлы для новой версии. Корректное выполнение этого этапа гарантирует сохранение всех пользовательских настроек и параметров работы СУБД после обновления.
Действия по подготовке к обновлению СУБД
-
(мастер) Сохраните исходные значения стенда для последующей инициализации новой БД:
sudo -iu postgres
export PGPASSWORD=<password_postgres>
psql -c "SHOW SERVER_ENCODING;" > current_value.txt
psql -c "SHOW LC_COLLATE;" >> current_value.txt
psql -c "SHOW LC_CTYPE;" >> current_value.txt
psql -c "SHOW LC_MESSAGES;" >> current_value.txt
psql -c "SHOW LC_MONETARY;" >> current_value.txt
psql -c "SHOW LC_NUMERIC;" >> current_value.txt
psql -c "SHOW LC_TIME;" >> current_value.txt
psql -c "SELECT setting FROM pg_settings WHERE name='wal_segment_size';" >> current_value.txt
psql -c "SELECT oid, pg_tablespace_location(oid) FROM pg_tablespace WHERE spcname not in ('pg_default', 'pg_global');" >> current_value.txt
exit -
(мастер, реплика) Сформируйте конфигурационные файлы для работы с новой версией СУБД:
- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
Скопируйте текущие конфигурационные файлы на мастере:
export PGDATA=/pgdata/xx
mkdir -p ~/pangolin/cache/merge
sudo cp $PGDATA/data/postgresql.conf ~/pangolin/cache/merge/postgresql.conf
sudo cp $PGDATA/data/postgresql.base.conf ~/pangolin/cache/merge/postgresql.base.conf
sudo 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/xx
mkdir -p ~/pangolin/cache/merge
sudo cp $PGDATA/data/patroni.dynamic.json ~/pangolin/cache/merge/patroni.dynamic.json
sudo cp /etc/pangolin-manager/postgres.yml ~/pangolin/cache/merge/postgres.ymlИзмените значение параметров в скопированных конфигурационных файлах для работы с новой версией СУБД.
Пример редактируемых параметров:
postgresql:
bin_dir: $PGHOME_NEW/bin
bin_dir_client: $PGHOME_CLIENT_NEW/bin
data_dir: $PGDATA_NEW/data
parameters:
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 -
(мастер, реплика, арбитр) Скачайте дистрибутив в рабочий каталог и распакуйте его. Далее по инструкции путь к компонентам дистрибутива будет формироваться по
~/pangolin:mkdir -p ~/pangolin
tar -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' --force
exit -
(мастер, реплика, арбитр) Остановите все компоненты СУБД Pangolin. В случае кластерной конфигурации действия по остановке произведите сначала на мастере, затем на реплике, после на арбитре:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl stop pangolin-pooler
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl stop pangolin-manager
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit -
на арбитре:
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl stop pangolin-manager
-
на мастере и реплике:
sudo systemctl stop pangolin-pooler
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl stop pangolin-manager
sudo systemctl stop etcd
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit -
на арбитре:
sudo systemctl stop etcd
-
на мастере:
sudo systemctl stop pangolin-pooler
sudo systemctl stop pangolin-certs-rotate
sudo systemctl stop pangolin-auth-reencrypt@postgres
sudo systemctl stop pangolin-auth-reencrypt@kmadmin_pg
# в случае наличия файла `postgresql.service`:
sudo systemctl stop postgresql
# в случае отсутствия файла `postgresql.service`:
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
systemctl --user stop pangolin-manager
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit
sudo -iu kmadmin_pg
systemctl --user stop pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
systemctl --user stop pangolin-manager
exit
sudo -iu kmadmin_pg
XDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user stop pangolin-auth-reencrypt
exit
-
на мастере и реплике:
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
systemctl --user stop pangolin-manager
systemctl --user stop etcd
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit
sudo -iu kmadmin_pg
systemctl --user stop pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user stop etcd
exit
-
на мастере:
sudo -iu postgres
export PGHOME=/usr/pangolin
export PGDATA=/pgdata/xx
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
# в случае наличия файла `postgresql.service`:
systemctl --user stop postgresql
# в случае отсутствия файла `postgresql.service`:
$PGHOME/bin/pg_ctl stop -D $PGDATA/data
exit
sudo -iu kmadmin_pg
systemctl --user stop pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Проверьте, что все компоненты корректно остановлены:
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.x
sudo 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.x
sudo 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.x
sudo 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.x
sudo 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 list
WALSTATE_FILE="$ARG_KEY_DBMS_CONNECT_BACKUP_DIR/wals_to_delete"
# Log file
LOG_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 DB
PG_FAST_CHECKPOINT=False
# setting up of connection string
PANGOLIN_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 backup
export PATH
export PGHOME
export PYTHONPATH
export LD_LIBRARY_PATH
export PG_PLUGINS_PATH
export 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.x
sudo dnf update -y ~/pangolin/3rdparty/pangolin-manager-venv/pangolin-manager-venv-$PANGOLIN_MANAGER_VENV-sberlinux9.x86_64.rpm -
(мастер, реплика) Произведите обновление компонента:
export PANGOLIN_MANAGER=x.x.x
sudo 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=x
export PGHOME_NEW=/opt/pangolin-dbms-server-$PANGOLIN_DBMS_MAJOR
sudo ln -sfvn $PGHOME_NEW /opt/pangolin-dbms
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 11. Обновление компонента серверной части СУБД Pangolin (обязательно)
Действия по обновлению серверной части СУБД
-
(мастер, реплика) Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo 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=x
export PANGOLIN_VER=x.x.x
sudo 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=x
export PANGOLIN_VER=x.x.x
sudo 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.x
export PANGOLIN_PGROUTING=x.x.x
export PANGOLIN_PG_BACKGROUND=x.x
export PANGOLIN_POSTGIS_RELEASE=x.x.x
export PANGOLIN_PGROUTING_RELEASE=x.x.x
export PANGOLIN_PG_BACKGROUND_RELEASE=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf install -y ~/pangolin/3rdparty/postgis/pangolin-postgis-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_POSTGIS-$PANGOLIN_POSTGIS_RELEASE.sberlinux9.x86_64.rpm
sudo dnf install -y ~/pangolin/3rdparty/pgrouting/pangolin-pgrouting-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_PGROUTING.sberlinux9.x86_64.rpm
sudo 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/xx
export PGBACKUP_NEW=/pgarclogs/xx
sudo mkdir -p $PGDATA_NEW/{data,raft_data,raft_dump,raft} $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresql/pg_upgrade
sudo chown -R postgres:postgres $PGDATA_NEW $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresql
sudo chmod -R 0700 $PGDATA_NEW $PGBACKUP_NEW /pgarclogs/pg_upgrade /var/run/postgresql -
(мастер) Произведите установку пакета
pangolin-password-hash:export PASSWORD_HASH_VER=x.x.x
sudo 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_file
sudo cp -r ~/pangolin/cache/.tmp_file /home/postgres/
sudo chown postgres:postgres /home/postgres/.tmp_file
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export 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/xx
sudo cp -rf ~/pangolin/cache/merge/postgresql.conf $PGDATA_NEW/data/postgresql.conf
sudo cp -rf ~/pangolin/cache/merge/postgresql.base.conf $PGDATA_NEW/data/postgresql.base.conf
sudo cp ~/pangolin/cache/merge/pg_hba.conf $PGDATA_NEW/data/pg_hba.conf
sudo 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/xx
sudo cp -rf ~/pangolin/cache/merge/postgres.yml /etc/pangolin-manager/postgres.yml
sudo 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.json
sudo chmod 0600 /etc/pangolin-manager/postgres.yml $PGDATA_NEW/data/patroni.dynamic.json -
(мастер) Внесите следующие корректировки в конфигурационные файлы СУБД для миграции с комментарием
tmp_line:export PGDATA=/pgdata/xx
export PGDATA_NEW=/pgdata/xx
sudo sed -i '1ilocal all postgres scram-sha-256 #tmp_line' $PGDATA/data/pg_hba.conf
sudo sed -i '1ilocal all postgres scram-sha-256 #tmp_line' $PGDATA_NEW/data/pg_hba.conf
sudo sed -i -e "\$aautovacuum = 'off' #tmp_line" $PGDATA/data/postgresql.conf
sudo sed -i -e "\$asynchronous_commit = 'off' #tmp_line" $PGDATA/data/postgresql.conf
sudo sed -i -e "\$acron.database_name = 'template1' #tmp_line" $PGDATA/data/postgresql.conf
sudo sed -i -e "\$aautovacuum = 'off' #tmp_line" $PGDATA_NEW/data/postgresql.conf
sudo sed -i -e "\$asynchronous_commit = 'off' #tmp_line" $PGDATA_NEW/data/postgresql.conf
sudo 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 postgres
mkdir -p /pgarclogs/cache/rsync
ssh-keygen
exitGenerating public/private rsa key pair.
# Введите имя файла, в котором будет сохранен ключ: /pgarclogs/cache/rsync/ssh_key_rsync
Enter 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 postgres
mkdir ~/.ssh && chmod 700 ~/.ssh
ssh-copy-id -i /pgarclogs/cache/rsync/ssh_key_rsync postgres@<ip-address_мастер>
exit -
(реплика) Запустите
rsyncдля переноса данных/pgdata:sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
sshpass -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 /pgdata
exit -
(реплика) Если есть табличные пространства, находящиеся в не
/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 postgres
export PGHOME_NEW=/opt/pangolin-dbms-server
export PGDATA_NEW=/pgdata/xx
$PGHOME_NEW/bin/pg_ctl start -D $PGDATA_NEW/data
exit -
(мастер) Проиндексируйте данные в БД:
sudo -iu postgres
export PGPASSWORD=<password_postgres>
export PGHOME_CLIENT_NEW=/opt/pangolin-dbms-client
export PGHOST=127.0.0.1
export PGDATA=$PGDATA_NEW
$PGHOME_CLIENT_NEW/bin/reindexdb -j 2 --all
$PGHOME_CLIENT_NEW/bin/vacuumdb -j 2 --analyze-in-stages --all
exitВ случае наличия файла
/pgarclogs/pg_upgrade/reindex_gin.sqlвыполните следующую команду:sudo -iu postgres
export PGPASSWORD=<password_postgres>
export PGHOME_NEW=/opt/pangolin-dbms-server
$PGHOME_NEW/bin/psql < /pgarclogs/pg_upgrade/reindex_gin.sql
exit -
(мастер) Остановите экземпляр СУБД на мастере:
sudo -iu postgres
export PGHOME_NEW=/opt/pangolin-dbms-server
export PGDATA_NEW=/pgdata/xx
$PGHOME_NEW/bin/pg_ctl stop -D $PGDATA_NEW/data
exit
Шаг 25. Запуск компонентов СУБД Pangolin (обязательно)
Запустите все компоненты СУБД Pangolin после завершения обновления. Этот шаг обязателен для возобновления работы СУБД и предоставления доступа к данным.
Действия по запуску компонентов СУБД Pangolin
-
(мастер, реплика, арбитр) Запустите компоненты СУБД Pangolin:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl daemon-reload
sudo systemctl restart pangolin-pooler
sudo systemctl restart pangolin-certs-rotate
sudo systemctl restart pangolin-auth-reencrypt@postgres
sudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl restart pangolin-manager -
на арбитре:
sudo systemctl daemon-reload
sudo systemctl restart pangolin-certs-rotate
sudo systemctl restart pangolin-auth-reencrypt@postgres
sudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl restart pangolin-manager
-
на мастере и реплике:
sudo systemctl daemon-reload
sudo systemctl restart pangolin-pooler
sudo systemctl restart pangolin-certs-rotate
sudo systemctl restart pangolin-auth-reencrypt@postgres
sudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl restart pangolin-manager
sudo systemctl restart etcd -
на арбитре:
sudo systemctl daemon-reload
sudo systemctl restart etcd
-
на мастере:
sudo systemctl daemon-reload
sudo systemctl restart pangolin-pooler
sudo systemctl restart pangolin-certs-rotate
sudo systemctl restart pangolin-auth-reencrypt@postgres
sudo systemctl restart pangolin-auth-reencrypt@kmadmin_pg
# в случае наличия файла `postgresql.service`:
sudo systemctl restart postgresql
# в случае отсутствия файла `postgresql.service`:
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA_NEW/data
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgres
systemctl --user daemon-reload
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
systemctl --user restart pangolin-manager
exit
sudo -iu kmadmin_pg
systemctl --user daemon-reload
systemctl --user restart pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user daemon-reload
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
systemctl --user restart pangolin-manager
exit
sudo -iu kmadmin_pg
XDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user daemon-reload
XDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user restart pangolin-auth-reencrypt
exit
-
на мастере и реплике:
sudo -iu postgres
systemctl --user daemon-reload
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
systemctl --user restart pangolin-manager
systemctl --user restart etcd
exit
sudo -iu kmadmin_pg
systemctl --user daemon-reload
systemctl --user restart pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user daemon-reload
systemctl --user restart etcd
exit
-
на мастере:
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
systemctl --user daemon-reload
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
# в случае наличия файла `postgresql.service`:
systemctl --user restart postgresql
# в случае отсутствия файла `postgresql.service`:
$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA_NEW/data
exit
sudo -iu kmadmin_pg
systemctl --user daemon-reload
systemctl --user restart pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Произведите проверку состояния служб:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo systemctl status pangolin-pooler
sudo systemctl status pangolin-certs-rotate
sudo systemctl status pangolin-auth-reencrypt@postgres
sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl status pangolin-manager -
на арбитре:
sudo systemctl status pangolin-certs-rotate
sudo systemctl status pangolin-auth-reencrypt@postgres
sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl status pangolin-manager
-
на мастере и реплике:
sudo systemctl status pangolin-pooler
sudo systemctl status pangolin-certs-rotate
sudo systemctl status pangolin-auth-reencrypt@postgres
sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
sudo systemctl status pangolin-manager
sudo systemctl status etcd -
на арбитре:
sudo systemctl status etcd
-
на мастере:
sudo systemctl status pangolin-pooler
sudo systemctl status pangolin-certs-rotate
sudo systemctl status pangolin-auth-reencrypt@postgres
sudo systemctl status pangolin-auth-reencrypt@kmadmin_pg
# в случае наличия файла `postgresql.service`:
sudo systemctl status postgresql
# в случае отсутствия файла `postgresql.service`:
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
$PGHOME_NEW/bin/pg_ctl status -D $PGDATA_NEW/data
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgres
systemctl --user status pangolin-pooler
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
systemctl --user status pangolin-manager
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
systemctl --user status pangolin-manager
exit
sudo -iu kmadmin_pg
XDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status pangolin-auth-reencrypt
exit
-
на мастере и реплике:
sudo -iu postgres
systemctl --user status pangolin-pooler
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
systemctl --user status pangolin-manager
systemctl --user status etcd
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user status etcd
exit
-
на мастере:
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
systemctl --user status pangolin-pooler
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
# в случае наличия файла `postgresql.service`:
systemctl --user status postgresql
# в случае отсутствия файла `postgresql.service`:
$PGHOME_NEW/bin/pg_ctl status -D $PGDATA_NEW/data
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
(мастер, реплика, арбитр) Запустите сторонние сервисы:
sudo systemctl restart crond
Шаг 26. Очистка кластера Pangolin Manager (опционально)
Выполните данный шаг, если конфигурация с Pangolin Manager, иначе данный шаг пропустите и переходите кшагу 27.
Действия по очистке кластера Pangolin Manager
-
(мастер) Произведите очистку кластера:
sudo -iu postgres
export CLUSTERNAME=clustername
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml remove $CLUSTERNAME
exit -
(мастер) Произведите
restartкомпонента Pangolin Manager:- С включенной функциональностью «Отказ от
root» - Без функциональности «Отказ от
root»
sudo -iu postgres
systemctl --user restart pangolin-manager
exitsudo systemctl restart pangolin-manager - С включенной функциональностью «Отказ от
-
(мастер) Выведите Pangolin Manager из режима паузы:
sudo -iu postgres
export 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 $CLUSTERNAME
exit -
(реплика) Произведите
restartкомпонента Pangolin Manager на реплике:- С включенной функциональностью «Отказ от
root» - Без функциональности «Отказ от
root»
sudo -iu postgres
systemctl --user restart pangolin-manager
exitsudo 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 postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
$PGHOME_NEW/pg_ctl reload -D $PGDATA_NEW/data
$PGHOME_NEW/pg_ctl restart -D $PGDATA_NEW/data
exitsudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export 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 $CLUSTERNAME
exit -
(мастер) Проверьте подключение к каждой БД поочередно, кроме БД с включенным флагом
datallowconn.<DB>- заменить на название базы данных:Получение списка БД с выключенным флагом
datallowconn:sudo -iu postgres
psql -c "SELECT datname FROM pg_database WHERE not datallowconn;"
exitПроверьте подключение к каждой БД, полученной из запроса выше:
sudo -iu postgres
psql -c "SELECT NOW();" -d <DB>
exit -
(мастер) Удалите временный параметр
enable_protection_catalogs_upgradeпод пользователемpostgresиз конфигурационного файла (в зависимости от конфигурации) с помощью обычного текстового редактора: -
(мастер) Произведите
reloadиrestartСУБД в зависимости от конфигурации:- Для конфигурации без Pangolin Manager
- Для конфигурации c Pangolin Manager
sudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export PGHOME_NEW=/opt/pangolin-dbms-server
$PGHOME_NEW/pg_ctl reload -D $PGDATA_NEW/data
$PGHOME_NEW/pg_ctl restart -D $PGDATA_NEW/data
exitsudo -iu postgres
export PGDATA_NEW=/pgdata/xx
export 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 $CLUSTERNAME
exit
Шаг 28. Завершающие действия (обязательно)
Выполните завершающие действия: удалите временные файлы и параметры, актуализируйте конфигурацию. Этот шаг обязателен для приведения СУБД в рабочее состояние и удаления служебных данных, созданных в процессе обновления.
Действия по завершению обновления СУБД
-
(мастер, реплика) Удалите временные параметры из рабочих конфигурационных файлов:
export PGDATA_NEW=/pgdata/xx
sudo sed -i '/local all postgres scram-sha-256 #tmp_line/d' $PGDATA_NEW/data/pg_hba.conf
sudo sed -i "/autovacuum = 'off' #tmp_line/d" $PGDATA_NEW/data/postgresql.conf
sudo sed -i "/synchronous_commit = 'off' #tmp_line/d" $PGDATA_NEW/data/postgresql.conf
sudo sed -i "/cron.database_name = 'template1' #tmp_line/d" $PGDATA_NEW/data/postgresql.conf -
(мастер, реплика) Удалите неактуальные рабочие файлы исходной БД:
export PGDATA_NEW=/pgdata/xx
export PANGOLIN_DBMS_MAJOR_MINOR_OLD=x.x
export PGDATA=/pgdata/xx
export PGBACKUP=/pgarclogs/xx
sudo dnf remove -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_MINOR_OLD pangolin-dbms-$PANGOLIN_DBMS_MAJOR_MINOR_OLD-client
sudo ln -sfvn $PGDATA_NEW /pgdata/data
sudo rm -rf $PGDATA $PGBACKUP -
(мастер, реплика, арбитр) Актуализируйте
dynmotd.sh:export PANGOLIN_MANAGER=x.x.x
export PANGOLIN_MANAGER_OLD=x.x.x
export PANGOLIN_FULL_VER=0x.00x.0x
export PANGOLIN_FULL_VER_OLD=0x.00x.0x
sudo sed -i "s/$PANGOLIN_MANAGER_OLD/$PANGOLIN_MANAGER/g" /usr/local/sbin/dynmotd.sh
sudo 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_profile
sudo sed -i "s/$PGHOME_CLIENT/$PGHOME_CLIENT_NEW/g" /home/postgres/.bash_profile
sudo sed -i "s/$PGDATA/$PGDATA_NEW/g" /home/postgres/.bash_profile -
В случае использования ОС Astra Linux «Смоленск» выполните действия описанные в разделе особенностей работы с данной ОС.