Ручное обновление исполняемых файлов СУБД Pangolin
Данный раздел рассматривает ручное обновление исполняемых файлов СУБД Pangolin.
Перед началом выполнения инструкции необходимо убедиться, что yum/dnf-репозитории настроены корректно. При обновлении пакетов, содержащих эпоху в номере версии, важно учитывать специфику работы пакетных менеджеров. При попытке обновить пакет на новую версию без эпохи, обновление не произойдет. Перед выполнением обновления данных компонентов необходимо предварительно удалить текущий установленный пакет компонента.
Поскольку инструкция является универсальной для standalone и кластерных (cluster) конфигураций, каждый пункт необходимо выполнить на всех узлах экземпляра СУБД. На узле арбитр производить обновление компонентов только по необходимости.
Обновление выполняется покомпонентно. Шаги, соответствующие компонентам, отсутствующим в конфигурации, следует пропустить.
Обновление СУБД может осуществляться пользователем с правами суперпользователя, а также пользователем postgres.
Все команды ниже являются примерами. Их необходимо отредактировать в соответствии с требуемыми параметрами и конфигурациями. В названиях rpm/deb-пакетов и в блоках кода, при необходимости, замените наименование ОС и пакетного менеджера. Также, в данной инструкции, распакованный дистрибутив находится в каталоге под названием pangolin.
Обозначения
В инструкции используются переменные для динамической настройки. Перед выполнением команд эти переменные будут экспортироваться. Скорректируйте значение относительно реализуемого сценария обновления:
PANGOLIN_VER– новая версия СУБД Pangolin (формат -х.х.х);PANGOLIN_VER_OLD– исходная версия СУБД Pangolin (формат -х.х.х);PANGOLIN_FULL_VER– новая версия СУБД Pangolin (формат -0х.00х.0х);PANGOLIN_FULL_VER_OLD– исходная версия СУБД Pangolin (формат -0х.00х.0х);PANGOLIN_DBMS_MAJOR– новая мажорная версия СУБД Pangolin (формат -х);PANGOLIN_DBMS_MINOR– новая минорная версия СУБД Pangolin (формат -х);PANGOLIN_DBMS_MAJOR_OLD– исходная мажорная версия СУБД Pangolin (формат -х);PANGOLIN_DBMS_MINOR_OLD– исходная минорная версия СУБД Pangolin (формат -х);PANGOLIN_BACKUP_TOOLS– новая версия компонента Pangolin Backup Tools (формат -х.х.х);PANGOLIN_BACKUP_TOOLS_VENV– новая версия зависимостиpangolin-backup-tools-venv(формат -х.х.х);PANGOLIN_BACKUP_TOOLS_OLD– исходная версия компонента Pangolin Backup Tools (формат -х.х.х);PANGOLIN_BACKUP_TOOLS_VENV_OLD– исходная версия зависимостиpangolin-backup-tools-venv(формат -х.х.х);PANGOLIN_POOLER– новая версия компонента Pangolin Pooler (формат -х.х.х);PANGOLIN_POOLER_OLD– исходная версия компонента Pangolin Pooler (формат -х.х.х);PANGOLIN_MANAGER– новая версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_MANAGER_VENV– новая версия зависимостиpangolin-manager-venv(формат -х.х.х);PANGOLIN_MANAGER_OLD- исходная версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_MANAGER_VENV_OLD– исходная версия зависимостиpangolin-manager-venv(формат -х.х.х);PANGOLIN_TUNER– новая версия компонента Pangolin Tuner (формат -х.х.х);PANGOLIN_TUNER_OLD– исходная версия компонента Pangolin Tuner (формат -х.х.х);PANGOLIN_TIMESCALEDB– новая версия расширения timescaledb (формат -х.х.х);PANGOLIN_TIMESCALEDB_RELEASE– новая версия релиза пакета расширения timescaledb (формат -х.х.х);PANGOLIN_TIMESCALEDB_OLD– исходная версия расширения timescaledb (формат -х.х.х);PANGOLIN_POSTGIS– новая версия пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_PGROUTING– новая версия пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PG_BACKGROUND– новая версия пакета стороннего расширения pg_background (формат -х.х.х);PANGOLIN_POSTGIS_RELEASE– новая версия релиза пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_PGROUTING_RELEASE– новая версия релиза пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PG_BACKGROUND_RELEASE– новая версия релиза пакета стороннего расширения pg_background (формат -х.х.х);PANGOLIN_POSTGIS_OLD– исходная версия пакета стороннего расширения postgis (формат -х.х.х);PANGOLIN_PGROUTING_OLD– исходная версия пакета стороннего расширения pgrouting (формат -х.х.х);PANGOLIN_PG_BACKGROUND_OLD– исходная версия пакета стороннего расширения pg_background (формат -х.х.х);PGPASSWORD- пароль от пользователя БД (по умолчанию пользовательpostgres);PGDATA– исходный путь до данных СУБД Pangolin (формат -/pgdata/xx);PGHOME– исходный путь до серверной части СУБД Pangolin (формат -/usr/pangolin-x.x.xили/usr/pangolin-x.x);PGHOME_NEW– новый путь до серверной части СУБД Pangolin (формат -/usr/pangolin-x.x);PGHOME_CLIENT– исходный путь до клиентской части СУБД Pangolin (формат -/usr/pangolin-x.x.xили/usr/pangolin-x.xили/usr/pangolin-dbms-client-x.x);PGHOME_CLIENT_NEW– новый путь до клиентской части СУБД Pangolin (формат -/usr/pangolin-dbms-client-x.x);PGBACKUP– исходный путь для резервного копирования СУБД Pangolin (формат -/pgarclogs/xx);PGBACKUP_NEW– новый путь для резервного копирования СУБД Pangolin (формат -/pgarclogs/xx);PGPORT- порт СУБД Pangolin (по умолчанию5433);CLUSTERNAME- наименование кластера (по умолчаниюclustername).
Предусловие
Перед началом обновления необходимо выключить службу crond во избежание сторонних подключений на всех хостах СУБД.
В случае кластерной конфигурации дождитесь полного отсутствия задержки репликации между мастером и репликой. Перед началом процесса обновления узлы кластера должны быть синхронизированы.
Перед началом необходимо произвести проверку готовности СУБД к процессу обновления и устранить выявленные проблемы. Список необходимых проверок представлен в разделе «Проверка готовности к обновлению».
Проверка и устранение возможных ограничений происходит автоматически при выборе автоматизированного способа обновления.
В случае использования расширения timescaledb убедитесь, что обновляемая версия расширения поддерживается и подходит для запланированного сценария обновления. В противном случае необходимо сначала обновить расширение до допустимой версии. Если поднять версию расширения в рамках одной версии СУБД невозможно, следует произвести обновление СУБД на промежуточную, а затем на целевую версию. Уточнение по процессу обновления стендов с предустановленным расширением timescaledb указано в «Таблице поддерживаемых для обновления версий СУБД».
Сценарий обновления
Шаг 1. Резервное копирование
Сохраните рабочие файлы компонентов СУБД Pangolin:
-
general:mkdir -p ~/pangolin/cache/backup/pangolin_general/{postgres,kmadmin_pg}sudo cp -ra /usr/local/sbin/dynmotd.sh ~/pangolin/cache/backup/pangolin_general/sudo cp -ra /etc/profile ~/pangolin/cache/backup/pangolin_general/sudo cp -ra /home/postgres/.bash_profile ~/pangolin/cache/backup/pangolin_general/postgressudo cp -ra /home/postgres/.bashrc ~/pangolin/cache/backup/pangolin_general/postgressudo cp -ra /home/kmadmin_pg/.bash_profile ~/pangolin/cache/backup/pangolin_general/kmadmin_pgsudo cp -ra /home/kmadmin_pg/.bashrc ~/pangolin/cache/backup/pangolin_general/kmadmin_pg -
pangolin-auth-reencrypt:-
для версий до 6.3.0:
mkdir -p ~/pangolin/cache/backup/pangolin_auth_reencryptsudo cp -ra {path_to_service}/pangolin_reencrypt@.service ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra /opt/pangolin-common/bin/pg_auth_reencrypt ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra /etc/postgres/enc_util.cfg ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra /etc/postgres/enc_params.cfg.kmadmin_pg ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra /etc/postgres/enc_params.cfg.postgres ~/pangolin/cache/backup/pangolin_auth_reencrypt/ -
для версий с 6.3.0:
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_auth_reencryptsudo cp -ra {path_to_service}/pangolin-auth-reencrypt@.service ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra {path_to_service}/pangolin-auth-reencrypt.service ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo cp -ra /etc/pangolin-auth-reencrypt/enc_util.cfg ~/pangolin/cache/backup/pangolin_auth_reencrypt/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_auth_reencrypt/ pangolin-auth-reencrypt-$PANGOLIN_VER_OLD
-
-
pangolin-certs-rotate:-
для версий до 6.3.0:
mkdir -p ~/pangolin/cache/backup/pangolin_certs_rotatesudo cp -ra {path_to_service}/pg_certs_rotate_agent.service ~/pangolin/cache/backup/pangolin_certs_rotate/sudo cp -ra /opt/pangolin-common/bin/pg_certs_rotate_agent ~/pangolin/cache/backup/pangolin_certs_rotate/sudo cp -ra /etc/postgres/pg_certs_rotate_agent.yml ~/pangolin/cache/backup/pangolin_certs_rotate/ -
для версий с 6.3.0:
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_certs_rotatesudo cp -ra {path_to_service}/pangolin-certs-rotate.service ~/pangolin/cache/backup/pangolin_certs_rotate/sudo cp -ra /etc/pangolin-certs-rotate/pangolin-certs-rotate.yml ~/pangolin/cache/backup/pangolin_certs_rotate/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_certs_rotate/ pangolin-certs-rotate-$PANGOLIN_VER_OLD
-
-
pangolin-security-utilities:-
для версий до 6.3.0:
mkdir -p ~/pangolin/cache/backup/pangolin_security_utilitiessudo cp -ra /etc/postgres/enc_connection_settings_cert.cfg ~/pangolin/cache/backup/pangolin_security_utilities/sudo cp -ra /etc/postgres/enc_connection_settings.cfg ~/pangolin/cache/backup/pangolin_security_utilities/ -
для версий с 6.3.0:
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_security_utilitiessudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_security_utilities/ pangolin-security-utilities-$PANGOLIN_VER_OLD
-
-
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_toolssudo cp -ra /etc/pangolin-backup-tools/backup-tools-env ~/pangolin/cache/backup/pangolin_backup_tools/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_backup_tools/ pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_OLDsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_backup_tools/ pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV_OLD # Выполните команду в случае наличия зависимости `pangolin-backup-tools-venv` на исходном стенде -
Pangolin Pooler:
export PANGOLIN_POOLER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_poolersudo cp -ra {path_to_service}/pangolin-pooler.service ~/pangolin/cache/backup/pangolin_pooler/sudo cp -ra /etc/pangolin-pooler/pangolin-pooler.ini ~/pangolin/cache/backup/pangolin_pooler/sudo cp -ra /etc/pangolin-pooler/userlist.txt ~/pangolin/cache/backup/pangolin_pooler/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_pooler/ pangolin-pooler-$PANGOLIN_POOLER_OLD -
Pangolin Manager:
export PANGOLIN_MANAGER_OLD=x.x.xexport PANGOLIN_MANAGER_VENV_OLD=x.x.xexport PGDATA=/pgdata/xxmkdir -p ~/pangolin/cache/backup/pangolin_managersudo cp -ra {path_to_service}/pangolin-manager.service ~/pangolin/cache/backup/pangolin_manager/sudo cp -ra /etc/pangolin-manager/postgres.yml ~/pangolin/cache/backup/pangolin_manager/sudo cp -ra $PGDATA/data/patroni.dynamic.json ~/pangolin/cache/backup/pangolin_manager/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_manager/ pangolin-manager-$PANGOLIN_MANAGER_OLDsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_manager/ pangolin-manager-venv-$PANGOLIN_MANAGER_VENV_OLD # Выполните команду в случае наличия зависимости `pangolin-manager-venv` на исходном стенде -
pangolin-dbms:-
для версий до 6.2.0:
export PANGOLIN_FULL_VER_OLD=x.x.xexport PANGOLIN_VER_OLD=x.x.xexport PANGOLIN_TIMESCALEDB_OLD=x.x.xexport PGDATA=/pgdata/xxexport PGHOME=/usr/pangolin-x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_dbmssudo cp -ra {path_to_service}/postgresql.service ~/pangolin/cache/backup/pangolin_dbms/ # для конфигурации без Pangolin Managersudo cp -ra $PGDATA/data/*.conf ~/pangolin/cache/backup/pangolin_dbms/sudo cp -ra /etc/postgres/enc_utils_auth_settings.cfg ~/pangolin/cache/backup/pangolin_dbms/sudo cp -ra $PGHOME/ ~/pangolin/cache/backup/pangolin_dbms/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms/ platform-v-pangolin-dbms-$PANGOLIN_FULL_VER_OLD -
для версий с 6.2.0:
export PANGOLIN_VER_OLD=x.x.xexport PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_DBMS_MINOR_OLD=xexport PGDATA=/pgdata/xxmkdir -p ~/pangolin/cache/backup/pangolin_dbmssudo cp -ra {path_to_service}/postgresql.service ~/pangolin/cache/backup/pangolin_dbms/ # для конфигурации без Pangolin Managersudo cp -ra $PGDATA/data/*.conf ~/pangolin/cache/backup/pangolin_dbms/sudo cp -ra /etc/pangolin-auth-encryption/enc_utils_auth_settings.cfg ~/pangolin/cache/backup/pangolin_dbms/sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-$PANGOLIN_VER_OLDsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-client-$PANGOLIN_VER_OLD
-
-
pangolin-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 --downloadonly --destdir=~/pangolin/cache/backup/pangolin_timescaledb/ pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD -
pangolin-auth-password:export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_auth_passwordsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_auth_password/ pangolin-auth-password-$PANGOLIN_VER_OLD -
pangolin-tuner:export PANGOLIN_TUNER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_tunersudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_tuner/ pangolin-tuner-$PANGOLIN_TUNER_OLD -
pangolin-diagnostic-tool:-
для версий с 6.2.0 до 6.3.0:
export PGHOME=/usr/pangolin-x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_diagnostic_toolsudo cp -ra $PGHOME/diagnostic_tool ~/pangolin/cache/backup/pangolin_diagnostic_tool/ -
для версий с 6.3.0:
export PANGOLIN_VER_OLD=x.x.xmkdir -p ~/pangolin/cache/backup/pangolin_diagnostic_toolsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_diagnostic_tool/ pangolin-diagnostic-tool-$PANGOLIN_VER_OLD
-
-
Опциональные компоненты:
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 --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms_libpq/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-$PANGOLIN_VER_OLDsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms_libpq_dev/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-dev-$PANGOLIN_VER_OLD -
pangolin-untrustedрасширения:export PANGOLIN_VER_OLD=x.x.xexport PANGOLIN_DBMS_MAJOR_OLD=xexport PANGOLIN_DBMS_MINOR_OLD=xsudo mkdir -p ~/pangolin/cache/backup/pangolin_untrustedsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_untrusted/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_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 --downloadonly --destdir=~/pangolin/cache/backup/pangolin_external/ {postgis_pkg_name}-$PANGOLIN_POSTGIS_OLDsudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_external/ {pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLDsudo dnf download --downloadonly --destdir=~/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/.
Шаг 2. Подготовка к обновлению
-
Скачайте дистрибутив в рабочий каталог и распакуйте его. Далее по инструкции путь к компонентам дистрибутива будет формироваться по
~/pangolin:mkdir -p ~/pangolintar -xzvf pangolin.tar.gz -C ~/pangolin -
Перед началом обновления убедитесь, в необходимости обновления системных данных каталога. Запустите команду из примера ниже на узлах с СУБД:
СведенияКлючи
-tи-T, в режимеinfo, следует использовать с директорией/директориями старой версии. Подробнее о ключах, смотрите в справке к утилитеinplace_upgradeexport PANGOLIN_VER=x.x.xsudo mkdir -p /opt/pangolin-cache/pg_inplace_upgrade/{backup,log,dump}sudo chmod 700 -R /opt/pangolin-cachesudo chown postgres:postgres -R /opt/pangolin-cachesudo dnf install -y ~/pangolin/utilities/pangolin-inplace-upgrade-$PANGOLIN_VER-sberlinux8.x86_64.rpmsudo -iu postgresexport PANGOLIN_VER=x.x.xexport PANGOLIN_VER_OLD=x.x.xexport PGDATA=/pgdata/xxexport PGPORT=<port DBMS>export PGHOME=/usr/pangolin-x.xexport PGHOME_CLIENT=/usr/pangolin-dbms-client-x.x # для исходных версий ниже 6.2.0 используйте: export PGHOME_CLIENT=/usr/pangolin-x.xexport PGPASSWORD=<password for db user>cd /opt/pangolin-utilities/bin/pg_inplace_upgrade./inplace_upgrade.sh info -n $PANGOLIN_VER_OLD -N $PANGOLIN_VER -s /opt/pangolin-utilities/bin/pg_inplace_upgrade -B /opt/pangolin-cache/pg_inplace_upgrade/backup -d $PGDATA/data -l /opt/pangolin-cache/pg_inplace_upgrade/log -p $PGPORT -h 127.0.0.1 -u postgres -b postgres -m /opt/pangolin-cache/pg_inplace_upgrade/dump -t $PGHOME/bin -T $PGHOME_CLIENT/bin -P $PGPASSWORDВ случае, если необходимо произвести обновление системных данных каталога, будет выведено сообщение:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/update_catalog_versionINFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.logINFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.logINFO: ======= START INPLACE_UPGRADE IN INFO MODE =======INFO: ----------- Checking for the absence of previous launches -----------INFO: Checking for the absence of previous launches..... OKINFO: ----------- Initial update analysis -----------INFO: CATALOG_VERSION_NO_OLD: 202310091INFO: Following directories will be searched to find sql-scripts applicable in this run:INFO: /opt/pangolin-utilities/bin/update_catalog_version/sql_upgrade_6xx/6.4.0/INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231INFO: Initial update analysis........................... OKINFO: ----------- Update CATALOG_VERSION_NO -----------INFO: update_catalog_version: The new catalog version is the same as the current one.INFO: Update CATALOG_VERSION_NO......................... OKINFO: ----------- Read all catalog update SQL-scripts -----------INFO: Read all catalog update SQL-scripts............... OKINFO: ----------- Extract info about users tablespaces -----------INFO: paths: /opt/pangolin-utilities/bin/pg_inplace_upgrade/tmp_check/test_dbINFO: version: PostgreSQL 15.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Platform V SberLinux 8.5.0-18), 64-bitINFO: Extract info about users tablespaces.............. OKINFO: Free space in folder /opt/pangolin-cache/pg_inplace_upgrade/log/backup: 41217445888INFO: Folder /opt/pangolin-cache/pg_inplace_upgrade/log/backup is located in filesystem /dev/mapper/vg_root-lv_rootINFO: Following databases are about to be upgraded: postgrestemplate1template0...<Другие базы данных>...INFO: The size of backup files for postgres: 9822208 bytesINFO: The size of backup files for template1: 9822208 bytesINFO: We assume the size of template0 to be equal to template1: 9822208 bytes...<Оценка бэкапа других баз данных>...INFO: The backup size of pg_wal files: 16777216 bytesINFO: The total estimated size for backup files in all databases: 46243840INFO: Free space in folder /opt/pangolin-utilities/bin/pg_inplace_upgrade: 41217208320INFO: Folder /opt/pangolin-utilities/bin/pg_inplace_upgrade is located in filesystem /dev/mapper/vg_root-lv_rootINFO: Make dump for postgresINFO: ----------- Dump check size_postgres -----------INFO: Estimated size of the pg_catalog sql-dump of postgres database: 6507317INFO: Dump check size_postgres.......................... OKINFO: Make dump for template1INFO: ----------- Dump check size_template1 -----------INFO: Estimated size of the pg_catalog sql-dump of template1 database: 6507317INFO: We assume the dump size of template0 to be equal to template1: 6507317 bytesINFO: Dump check size_template1......................... OKINFO: Make dump for template0INFO: ----------- Dump check size_template0 -----------INFO: The estimation of dump for template0 is skippedINFO: Dump check size_template0......................... OK...<Оценка дампа других баз данных>...INFO: The total estimated size required for dump files in all databases: 39043902INFO: Directories /opt/pangolin-cache/pg_inplace_upgrade/log/backup and /opt/pangolin-utilities/bin/pg_inplace_upgrade are in the same filesystem /dev/mapper/vg_root-lv_root. All backup and dumps size: 85287742INFO:INFO mode finished with Success. Update required.===================================================Если нет необходимости в обновлении системных данных каталога, будет выведено сообщение:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_versionINFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.logINFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.logINFO: ======= START INPLACE_UPGRADE IN INFO MODE =======INFO: ----------- Initial update analysis -----------INFO: CATALOG_VERSION_NO_OLD: 202409231INFO: Following directories will be searched to find sql-scripts applicable in this run:INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.4.0/INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231INFO: Initial update analysis........................... OKINFO:INFO mode finished with Success. Update not required.===================================================Если в процессе работы утилиты что-то пошло не так, будет выведено сообщение:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_versionINFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.logINFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.logINFO: ======= START INPLACE_UPGRADE IN INFO MODE =======INFO: ----------- Initial update analysis -----------INFO: CATALOG_VERSION_NO_OLD: 202310091INFO: Following directories will be searched to find sql-scripts applicable in this run:INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.2.0/INFO: Version: 6.2.0 CATALOG_VERSION_NO_NEW: 202310091INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.3.0/INFO: Version: 6.3.0 CATALOG_VERSION_NO_NEW: 202310091INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.4.0/INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231ERROR: File /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.4.1/CATALOG_VERSION was not foundINFO: Initial update analysis........................... FAILINFO:INFO mode finished with Error.===================================================СведенияДалее по инструкции выполнение «Шаг 20» необходимо только в том случае, если утилита
inplace_upgrade.shвернула сообщение на данном шаге сообщение формата:«INFO mode finished with Success. Update required». -
Для конфигурации с Pangolin Manager. С помощью функции
edit-configпод пользователемpostgresпроизведите добавление временного слота репликацииtmp_update_slotв конфигурацию DCS:sudo -iu postgresexport PGHOME_CLIENT=/usr/pangolin-dbms-client-x.x # для исходных версий ниже 6.2.0 используйте: export PGHOME_CLIENT=/usr/pangolin-x.x/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config$PGHOME_CLIENT/bin/psql -c "SELECT * FROM pg_create_physical_replication_slot('tmp_update_slot', 'TRUE');"exitПример содержимого с временным слотом репликации:
ignore_slots:- name: tmp_update_slottype: physical
Шаг 3. Остановка компонентов СУБД Pangolin
-
В случае конфигурации с 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. Перед остановкой необходимо выполнить команду
CHECKPOINTна мастере. В случае кластерной конфигурации действия по остановке произведите сначала на мастере, затем на реплике, после на арбитре:- Без функциональности «Отказ от root»
- С включенной функциональностью «Отказ от root»
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере и реплике:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pg_certs_rotate_agentsudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin_reencrypt@postgressudo systemctl stop pangolin_reencrypt@kmadmin_pgsudo systemctl stop pangolin-managersudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit -
на арбитре:
sudo systemctl stop pangolin-certs-rotatesudo systemctl stop pg_certs_rotate_agentsudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin_reencrypt@postgressudo systemctl stop pangolin_reencrypt@kmadmin_pgsudo systemctl stop pangolin-manager
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере и реплике:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pg_certs_rotate_agentsudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin_reencrypt@postgressudo systemctl stop pangolin_reencrypt@kmadmin_pgsudo systemctl stop pangolin-managersudo systemctl stop etcdsudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit -
на арбитре:
sudo systemctl stop etcd
-
-
Для конфигурации без Pangolin Manager:
-
на мастере:
sudo systemctl stop pangolin-poolersudo systemctl stop pangolin-certs-rotatesudo systemctl stop pg_certs_rotate_agentsudo systemctl stop pangolin-auth-reencrypt@postgressudo systemctl stop pangolin-auth-reencrypt@kmadmin_pgsudo systemctl stop pangolin_reencrypt@postgressudo systemctl stop pangolin_reencrypt@kmadmin_pg# в случае наличия файла `postgresql.service`:sudo systemctl stop postgresql# в случае отсутствия файла `postgresql.service`:sudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xx$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере и реплике:
sudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pg_certs_rotate_agentsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencryptsystemctl --user stop pangolin-manager$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user stop pangolin-certs-rotatesystemctl --user stop pg_certs_rotate_agentsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_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-reencryptXDG_RUNTIME_DIR=/run/user/$(id -u) DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user stop pangolin_reencryptexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере и реплике:
sudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pg_certs_rotate_agentsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencryptsystemctl --user stop pangolin-managersystemctl --user stop etcd$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user stop etcdexit
-
-
Для конфигурации без Pangolin Manager:
-
на мастере:
sudo -iu postgresexport PGHOME=/usr/pangolin-x.xexport PGDATA=/pgdata/xxsystemctl --user stop pangolin-poolersystemctl --user stop pangolin-certs-rotatesystemctl --user stop pg_certs_rotate_agentsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencrypt# в случае наличия файла `postgresql.service`:systemctl --user stop postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME/bin/pg_ctl stop -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user stop pangolin-auth-reencryptsystemctl --user stop pangolin_reencryptexit
-
-
Проверьте, что все компоненты корректно остановлены:
sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-certs-rotate|pg_certs_rotate_agent|pangolin-auth-reencrypt|pg_auth_reencrypt|etcd" | grep -v grepЕсли команда в пункте 3 вернула не пустой результат, то выполните следующее:
sudo kill -9 <pid>sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-certs-rotate|pg_certs_rotate_agent|pangolin-auth-reencrypt|pg_auth_reencrypt|etcd" | grep -v grep
Шаг 4. Обновление компонента pangolin-auth-reencrypt
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf install -y ~/pangolin/utilities/pangolin-auth-reencrypt-$PANGOLIN_VER-sberlinux8.x86_64.rpm
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 5. Обновление компонента pangolin-certs-rotate
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf install -y ~/pangolin/utilities/pangolin-certs-rotate-$PANGOLIN_VER-sberlinux8.x86_64.rpm
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 6. Обновление компонента безопасности pangolin-security-utilities
-
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.xsudo dnf install -y ~/pangolin/utilities/pangolin-security-utilities-$PANGOLIN_VER-sberlinux8.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
- Для конфигурации с 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
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf install -y ~/pangolin/utilities/pangolin-diagnostic-tool-$PANGOLIN_VER-sberlinux8.x86_64.rpm
Шаг 8. Обновление компонента резервного копирования 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 install -y ~/pangolin/3rdparty/pangolin-backup-tools-venv/pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV-sberlinux8.x86_64.rpm -
Произведите обновление компонента:
export PANGOLIN_BACKUP_TOOLS=x.x.xsudo dnf update -y ~/pangolin/pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS-sberlinux8.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/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="/pgarclogs/06"# 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
Произведите обновление пакета компонента:
export PANGOLIN_POOLER=x.x.x
sudo dnf update -y ~/pangolin/pangolin-pooler-$PANGOLIN_POOLER-sberlinux8.x86_64.rpm
Шаг 10. Обновление компонента Pangolin Manager
-
Произведите обновление обязательной зависимости (
pangolin-manager-venv) компонента:tar -xzf ~/pangolin/3rdparty/3rdparty.tar.gz -C ~/pangolin/3rdparty/export PANGOLIN_MANAGER_VENV=x.x.xsudo dnf install -y ~/pangolin/3rdparty/pangolin-manager-venv/pangolin-manager-venv-$PANGOLIN_MANAGER_VENV-sberlinux8.x86_64.rpm -
Произведите обновление компонента:
export PANGOLIN_MANAGER=x.x.xsudo dnf update -y ~/pangolin/pangolin-manager-$PANGOLIN_MANAGER-sberlinux8.x86_64.rpm
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 11. Обновление компонента серверной части СУБД Pangolin
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_DBMS_MINOR=x
export PANGOLIN_VER_OLD=x.x.x
export PANGOLIN_DBMS_MAJOR_OLD=x
export PANGOLIN_DBMS_MINOR_OLD=x
sudo dnf remove -y platform-v-pangolin-dbms pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-$PANGOLIN_VER_OLD
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-$PANGOLIN_VER-sberlinux8.x86_64.rpm
Шаг 12. Обновление компонента клиентской части СУБД Pangolin
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_DBMS_MINOR=x
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-client-$PANGOLIN_VER-sberlinux8.x86_64.rpm
Шаг 13. Обновление пакета расширения pangolin-timescaledb
Произведите обновление пакета расширения:
export PANGOLIN_TIMESCALEDB=x.x.x
export PANGOLIN_TIMESCALEDB_RELEASE=x.x.x
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_DBMS_MINOR=x
export PANGOLIN_TIMESCALEDB_OLD=x.x.x
export PANGOLIN_DBMS_MAJOR_OLD=x
export PANGOLIN_DBMS_MINOR_OLD=x
sudo dnf remove -y pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD
sudo dnf install -y ~/pangolin/timescaledb_x_x_x/pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-apache-$PANGOLIN_TIMESCALEDB-$PANGOLIN_TIMESCALEDB_RELEASE.sberlinux8-x86_64.rpm
Шаг 14. Обновление компонента pangolin-auth-password
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
sudo dnf install -y ~/pangolin/utilities/pangolin-auth-password-$PANGOLIN_VER-sberlinux8.x86_64.rpm
Шаг 15. Обновление компонента Pangolin Tuner
Произведите обновление пакета компонента:
export PANGOLIN_TUNER=x.x.x
sudo dnf install -y ~/pangolin/utilities/pangolin-tuner-$PANGOLIN_TUNER-sberlinux8.x86_64.rpm
Шаг 16. Обновление опциональных пакетов
Произведите обновление опциональных пакетов:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_DBMS_MINOR=x
sudo dnf update -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-libpq-$PANGOLIN_VER-sberlinux8.x86_64.rpm
sudo dnf update -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-libpq-dev-$PANGOLIN_VER-sberlinux8.x86_64.rpm
Шаг 17. Обновление пакетов pangolin-untrusted расширений
Выполните данный шаг, если в СУБД используются untrusted-расширения. Список данных расширений и подробную информацию о них можно прочитать в разделе «Информация по Untrusted-расширениям».
-
Распакуйте архив, содержащий untrusted-расширения:
tar -xzf ~/pangolin/untrusted/untrusted.tar.gz -C ~/pangolin/untrusted/ -
Произведите обновление пакетов расширений:
export PANGOLIN_VER=x.x.xexport PANGOLIN_DBMS_MAJOR=xexport PANGOLIN_DBMS_MINOR=xsudo dnf install -y ~/pangolin/untrusted/pangolin-dbms-$PANGOLIN_DBMS_MAJOR.$PANGOLIN_DBMS_MINOR-<ext_name>-$PANGOLIN_VER-sberlinux8.x86_64.rpmГде
ext_name- название untrusted-расширения.
Шаг 18. Обновление пакетов сторонних расширений
Выполните данный шаг, если в СУБД используются сторонние расширения. Список данных расширений и подробную информацию о них можно прочитать в разделе 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.sberlinux8.x86_64.rpmsudo dnf install -y ~/pangolin/3rdparty/pgrouting/pangolin-pgrouting-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_PGROUTING.sberlinux8.x86_64.rpmsudo dnf install -y ~/pangolin/3rdparty/pg_background/pangolin-pg-background-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_PG_BACKGROUND.sberlinux8.x86_64.rpm -
Актуализируйте путь в конфигурационном файле к динамическим библиотекам для корректной работы сторонних расширений.
dynamic_library_pathдолжен содержать обязательное значение/opt/pangolin-extensions/{base_version}/libв первом приоритете. При необходимости, добавить через знак:исходные значения параметра. Пример:-
Для конфигурации без Pangolin Manager. Отредактируйте конфигурационный файл
postgresql.conf:dynamic_library_path = '/opt/pangolin-extensions/{base_version}/lib:$libdir' -
Для конфигурации c Pangolin Manager. Отредактируйте конфигурационный файл
postgres.yml:postgresql:parameters:dynamic_library_path: "/opt/pangolin-extensions/{base_version}/lib:$libdir"
Где
{base_version}– базовая версия продукта (текущая: 6). -
-
Добавьте в конфигурационном файле параметр
alternative_extension_control_directoryс путем до.controlфайлов для корректной работы сторонних расширений. Пример:-
Для конфигурации без Pangolin Manager. Отредактируйте конфигурационный файл
postgresql.conf:alternative_extension_control_directory = '/opt/pangolin-extensions/{base_version}/share/extension' -
Для конфигурации c Pangolin Manager. Отредактируйте конфигурационный файл
postgres.yml:postgresql:parameters:alternative_extension_control_directory: "/opt/pangolin-extensions/{base_version}/share/extension"
Где
{base_version}– базовая версия продукта (текущая: 6). -
Шаг 19. Дополнительные действия
-
Скорректируйте конфигурационные файлы для работы с новой версией:
- Для конфигурации без Pangolin Manager:
- Для конфигурации с Pangolin Manager:
Пример изменяемых параметров
$PGDATA/data/postgresql.conf:pg_plugins_path = '$PGHOME_NEW/lib'Пример изменяемых параметров
/etc/pangolin-manager/postgres.yml:postgresql:bin_dir: $PGHOME_NEW/binbin_dir_client: $PGHOME_CLIENT_NEW/binparameters:pg_plugins_path: $PGHOME_NEW/lib -
(master, replica, arbiter) Актуализируйте версии в файле
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 -
(master, replica, arbiter) Актуализируйте
.bash_profileдля пользователяpostgres:export PGHOME="\/usr\/pangolin-x.x"export PGHOME_NEW="\/usr\/pangolin-x.x"export PGHOME_CLIENT="\/usr\/pangolin-dbms-client-x.x"export PGHOME_CLIENT_NEW="\/usr\/pangolin-dbms-client-x.x"sudo sed -i '/LD_LIBRARY_PATH/d' /home/postgres/.bash_profilesudo sed -i '/PG_PLUGINS_PATH/d' /home/postgres/.bash_profilesudo sed -i "s/$PGHOME_CLIENT/$PGHOME_CLIENT_NEW/g" /home/postgres/.bash_profile # если переменной не существовало, выполните: sudo sed -i "$ a export PGHOME_CLIENT=$PGHOME_CLIENT_NEW" /home/postgres/.bash_profilesudo sed -i "s/$PGHOME/$PGHOME_NEW/g" /home/postgres/.bash_profile
Произведите дополнительно данные действия на узле арбитр.
Шаг 20. Запуск утилиты обновления системных данных каталога СУБД Pangolin
Выполните данный шаг, если утилита inplace_upgrade.sh вернула сообщение на «Шаге 2»: «INFO mode finished with Success. Update required».
-
Заблокируйте трафик на всех узлах СУБД, убедитесь в отсутствии активных внешних подключений, в течение всего процесса обновления.
-
При помощи текстового редактора добавьте в конец конфигурационного файла
$PGDATA/data/postgresql.confвременные значения на узлах с СУБД под пользователемpostgres:synchronous_commit = 'off' #tmp_lineautovacuum = 'off' #tmp_linecron.database_name = 'template1' #tmp_line -
Произведите запуск обновления системных данных на мастере:
sudo -iu postgresexport PANGOLIN_VER=x.x.xexport PANGOLIN_VER_OLD=x.x.xexport PGDATA=/pgdata/xxexport PGPORT=<port DBMS>export PGHOME_NEW=/usr/pangolin-x.xexport PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.x # для исходных версий ниже 6.2.0 используйте: export PGHOME_CLIENT_NEW=/usr/pangolin-x.xexport PGPASSWORD=<password for db user>cd /opt/pangolin-utilities/bin/pg_inplace_upgrade./inplace_upgrade.sh update -n $PANGOLIN_VER_OLD -N $PANGOLIN_VER -s /opt/pangolin-utilities/bin/pg_inplace_upgrade -B /opt/pangolin-cache/pg_inplace_upgrade/backup -d $PGDATA/data -l /opt/pangolin-cache/pg_inplace_upgrade/log -p $PGPORT -h 127.0.0.1 -u postgres -b postgres -m /opt/pangolin-cache/pg_inplace_upgrade/dump -t $PGHOME_NEW/bin -T $PGHOME_CLIENT_NEW/bin -D -k -P $PGPASSWORDexitОжидаемый успешный результат:
...INFO: Update Complete!INFO: ----------- Finish upgrade -----------INFO: Finish upgrade.................................... OKINFO:UPDATE mode finished with Success.===================================================Внимание!В случае, если на мастере обновление прошло неуспешно, произведите восстановление по инструкции «Восстановление после неудачного обновления исполняемых файлов». Все дальнейшие шаги данной инструкции необходимо пропустить.
-
Произведите запуск обновления системных данных на реплике, если кластерная конфигурация и обновления на основном узле прошло успешно:
sudo -iu postgresexport PANGOLIN_VER=x.x.xexport PANGOLIN_VER_OLD=x.x.xexport PGDATA=/pgdata/xxexport PGPORT=<port DBMS>export PGHOME_NEW=/usr/pangolin-x.xexport PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.x # для исходных версий ниже 6.2.0 используйте: export PGHOME_CLIENT_NEW=/usr/pangolin-x.xexport PGPASSWORD=<password for db user>cd /opt/pangolin-utilities/bin/pg_inplace_upgrade./inplace_upgrade.sh update -n $PANGOLIN_VER_OLD -N $PANGOLIN_VER -s /opt/pangolin-utilities/bin/pg_inplace_upgrade -B /opt/pangolin-cache/pg_inplace_upgrade/backup -d $PGDATA/data -l /opt/pangolin-cache/pg_inplace_upgrade/log -p $PGPORT -h 127.0.0.1 -u postgres -b postgres -m /opt/pangolin-cache/pg_inplace_upgrade/dump -t $PGHOME_NEW/bin -T $PGHOME_CLIENT_NEW/bin -r -D -k -P $PGPASSWORDОжидаемый успешный результат:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_versionINFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.logINFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.logINFO: ======= START INPLACE_UPGRADE IN UPDATE MODE =======INFO: ----------- Initial update analysis -----------INFO: CATALOG_VERSION_NO_OLD: 202310091INFO: Following directories will be searched to find sql-scripts applicable in this run:INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/tmp_check/upgrade9/sql_upgrade_6xx/6.4.0/INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231INFO: Initial update analysis........................... OKINFO: ----------- Update CATALOG_VERSION_NO -----------INFO: update_catalog_version: Catalog version has been successfully updated to 202409231.INFO: Update CATALOG_VERSION_NO......................... OKINFO: ----------- Read all catalog update SQL-scripts -----------INFO: Read all catalog update SQL-scripts............... OKINFO: ----------- Update user tablespaces -----------INFO: renamed '/tmp/WDfqY_1Ing/PG_15_202310091' -> '/tmp/WDfqY_1Ing/PG_15_202409231'INFO: Rename directories of user tablespacesINFO: Update user tablespaces........................... OKINFO: Replica is updatedINFO:UPDATE mode finished with Success.===================================================Внимание!В случае, если на реплике обновление прошло неуспешно, произведите восстановление по инструкции «Восстановление после неудачного обновления исполняемых файлов». Все дальнейшие шаги данной инструкции необходимо пропустить.
Шаг 21. Запуск компонентов СУБД Pangolin
-
Удалите временные переменные из
$PGDATA/data/postgresql.confна узлах с СУБД:synchronous_commit = 'off' #tmp_lineautovacuum = 'off' #tmp_linecron.database_name = 'template1' #tmp_line -
Запустите компоненты СУБД Pangolin:
- Без функциональности «Отказ от root»
- С включенной функциональностью «Отказ от root»
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере:
sudo 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 -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit -
на арбитре:
sudo systemctl restart pangolin-certs-rotatesudo systemctl restart pangolin-auth-reencrypt@postgressudo systemctl restart pangolin-auth-reencrypt@kmadmin_pgsudo systemctl restart pangolin-manager
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере:
sudo 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 etcdsudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit -
на арбитре:
sudo systemctl restart etcd
-
-
Для конфигурации без Pangolin Manager:
-
на мастере:
sudo 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=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-manager$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user restart pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --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 restart pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-managersystemctl --user restart etcd$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user restart pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user restart etcdexit
-
-
Для конфигурации без Pangolin Manager:
-
на мастере:
sudo -iu postgressystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencrypt# в случае наличия файла `postgresql.service`:systemctl --user restart postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME/bin/pg_ctl restart -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user restart pangolin-auth-reencryptexit
-
-
Произведите проверку состояния служб:
- Без функциональности «Отказ от root»
- С включенной функциональностью «Отказ от root»
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере:
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 -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexit -
на арбитре:
sudo systemctl status pangolin-certs-rotatesudo systemctl status pangolin-auth-reencrypt@postgressudo systemctl status pangolin-auth-reencrypt@kmadmin_pgsudo systemctl status pangolin-manager
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере:
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 etcdsudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexit -
на арбитре:
sudo systemctl status 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_pg# в случае наличия файла `postgresql.service`:sudo systemctl status postgresql# в случае отсутствия файла `postgresql.service`:sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на мастере:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-manager$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexitsudo -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
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на мастере:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-managersystemctl --user status etcd$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit -
на арбитре:
sudo -iu postgressystemctl --user status etcdexit
-
-
Для конфигурации без Pangolin Manager:
-
на мастере:
sudo -iu postgressystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencrypt# в случае наличия файла `postgresql.service`:systemctl --user status postgresql# в случае отсутствия файла `postgresql.service`:$PGHOME/bin/pg_ctl status -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager. Выведите компонент из режима паузы на мастере, дождитесь активного состояния и статуса основного узла (мастера) –
Leader:sudo -iu postgres/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 listexit -
Для конфигурации с Pangolin Manager на мастере включите синхронизацию:
sudo -iu postgres/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml show-config | grep synchronous > save_old_dcs_value.txt/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'synchronous_mode=true' --force/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'synchronous_mode_strict=true' --forceexit -
Для конфигурации с Pangolin Manager. Произведите запуск компонентов Pangolin на реплике:
- Без функциональности «Отказ от root»
- С включенной функциональностью «Отказ от root»
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на реплике:
sudo 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 -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на реплике:
sudo 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 etcdsudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на реплике:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-manager$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user restart pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на реплике:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user restart pangolin-poolersystemctl --user restart pangolin-certs-rotatesystemctl --user restart pangolin-auth-reencryptsystemctl --user restart pangolin-managersystemctl --user restart etcd$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user restart pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager. Произведите проверку состояния служб на реплике:
- Без функциональности «Отказ от root»
- С включенной функциональностью «Отказ от root»
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на реплике:
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 -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на реплике:
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 etcdsudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexit
-
-
Для конфигурации с Pangolin Manager и модулем Pangolin DCS:
-
на реплике:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-manager$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager и etcd:
-
на реплике:
sudo -iu postgresexport PGDATA=/pgdata/xxexport PGHOME_NEW=/usr/pangolin-x.xsystemctl --user status pangolin-poolersystemctl --user status pangolin-certs-rotatesystemctl --user status pangolin-auth-reencryptsystemctl --user status pangolin-managersystemctl --user status etcd$PGHOME_NEW/bin/pg_ctl status -D $PGDATA/dataexitsudo -iu kmadmin_pgsystemctl --user status pangolin-auth-reencryptexit
-
-
Для конфигурации с Pangolin Manager. Дождитесь статуса синхронизации на реплике –
sync_standby:sudo -iu postgres/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml listexit -
Для конфигурации с Pangolin Manager. Удалите временный физический слот репликации на мастера:
sudo -iu postgresexport PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.x$PGHOME_CLIENT_NEW/bin/psql -c "SELECT * FROM pg_drop_replication_slot('tmp_update_slot');"/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --replace /opt/pangolin-cache/patroni.dynamic.json --forceexit -
С помощью функции
edit-configпод пользователемpostgresпроизведите ручное восстановление исходных значений конфигурации DCS согласно информации из файлаsave_old_dcs_value.txt:sudo -iu postgres/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-configexit
Шаг 22. Обновление расширений
-
Создайте временный файл
ext_update.sqlпод пользователем postgres и поместите его в/opt/pangolin-cache:DO $$DECLAREr text;dp_schema_name text;BEGINSELECT n.nspnameINTO dp_schema_nameFROM pg_catalog.pg_extension eJOIN pg_catalog.pg_namespace n ON e.extnamespace = n.oidWHERE e.extname = 'psql_diagpack';IF dp_schema_name IS NOT NULL THENRAISE NOTICE 'Drop extension psql_diagpack';EXECUTE format('DROP EXTENSION IF EXISTS %I', 'psql_diagpack');END IF;FOR r IN (SELECT extname FROM pg_catalog.pg_extension WHERE extname in ('adminpack', 'amcheck', 'auth_delay', 'auto_explain', 'autoinc', 'bloom', 'btree_gin', 'btree_gist', 'citext', 'cube', 'dblink', 'dict_int', 'dict_xsyn', 'earthdistance', 'file_fdw', 'fuzzystrmatch', 'hstore', 'hstore_plperl', 'hstore_plperlu', 'hstore_plpython3u', 'insert_username', 'intagg', 'intarray', 'isn', 'jsonb_plperl', 'jsonb_plperlu', 'jsonb_plpython3u', 'lo', 'ltree', 'ltree_plpython3u', 'moddatetime', 'pageinspect', 'pg_buffercache', 'pg_freespacemap', 'pg_prewarm', 'pg_stat_statements', 'pg_variables', 'pg_trgm', 'pg_visibility', 'pgcrypto', 'pgrowlocks', 'pgstattuple', 'plperl', 'plperlu', 'plpgsql', 'pltcl', 'plpython3u', 'plan_cache_limit', 'pg_freeze_recovery', 'ptrack', 'old_snapshot', 'psql_license_info', 'pltclu', 'postgres_fdw', 'refint', 'seg', 'sslinfo', 'tablefunc', 'tcn', 'tsm_system_rows', 'tsm_system_time', 'unaccent', 'uuid-ossp', 'xml2', 'bool_plperlu', 'bool_plperl', 'rum', 'oid2name', 'online_analyze', 'pg_backup', 'pg_standby', 'protected_dump', 'pg_profile', 'orafce', 'pg_squeeze', 'pg_cron', 'pg_repack', 'pgse_backup', 'pg_hint_plan', 'pg_outline', 'oracle_fdw', 'tds_fdw', 'psql_lockmon', 'pg_stat_kcache', 'psql_rotate_password', 'fasttrun', 'fulleq', 'mchar', 'psql_diagpack', 'pg_store_plans', 'pg_orphaned', 'psql_resources_consumption_limits', 'vector', 'pg_surgery', 'pg_walinspect', 'anon', 'psql_data_lineage', 'psql_bfile', 'postgis', 'postgis_raster', 'postgis_sfcgal', 'postgis_topology', 'address_standardizer', 'address_standardizer_data_us', 'postgis_tiger_geocoder', 'pg_background', 'pgrouting', 'plantuner’, 'anon', 'postgis', 'postgis_raster', 'postgis_sfcgal', 'postgis_topology', 'address_standardizer', 'address_standardizer_data_us', 'postgis_tiger_geocoder', 'pg_background', 'pgrouting') and extname not in ('pg_repack', 'timescaledb'))LOOPRAISE NOTICE 'Update extension %', r;EXECUTE FORMAT('ALTER EXTENSION %I UPDATE;', r);END LOOP;FOR r IN (SELECT extname FROM pg_catalog.pg_extension WHERE extname = 'pg_repack')LOOPRAISE NOTICE 'Update extension %', r;EXECUTE FORMAT('DROP EXTENSION IF EXISTS %I;', r);EXECUTE FORMAT('CREATE EXTENSION IF NOT EXISTS %I WITH SCHEMA ext;', r);END LOOP;IF dp_schema_name IS NOT NULL THENRAISE NOTICE 'Restore extension psql_diagpack in schema %', dp_schema_name;EXECUTE format('CREATE EXTENSION %I WITH SCHEMA %I', 'psql_diagpack', dp_schema_name);END IF;END $$; -
Создайте временный файл
run_update_extentions.shпод пользователем postgres и поместите его в/opt/pangolin-cache:#!/bin/bashdatabases=($($PG_HOME/bin/psql -t --csv -c "SELECT datname FROM pg_database WHERE datname NOT LIKE 'template0';"))echo "databases: " $databasesfor ud in "${databases[@]}"; doecho "database: " $udecho "Run ALTER EXTENSION UPDATE"$PG_HOME/bin/psql -d $ud -f /opt/pangolin-cache/ext_update.sql -1doneif [ "$?" -eq 0 ]; thenecho "All extensions have updated on nodes"elseecho "There were some problems during process updating"exit 1fitimescale_databases=($($PG_HOME/bin/psql -t --csv -c "SELECT datname FROM pg_database WHERE datname NOT LIKE 'template0';"))SELECT extname, extversion FROM pg_extension WHERE extname = 'timescaledb' -
Запустите sh-скрипт
run_update_extentions.shпод пользователем postgres:sudo -iu postgreschmod 0700 /opt/pangolin-cache/run_update_extentions.sh /opt/pangolin-cache/ext_update.sqlcd /opt/pangolin-cacheexport PGPASSWORD=<password for db user>export PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.xexport PG_HOME=$PGHOME_CLIENT_NEWexport PGHOST=127.0.0.1./run_update_extentions.shexit -
Зарегистрируйте новую версию расширения
timescaledbво всех БД, где оно присутствует.<DB>- заменить на название базы данных:sudo -iu postgresexport PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.x$PGHOME_CLIENT_NEW/bin/psql -d <DB> -c "ALTER EXTENSION timescaledb UPDATE;"exit
Шаг 23. Обновление каталога безопасности
В случае кластерной конфигурации произведите действия только на мастере.
-
Добавьте временный параметр
enable_protection_catalogs_upgradeпод пользователем postgres в конец конфигурационного файла с помощью обычного текстового редактора:-
Для конфигурации без Pangolin Manager. Отредактируйте конфигурационный файл
postgresql.conf:enable_protection_catalogs_upgrade = True -
Для конфигурации с Pangolin Manager. Отредактируйте конфигурационный файл
postgres.yml:postgresql:parameters:enable_protection_catalogs_upgrade: True
-
-
Произведите
reloadиrestartСУБД Pangolin:-
Для конфигурации без Pangolin Manager:
-
в случае отсутствия
postgresql.service:sudo -iu postgresexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl reload -D $PGDATA/data$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit -
с наличием файла
postgresql.service:sudo systemctl reload postgresqlsudo systemctl restart postgresql
-
-
Для конфигурации с Pangolin Manager:
sudo -iu postgresexport 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
-
-
Разрешите подключение к БД
template0:ALTER DATABASE template0 ALLOW_CONNECTIONS true;Выполните следующие команды в каждой БД поочередно,
<DB>замените на название базы данных:sudo -iu postgresexport PGHOME_CLIENT_NEW=/usr/pangolin-dbms-client-x.x$PGHOME_CLIENT_NEW/bin/psql -d <DB> -c "SELECT NOW()"exitЗапретите подключение к БД
template0:ALTER DATABASE template0 ALLOW_CONNECTIONS false; -
Удалите временный параметр
enable_protection_catalogs_upgradeиз конфигурационного файла под пользователем postgres, с помощью обычного текстового редактора. И произведитеreloadиrestartСУБД в зависимости от конфигурации:-
Для конфигурации без Pangolin Manager:
-
в случае отсутствия
postgresql.service:sudo -iu postgresexport PGHOME_NEW=/usr/pangolin-x.x$PGHOME_NEW/bin/pg_ctl reload -D $PGDATA/data$PGHOME_NEW/bin/pg_ctl restart -D $PGDATA/dataexit -
с наличием файла
postgresql.service:sudo systemctl reload postgresqlsudo systemctl restart postgresql
-
-
Для конфигурации с Pangolin Manager:
sudo -iu postgresexport 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
-
Шаг 24. Завершающие действия
Произведите выключение блокировки трафика и запуск службы crond, если ранее они были выключены.