Ручное обновление исполняемых файлов СУБД 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_MAJOR_OLD– исходная мажорная версия СУБД Pangolin (формат -х);PANGOLIN_BACKUP_TOOLS– новая версия компонента Pangolin Backup Tools (формат -х.х.х);PANGOLIN_BACKUP_TOOLS_VENV– новая версия зависимостиpangolin-backup-tools-venv(формат -х.х.х);PANGOLIN_POOLER– новая версия компонента Pangolin Pooler (формат -х.х.х);PANGOLIN_MANAGER– новая версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_MANAGER_VENV– новая версия зависимостиpangolin-manager-venv(формат -х.х.х);PANGOLIN_MANAGER_OLD- исходная версия компонента Pangolin Manager (формат -х.х.х);PANGOLIN_TUNER– новая версия компонента Pangolin Tuner (формат -х.х.х);PANGOLIN_TIMESCALEDB– новая версия расширения timescaledb (формат -х.х.х);PANGOLIN_TIMESCALEDB_RELEASE– новая версия релиза пакета расширения 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 (формат -х.х.х);PGPASSWORD- пароль от пользователя БД (по умолчанию пользовательpostgres);CLUSTERNAME- наименование кластера (по умолчаниюclustername).
Предусловие
Перед началом обновления необходимо выключить службуcrond во избежание сторонних подключений на всех хостах СУБД.
В случае кластерной конфигурации дождитесь полного отсутствия задержки репликации между мастером и репликой. Перед началом процесса обновления узлы кластера должны быть синхронизированы.
Перед началом необходимо произвести проверку готовности СУБД к процессу обновления и устранить выявленные проблемы. Список необходимых проверок представлен в разделе «Проверка готовности к обновлению».
Проверка и устранение возможных ограничений происходит автоматически при выбореавтоматизированного способа обновления.
В случае использования расширения timescaledb убедитесь, что обновляемая версия расширения поддерживается и подходит для запланированного сценария обновления. В противном случае необходимо сначала обновить расширение до допустимой версии. Если поднять версию расширения в рамках одной версии СУБД невозможно, следует произвести обновление СУБД на промежуточную, а затем на целевую версию. Уточнение по процессу обновления стендов с предустановленным расширением timescaledb указано в «Таблице поддерживаемых для обновления версий СУБД».
В случае использования расширения 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. Обновление пакета расширения pangolin-timescaledb (опционально, выполните в случае использования расширения);
- Шаг 14. Обновление компонента pangolin-auth-password (опционально, выполните в случае использования компонента);
- Шаг 15. Обновление компонента Pangolin Tuner (опционально, выполните в случае использования компонента);
- Шаг 16. Обновление опциональных пакетов (опционально, выполните в случае использования libpq-части);
- Шаг 17. Обновление пакетов pangolin-untrusted расширений (опционально, выполните в случае использования untrusted-расширений);
- Шаг 18. Обновление пакетов сторонних расширений (опционально, выполните в случае использования сторонних расширений);
- Шаг 19. Дополнительные действия (обязательно);
- Шаг 20. Запуск утилиты обновления системных данных каталога СУБД Pangolin (обязательно);
- Шаг 21. Запуск компонентов СУБД Pangolin (обязательно);
- Шаг 22. Обновление расширений (опционально, в случае наличия расширений);
- Шаг 23. Обновление каталога безопасности (обязательно);
- Шаг 24. Завершающие действия (обязательно).
Шаг 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/postgres
sudo cp -ra /home/postgres/.bashrc ~/pangolin/cache/backup/pangolin_general/postgres
sudo cp -ra /home/kmadmin_pg/.bash_profile ~/pangolin/cache/backup/pangolin_general/kmadmin_pg
sudo cp -ra /home/kmadmin_pg/.bashrc ~/pangolin/cache/backup/pangolin_general/kmadmin_pg -
pangolin-auth-reencrypt:(Опционально) Действия по резервному копированию компонента pangolin-auth-reencrypt
export PANGOLIN_VER_OLD=x.x.x
mkdir -p ~/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 {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:(Опционально) Действия по резервному копированию компонента pangolin-certs-rotate
export PANGOLIN_VER_OLD=x.x.x
mkdir -p ~/pangolin/cache/backup/pangolin_certs_rotate
sudo 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:(Опционально) Действия по резервному копированию компонента pangolin-security-utilities
export PANGOLIN_VER_OLD=x.x.x
mkdir -p ~/pangolin/cache/backup/pangolin_security_utilities
sudo dnf download --downloadonly --destdir=~/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
sudo 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_OLD
sudo dnf download --downloadonly --destdir=~/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
sudo 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:
(Опционально) Действия по резервному копированию компонента 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
sudo 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_OLD
sudo dnf download --downloadonly --destdir=~/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
mkdir -p ~/pangolin/cache/backup/pangolin_dbms
sudo cp -ra {path_to_service}/pangolin-dbms.service ~/pangolin/cache/backup/pangolin_dbms/ # для конфигурации без Pangolin Manager
sudo cp -ra $PGDATA/data/*.conf ~/pangolin/cache/backup/pangolin_dbms/
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-$PANGOLIN_VER_OLD
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-client-$PANGOLIN_VER_OLD -
pangolin-timescaledb:(Опционально) Действия по резервному копированию расширения timescaledb
export PANGOLIN_TIMESCALEDB_OLD=x.x.x
export PANGOLIN_DBMS_MAJOR_OLD=x
mkdir -p ~/pangolin/cache/backup/pangolin_timescaledb
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_timescaledb/ pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_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 --downloadonly --destdir=~/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 --downloadonly --destdir=~/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 --downloadonly --destdir=~/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
sudo mkdir -p ~/pangolin/cache/backup/pangolin_dbms_libpq ~/pangolin/cache/backup/pangolin_dbms_libpq_dev
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms_libpq/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-$PANGOLIN_VER_OLD
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_dbms_libpq_dev/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_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 --downloadonly --destdir=~/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 --downloadonly --destdir=~/pangolin/cache/backup/pangolin_external/ {postgis_pkg_name}-$PANGOLIN_POSTGIS_OLD
sudo dnf download --downloadonly --destdir=~/pangolin/cache/backup/pangolin_external/ {pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLD
sudo 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 ~/pangolin
tar -xzvf pangolin.tar.gz -C ~/pangolin -
Перед началом обновления убедитесь, в необходимости обновления системных данных каталога. Запустите команду из примера ниже на узлах с СУБД:
СведенияКлючи
-tи-T, в режимеinfo, следует использовать с директорией/директориями старой версии. Подробнее о ключах, смотрите в справке к утилитеinplace_upgradesudo mkdir -p /opt/pangolin-cache/pg_inplace_upgrade/{backup,log,dump}
sudo chmod 700 -R /opt/pangolin-cache
sudo chown postgres:postgres -R /opt/pangolin-cache
sudo dnf install ~/pangolin/utilities/pangolin-inplace-upgrade-$PANGOLIN_VER-sberlinux9.x86_64.rpm
sudo -iu postgres
export PANGOLIN_VER=x.x.x
export PANGOLIN_VER_OLD=x.x.x
export 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 -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/pg_inplace_upgrade/update_catalog_version
INFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.log
INFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.log
INFO: ======= START INPLACE_UPGRADE IN INFO MODE =======
INFO: ----------- Checking for the absence of previous launches -----------
INFO: Checking for the absence of previous launches..... OK
INFO: ----------- Initial update analysis -----------
INFO: CATALOG_VERSION_NO_OLD: 202310091
INFO: Following directories will be searched to find sql-scripts applicable in this run:
INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_version/sql_upgrade_6xx/6.4.0/
INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231
INFO: Initial update analysis........................... OK
INFO: ----------- Update CATALOG_VERSION_NO -----------
INFO: update_catalog_version: The new catalog version is the same as the current one.
INFO: Update CATALOG_VERSION_NO......................... OK
INFO: ----------- Read all catalog update SQL-scripts -----------
INFO: Read all catalog update SQL-scripts............... OK
INFO: ----------- Extract info about users tablespaces -----------
INFO: paths: /opt/pangolin-utilities/bin/pg_inplace_upgrade/tmp_check/test_db
INFO: version: PostgreSQL 18.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Platform V SberLinux 9), 64-bit
INFO: Extract info about users tablespaces.............. OK
INFO: Free space in folder /opt/pangolin_cache/pg_inplace_upgrade/log/backup: 41217445888
INFO: Folder /opt/pangolin_cache/pg_inplace_upgrade/log/backup is located in filesystem /dev/mapper/vg_root-lv_root
INFO: Following databases are about to be upgraded: postgres
template1
template0
<Другие базы данных>
INFO: The size of backup files for postgres: 9822208 bytes
INFO: The size of backup files for template1: 9822208 bytes
INFO: We assume the size of template0 to be equal to template1: 9822208 bytes
<Оценка бэкапа других баз данных>
INFO: The backup size of pg_wal files: 16777216 bytes
INFO: The total estimated size for backup files in all databases: 46243840
INFO: Free space in folder /opt/pangolin_cache/pg_inplace_upgrade: 41217208320
INFO: Folder /opt/pangolin_cache/pg_inplace_upgrade is located in filesystem /dev/mapper/vg_root-lv_root
INFO: Make dump for postgres
INFO: ----------- Dump check size_postgres -----------
INFO: Estimated size of the pg_catalog sql-dump of postgres database: 6507317
INFO: Dump check size_postgres.......................... OK
INFO: Make dump for template1
INFO: ----------- Dump check size_template1 -----------
INFO: Estimated size of the pg_catalog sql-dump of template1 database: 6507317
INFO: We assume the dump size of template0 to be equal to template1: 6507317 bytes
INFO: Dump check size_template1......................... OK
INFO: Make dump for template0
INFO: ----------- Dump check size_template0 -----------
INFO: The estimation of dump for template0 is skipped
INFO: Dump check size_template0......................... OK
<Оценка дампа других баз данных>
INFO: The total estimated size required for dump files in all databases: 39043902
INFO: Directories /opt/pangolin_cache/pg_inplace_upgrade/log/backup and /opt/pangolin_cache/pg_inplace_upgrade are in the same filesystem /dev/mapper/vg_root-lv_root. All backup and dumps size: 85287742
INFO:
INFO mode finished with Success. Update required.
===================================================Если нет необходимости в обновлении системных данных каталога, будет выведено сообщение:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_version
INFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.log
INFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.log
INFO: ======= START INPLACE_UPGRADE IN INFO MODE =======
INFO: ----------- Initial update analysis -----------
INFO: CATALOG_VERSION_NO_OLD: 202409231
INFO: 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: 202409231
INFO: Initial update analysis........................... OK
INFO:
INFO mode finished with Success. Update not required.
===================================================Если в процессе работы утилиты что-то пошло не так, будет выведено сообщение:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_version
INFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.log
INFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.log
INFO: ======= START INPLACE_UPGRADE IN INFO MODE =======
INFO: ----------- Initial update analysis -----------
INFO: CATALOG_VERSION_NO_OLD: 202310091
INFO: 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: 202310091
INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.3.0/
INFO: Version: 6.3.0 CATALOG_VERSION_NO_NEW: 202310091
INFO: /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.4.0/
INFO: Version: 6.4.0 CATALOG_VERSION_NO_NEW: 202409231
ERROR: File /opt/pangolin-utilities/bin/pg_inplace_upgrade/sql_upgrade_6xx/6.4.1/CATALOG_VERSION was not found
INFO: Initial update analysis........................... FAIL
INFO:
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 postgres
export $PGHOME_CLIENT=/usr/pangolin-x.x
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config
$PGHOME_CLIENT/psql -c "SELECT * FROM pg_create_physical_replication_slot('tmp_update_slot', 'TRUE');"
exitПример содержимого с временным слотом репликации:
ignore_slots:
- name: tmp_update_slot
type: physical
Шаг 3. Остановка компонентов СУБД Pangolin (обязательно)
Остановите все компоненты СУБД Pangolin перед обновлением. Этот шаг обязателен для предотвращения повреждения данных и корректного выполнения процесса обновления.
Действия по остановке компонентов СУБД
-
В случае конфигурации с 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. Перед остановкой необходимо выполнить команду
CHECKPOINTна мастере. В случае кластерной конфигурации действия по остановке произведите сначала на мастере, затем на реплике, после на арбитре:- Без функциональности «Отказ от
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
$PGHOME/bin/pg_ctl stop -D $PGDATA
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
$PGHOME/bin/pg_ctl stop -D $PGDATA
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
# в случае наличия файла `pangolin-dbms.service`:
sudo systemctl stop pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
sudo -iu postgres
$PGHOME/bin/pg_ctl stop -D $PGDATA
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере и реплике:
sudo -iu postgres
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
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
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
exit
sudo -iu kmadmin_pg
systemctl --user stop pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user stop etcd
exit
-
на мастере:
sudo -iu postgres
systemctl --user stop pangolin-pooler
systemctl --user stop pangolin-certs-rotate
systemctl --user stop pangolin-auth-reencrypt
# в случае наличия файла `pangolin-dbms.service`:
systemctl --user stop pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
$PGHOME/bin/pg_ctl stop -D $PGDATA
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
В случае конфигурации с 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
- Для конфигурации с 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 -
Актуализируйте конфигурационный файл
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/07"
# 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
В случае конфигурации с DCS, произведите дополнительно обновление на узле арбитр.
Шаг 11. Обновление компонента серверной части СУБД Pangolin (обязательно)
Действия по обновлению серверной части СУБД
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_VER_OLD=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf remove -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_VER_OLD
sudo dnf install -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 12. Обновление компонента клиентской части СУБД Pangolin (обязательно)
Действия по обновлению клиентской части СУБД
Произведите обновление пакета компонента:
export PANGOLIN_VER=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf update -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-client-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 13. Обновление пакета расширения pangolin-timescaledb (опционально)
Действия по обновлению расширения timescaledb
Произведите обновление пакета расширения:
export PANGOLIN_TIMESCALEDB=x.x.x
export PANGOLIN_DBMS_MAJOR=x
sudo dnf update -y ~/pangolin/timescaledb/pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR-apache-$PANGOLIN_TIMESCALEDB-sberlinux9-x86_64.rpm
Шаг 14. Обновление компонента 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
Шаг 15. Обновление компонента Pangolin Tuner (опционально)
Действия по обновлению компонента Pangolin Tuner
Произведите обновление пакета компонента:
export PANGOLIN_TUNER=x.x.x
sudo dnf update -y ~/pangolin/utilities/pangolin-tuner-$PANGOLIN_TUNER-sberlinux9.x86_64.rpm
Шаг 16. Обновление опциональных пакетов (опционально)
Действия по обновлению пакетов libpq
Произведите обновление опциональных пакетов:
export PANGOLIN_DBMS_MAJOR=x
export PANGOLIN_VER=x.x.x
sudo dnf update -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-libpq-$PANGOLIN_VER-sberlinux9.x86_64.rpm
sudo dnf update -y ~/pangolin/pangolin-dbms-$PANGOLIN_DBMS_MAJOR-libpq-dev-$PANGOLIN_VER-sberlinux9.x86_64.rpm
Шаг 17. Обновление пакетов 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-расширения.
Шаг 18. Обновление пакетов сторонних расширений (опционально)
Выполните данный шаг, если в СУБД используются сторонние расширения. Список данных расширений и подробную информацию о них можно прочитать в разделе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. Отредактируйте конфигурационный файл
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}– базовая версия продукта (текущая: 8). -
-
Добавьте в конфигурационном файле параметр
extension_control_pathс путем до.controlфайлов для корректной работы сторонних расширений. Пример:-
Для конфигурации без Pangolin Manager. Отредактируйте конфигурационный файл
postgresql.conf:extension_control_path = '/opt/pangolin-extensions/{base_version}/share' -
Для конфигурации c Pangolin Manager. Отредактируйте конфигурационный файл
postgres.yml:postgresql:
parameters:
extension_control_path: "/opt/pangolin-extensions/{base_version}/share"
Где
{base_version}– базовая версия продукта (текущая: 8). -
Шаг 19. Дополнительные действия (обязательно)
Этот шаг обязателен для корректного выполнения процесса обновления.
Действия по подготовке к запуску утилиты обновления
Актуализируйте версии в файле 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
Произведите дополнительно данные действия на узле арбитр.
Шаг 20. Запуск утилиты обновления системных данных каталога СУБД Pangolin (обязательно)
Выполните данный шаг, если утилитаinplace_upgrade.sh вернула сообщение на «Шаге 2»: «INFO mode finished with Success. Update required».
Действия по запуску утилиты обновления системных данных каталога
-
Заблокируйте трафик на всех узлах СУБД, убедитесь в отсутствии активных внешних подключений, в течение всего процесса обновления.
-
При помощи текстового редактора добавьте в конец конфигурационного файла
$PGDATA/postgresql.confвременные значения на узлах с СУБД под пользователемpostgres:synchronous_commit = 'off' #tmp_line
autovacuum = 'off' #tmp_line
cron.database_name = 'template1' #tmp_line -
Произведите запуск обновления системных данных на мастере:
sudo -iu postgres
export PANGOLIN_VER=x.x.x
export PANGOLIN_VER_OLD=x.x.x
export 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 -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 -D -k -P $PGPASSWORD
exitОжидаемый успешный результат:
INFO: Update Complete!
INFO: ----------- Finish upgrade -----------
INFO: Finish upgrade.................................... OK
INFO:
UPDATE mode finished with Success.
===================================================Внимание!В случае, если на мастере обновление прошло неуспешно, произведите восстановление по инструкции «Восстановление после неудачного обновления исполняемых файлов». Все дальнейшие шаги данной инструкции необходимо пропустить.
-
Произведите запуск обновления системных данных на реплике, если кластерная конфигурация и обновления на основном узле прошло успешно:
sudo -iu postgres
export PANGOLIN_VER=x.x.x
export PANGOLIN_VER_OLD=x.x.x
export 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 -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 -r -D -k -P $PGPASSWORDОжидаемый успешный результат:
INFO: Location of update_catalog_version utility: /opt/pangolin-utilities/bin/pg_inplace_upgrade/update_catalog_version
INFO: The log-file containing postgresql logs produced during catalog update: /pgarclogs/pg_inplace_upgrade/log/postgres_updade.log
INFO: The summarized catalog update report: /pgarclogs/pg_inplace_upgrade/log/report.log
INFO: ======= START INPLACE_UPGRADE IN UPDATE MODE =======
INFO: ----------- Initial update analysis -----------
INFO: CATALOG_VERSION_NO_OLD: 202310091
INFO: 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: 202409231
INFO: Initial update analysis........................... OK
INFO: ----------- Update CATALOG_VERSION_NO -----------
INFO: update_catalog_version: Catalog version has been successfully updated to 202409231.
INFO: Update CATALOG_VERSION_NO......................... OK
INFO: ----------- Read all catalog update SQL-scripts -----------
INFO: Read all catalog update SQL-scripts............... OK
INFO: ----------- Update user tablespaces -----------
INFO: renamed '/tmp/WDfqY_1Ing/PG_15_202310091' -> '/tmp/WDfqY_1Ing/PG_15_202409231'
INFO: Rename directories of user tablespaces
INFO: Update user tablespaces........................... OK
INFO: Replica is updated
INFO:
UPDATE mode finished with Success.
===================================================Внимание!В случае, если на реплике обновление прошло неуспешно, произведите восстановление по инструкции «Восстановление после неудачного обновления исполняемых файлов». Все дальнейшие шаги данной инструкции необходимо пропустить.
Шаг 21. Запуск компонентов СУБД Pangolin (обязательно)
Запустите все компоненты СУБД Pangolin после завершения обновления. Этот шаг обязателен для возобновления работы СУБД и предоставления доступа к данным.
Действия по запуску компонентов СУБД Pangolin
-
Удалите временные переменные из
$PGDATA/postgresql.confна узлах с СУБД:synchronous_commit = 'off' #tmp_line
autovacuum = 'off' #tmp_line
cron.database_name = 'template1' #tmp_line -
Запустите компоненты СУБД Pangolin:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере:
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 -iu postgres
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit -
на арбитре:
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 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 -iu postgres
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit -
на арбитре:
sudo systemctl restart etcd
-
на мастере:
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
# в случае наличия файла `pangolin-dbms.service`:
sudo systemctl restart pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
sudo -iu postgres
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
- Для конфигурации без Pangolin Manager
-
на мастере:
sudo -iu postgres
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
systemctl --user restart pangolin-manager
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user restart pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
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 restart pangolin-auth-reencrypt
exit
-
на мастере:
sudo -iu postgres
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
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user restart pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user restart etcd
exit
-
на мастере:
sudo -iu postgres
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
# в случае наличия файла `pangolin-dbms.service`:
systemctl --user restart pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
sudo -iu kmadmin_pg
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 -iu postgres
$PGHOME/bin/pg_ctl status -D $PGDATA
exit -
на арбитре:
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 -iu postgres
$PGHOME/bin/pg_ctl status -D $PGDATA
exit -
на арбитре:
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
# в случае наличия файла `pangolin-dbms.service`:
sudo systemctl status pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
sudo -iu postgres
$PGHOME/bin/pg_ctl status -D $PGDATA
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
$PGHOME/bin/pg_ctl status -D $PGDATA
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
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit -
на арбитре:
sudo -iu postgres
systemctl --user status etcd
exit
-
на мастере:
sudo -iu postgres
systemctl --user status pangolin-pooler
systemctl --user status pangolin-certs-rotate
systemctl --user status pangolin-auth-reencrypt
# в случае наличия файла `pangolin-dbms.service`:
systemctl --user status pangolin-dbms
# в случае отсутствия файла `pangolin-dbms.service`:
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
Для конфигурации с 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 list
exit -
Для конфигурации с 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' --force
exit -
Для конфигурации с Pangolin Manager. Произведите запуск компонентов Pangolin на реплике:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
-
на реплике:
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 -iu postgres
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
-
на реплике:
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 -iu postgres
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
-
на реплике:
sudo -iu postgres
systemctl --user restart pangolin-pooler
systemctl --user restart pangolin-certs-rotate
systemctl --user restart pangolin-auth-reencrypt
systemctl --user restart pangolin-manager
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user restart pangolin-auth-reencrypt
exit
-
на реплике:
sudo -iu postgres
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
$PGHOME/bin/pg_ctl restart -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user restart pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
Для конфигурации с Pangolin Manager. Произведите проверку состояния служб на реплике:
- Без функциональности «Отказ от
root» - С включенной функциональностью «Отказ от
root»
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и 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
sudo systemctl status pangolin-manager
sudo -iu postgres
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
-
на реплике:
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 -iu postgres
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
- Для конфигурации с Pangolin Manager и модулем Pangolin DCS
- Для конфигурации с Pangolin Manager и etcd
-
на реплике:
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
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
sudo -iu kmadmin_pg
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
$PGHOME/bin/pg_ctl status -D $PGDATA
exit
sudo -iu kmadmin_pg
systemctl --user status pangolin-auth-reencrypt
exit
- Без функциональности «Отказ от
-
Для конфигурации с Pangolin Manager. Дождитесь статуса синхронизации на реплике –
sync_standby:sudo -iu postgres
/opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml list
exit -
Для конфигурации с Pangolin Manager. Удалите временный физический слот репликации на мастера:
sudo -iu postgres
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 --force
exit -
С помощью функции
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-config
exit
Шаг 22. Обновление расширений (опционально)
Действия по обновлению расширений
-
Создайте временный файл
ext_update.sqlпод пользователемpostgresи поместите его в/opt/pangolin-cache:set ON_ERROR_STOP = true;
DO $$
DECLARE
r text;
dp_schema_name text;
BEGIN
SELECT n.nspname
INTO dp_schema_name
FROM pg_catalog.pg_extension e
JOIN pg_catalog.pg_namespace n ON e.extnamespace = n.oid
WHERE e.extname = 'psql_diagpack';
IF dp_schema_name IS NOT NULL THEN
RAISE 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 ('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', 'plantuner', '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'))
LOOP
RAISE 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')
LOOP
RAISE 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 THEN
RAISE 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/bash
databases=($($PG_HOME/bin/psql -t --csv -c "SELECT datname FROM pg_database WHERE datname NOT LIKE 'template0';"))
echo "databases: " $databases
for ud in "${databases[@]}"; do
echo "database: " $ud
echo "Run ALTER EXTENSION UPDATE"
$PG_HOME/bin/psql -d $ud -f /opt/pangolin-cache/ext_update.sql -1
done
if [ "$?" -eq 0 ]; then
echo "All extensions have updated on nodes"
else
echo "There were some problems during process updating"
exit 1
fi
timescale_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 postgres
chmod 0700 /opt/pangolin-cache/run_update_extentions.sh /opt/pangolin-cache/ext_update.sql
cd /opt/pangolin-cache/
export PGPASSWORD=<password for db user>
PG_HOME=$PGHOME_CLIENT PGHOST=127.0.0.1 ./run_update_extentions.sh
exit -
Зарегистрируйте новую версию расширения
timescaledbво всех БД, где оно присутствует.<DB>- заменить на название базы данных:sudo -iu postgres
psql -d <DB> -c "ALTER EXTENSION timescaledb UPDATE;"
exit
Шаг 23. Обновление каталога безопасности (обязательно)
Обновите каталог безопасности СУБД для применения новых механизмов защиты. Этот шаг обязателен для корректной работы функциональностей безопасности в новой версии СУБД.
В случае кластерной конфигурации произведите действия только на мастере.
Действия по обновлению каталога безопасности
-
Добавьте временный параметр
enable_protection_catalogs_upgradeпод пользователемpostgresв конец конфигурационного файла с помощью обычного текстового редактора:- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
Отредактируйте конфигурационный файл
postgresql.conf:enable_protection_catalogs_upgrade = TrueОтредактируйте конфигурационный файл
postgres.yml:postgresql:
parameters:
enable_protection_catalogs_upgrade: True -
Произведите
reloadиrestartСУБД Pangolin:- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
- В случае отсутствия
pangolin-dbms.service - С наличием файла
pangolin-dbms.service
sudo -iu postgres
$PGHOME/bin/pg_ctl reload -D $PGDATA
$PGHOME/bin/pg_ctl restart -D $PGDATA
exitsudo systemctl reload pangolin-dbms
sudo systemctl restart pangolin-dbmssudo -iu postgres
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>- заменить на название базы данных:sudo -iu postgres
psql -c "SELECT NOW()" -d <DB>
exit -
Удалите временный параметр
enable_protection_catalogs_upgradeиз конфигурационного файла под пользователем postgres, с помощью обычного текстового редактора. И произведитеreloadиrestartСУБД в зависимости от конфигурации:- Для конфигурации без Pangolin Manager
- Для конфигурации с Pangolin Manager
- В случае отсутствия
pangolin-dbms.service - С наличием файла
pangolin-dbms.service
sudo -iu postgres
$PGHOME/bin/pg_ctl reload -D $PGDATA
$PGHOME/bin/pg_ctl restart -D $PGDATA
exitsudo systemctl reload pangolin-dbms
sudo systemctl restart pangolin-dbmssudo -iu postgres
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
Шаг 24. Завершающие действия (обязательно)
Выполните завершающие действия: удалите временные файлы и параметры, актуализируйте конфигурацию. Этот шаг обязателен для приведения СУБД в рабочее состояние и удаления служебных данных, созданных в процессе обновления.
Завершающие действия по обновлению СУБД
- Произведите выключение блокировки трафика и запуск службы
crond, если ранее они были выключены. - В случае использования ОС Astra Linux «Смоленск» выполните действия описанные в разделе особенностей работы с данной ОС.