Восстановление после неудачного обновления исполняемых файлов
Корректный откат к исходной версии Pangolin (6.1.0/6.1.2/6.1.4) при отсутствии резервной копии осуществить не получится (из-за изменения формата WAL-файлов), поэтому необходимо это учесть при попытке обновиться.
Перед началом выполнения инструкции убедитесь, что yum/dnf-репозитории настроены корректно. Откат СУБД осуществляется суперпользователем, пользователем postgres
или пользователем kmadmin_pg
.
Также для отката потребуется наличие резервного каталога, созданного скриптами во время обновления. Как пример, будет использоваться каталог /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213
.
Откат необходимо производить только для тех компонентов, которые были обновлены на новую версию. Иначе, пропустить выполнение шага восстановления компонента.
В разделе рассматривается процесс восстановления после неудачного обновления исполняемых файлов СУБД Pangolin.
В качестве примера указаны значения по умолчанию. При необходимости замените их на актуальные значения со стенда.
Поскольку инструкция является универсальной для standalone и cluster-архитектур, каждый пункт необходимо выполнить на узлах кластера БД (master, replica).
На узле арбитре обновление компонентов производите только по необходимости (в случае конфигурации с DCS).
Восстановление СУБД может осуществляться пользователем с правами суперпользователя, а также пользователем postgres
.
В названиях rpm-пакетов при необходимости в блоках кода замените наименование ОС и пакетного менеджера.
Все команды ниже являются примерами. Их необходимо отредактировать в соответствии с вашими параметрами и конфигурациями.
Обозначения
В инструкции используются переменные для динамической настройки. Перед выполнением команд эти переменные будут экспортироваться. Скорректируйте значение относительно реализуемого сценария обновления:
PANGOLIN_VER
– новая версия СУБД Pangolin (формат - х.х.х/x.x);PANGOLIN_MAJOR_VER
- мажорная версия СУБД Pangolin (формат - 0x);PANGOLIN_MAJOR_OLD_VER
- исходная мажорная версия СУБД Pangolin (формат - 0x);PANGOLIN_OLD_VER
– исходная версия СУБД Pangolin (формат - х.х.х/x.x);PANGOLIN_FULL_OLD_VER
– исходная версия СУБД Pangolin (формат - 0х.00х.0х);PANGOLIN_MANAGER_VER
– новая версия компонента pangolin-manager (формат - х.х.х);PANGOLIN_MANAGER_OLD_VER
– новая версия компонента pangolin-manager (формат - х.х.х);
Шаг 1. Подготовка
-
Убедитесь, что все компоненты остановлены:
sudo ps aux | grep -E "pgbouncer|pangolin-pooler|pangolin-manager|patroni|postgresql|pangolin-certs-rotate|pg_certs_rotate_agent|pangolin-auth-reencrypt|pangolin_reencrypt|etcd" | grep -v grep
-
Если команда вернула результат, то выполните:
sudo kill -9 <pid>
Примечание:
pid
можно получить следующим образом:sudo ps aux | grep -E "pgbouncer|pangolin-pooler|pangolin-manager|patroni|postgresql|pangolin-certs-rotate|pg_certs_rotate_agent|pangolin-auth-reencrypt|pangolin_reencrypt|etcd" | grep -v grep
Шаг 2. Восстановление pangolin-auth-reencrypt
(pangolin_reencrypt
)
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.3.0
- Для версий, начиная с 6.3.0
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-auth-reencrypt
rm -rf /etc/postgres/enc_util.cfg /etc/postgres/start_reencrypt.sh /etc/postgres/pg_auth_reencrypt /opt/pangolin-common/bin/pg_auth_reencrypt /etc/postgres/enc_params.cfg.kmadmin_pg /etc/postgres/enc_params.cfg.postgres /optpangolin-auth-reencrypt/ /etc/pangolin-auth-reencrypt/
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_auth_reencrypt/etc/postgres/enc_util.cfg /etc/postgres/enc_util.cfg
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_auth_reencrypt/opt/pangolin-common/bin/pg_auth_reencrypt /opt/pangolin-common/bin/pg_auth_reencrypt
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_auth_reencrypt/etc/postgres/enc_params.cfg.kmadmin_pg /etc/postgres/enc_params.cfg.kmadmin_pg
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_auth_reencrypt/etc/postgres/enc_params.cfg.postgres /etc/postgres/enc_params.cfg.postgres
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
export PANGOLIN_OLD_VER=x.x.x
dnf remove pangolin-auth-reencrypt
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_certs_rotate/pangolin-auth-reencrypt-$PANGOLIN_OLD_VER-sberlinux8.8.x86_64.rpm
mv /etc/pangolin-auth-reencrypt/pangolin-auth-reencrypt.yml.rpmsave /etc/pangolin-auth-reencrypt/pangolin-auth-reencrypt.yml
В случае конфигурации с DCS, произведите дополнительно обновление на узле arbiter.
Шаг 3. Восстановление pangolin-certs-rotate
(pg_certs_rotate_agent
)
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.3.0
- Для версий, начиная с 6.3.0
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-certs-rotate
rm -rf /etc/systemd/system/pangolin-certs-rotate.service /etc/pangolin-certs-rotate /opt/pangolin-certs-rotate /opt/pangolin-common/bin/pg_certs_rotate_agent
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_certs_rotate/etc/postgres/pg_certs_rotate_agent.yml /etc/postgres/pg_certs_rotate_agent.yml
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_certs_rotate/etc/systemd/system/pg_certs_rotate_agent.service /etc/systemd/system/pg_certs_rotate_agent.service
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_certs_rotate/opt/pangolin-common/bin/pg_certs_rotate_agent /opt/pangolin-common/bin/pg_certs_rotate_agent
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
export PANGOLIN_OLD_VER=x.x.x
dnf remove pangolin-certs-rotate
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_certs_rotate/pangolin-certs-rotate-$PANGOLIN_OLD_VER-sberlinux8.8.x86_64.rpm
mv /etc/pangolin-certs-rotate/pangolin-certs-rotate.yml.rpmsave /etc/pangolin-certs-rotate/pangolin-certs-rotate.yml
В случае конфигурации с DCS, произведите дополнительно обновление на узле arbiter.
Шаг 4. Восстановление pangolin-security-utilities
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.3.0
- Для версий, начиная с 6.3.0
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-security-utilities
cp -r /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_dbms/postgres /etc/
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
export PANGOLIN_OLD_VER=x.x.x
dnf remove pangolin-security-utilities
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_security_utilities/pangolin-security-utilities-$PANGOLIN_OLD_VER-sberlinux8.8.x86_64.rpm
В случае конфигурации с DCS, произведите дополнительно обновление на узле arbiter.
Шаг 5. Восстановление pangolin-diagnostic-tools
(diagnostic_tool
)
Произведите восстановление исходных рабочих файлов/rpm-пакета компонента из каталога резервной копии:
- Для версий до 6.3.0
- Для версий, начиная с 6.3.0
dnf remove pangolin-diagnostic-tool
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
export PANGOLIN_OLD_VER=x.x.x
dnf remove pangolin-diagnostic-tool
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_diagnostic_tool/pangolin-diagnostic-tool-$PANGOLIN_OLD_VER-sberlinux8.8.x86_64.rpm
Шаг 6. Восстановление pangolin-backup-tools
(manager_backup
)
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.1.3
- Для версий, начиная с 6.1.3
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-backup-tools
rm -rf /opt/omni/lbin/ /etc/pangolin-backup-tools
cp -ra /pgarclogs/backups/06.001.02/2024-10-23-T1213/pangolin_backup_tools/06_manage_backup.sh /opt/omni/lbin/06_manage_backup.sh
cp -ra /pgarclogs/backups/06.001.02/2024-10-23-T1213/pangolin_backup_tools/06_pg_se_archlogs.sh /opt/omni/lbin/06_pg_se_archlogs.sh
cp -ra /pgarclogs/backups/06.001.02/2024-10-23-T1213/pangolin_backup_tools/06_manage_backup.bin /opt/omni/lbin/06_manage_backup.bin
В случае наличия ранее установленного пакета pangolin-backup-tools-venv, необходимо установить его исходную версию:
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_backup_tools/pangolin-backup-tools-venv-1.1.0-sberlinux8.8.x86_64.rpm
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-backup-tools
rm -rf /opt/omni/lbin/
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_backup_tools/pangolin-backup-tools-1.2.2-sberlinux8.8.x86_64.rpm
Шаг 7. Восстановление pangolin-pooler
(pgbouncer
)
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.1.0
- Для версий, начиная с 6.1.0
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-pooler
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/etc/pgbouncer/userlist.txt /etc/pgbouncer/userlist.txt
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/etc/systemd/system/pgbouncer.service /etc/systemd/system/pgbouncer.service
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/etc/logrotate.d/pgbouncer /etc/logrotate.d/pgbouncer
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/usr/local/bin/pgbouncer /usr/local/bin/pgbouncer
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/usr/local/share/doc /usr/local/share/
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/usr/local/share/man/man1/pgbouncer.1 /usr/local/share/man/man1/pgbouncer.1
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/usr/local/share/man/man5/pgbouncer.5 /usr/local/share/man/man5/
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/etc/pgbouncer/pgbouncer.ini /etc/pgbouncer/
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-pooler
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/pangolin-pooler-1.3.1-sberlinux8.8.x86_64.rpm
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/etc/pangolin-pooler/userlist.txt /etc/pangolin-pooler/userlist.txt
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/etc/pangolin-pooler/pangolin-pooler.ini /etc/pangolin-pooler/pangolin-pooler.ini
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_pooler/opt/pangolin-pooler/bin/pangolin-pooler-restart.sh /opt/pangolin-pooler/bin/pangolin-pooler-restart.sh
Шаг 8. Восстановление pangolin-manager
(patroni
)
Восстановите исходные бинарные файлы/rpm пакета компонента из резервного каталога:
- Для версий до 6.1.2
- Для версий, начиная с 6.1.2
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-manager
rm -rf /opt/pangolin-manager/ /etc/pangolin-manager/ /usr/patroni/patroni_venv/
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/patroni_venv/ /usr/patroni/patroni_venv/
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/patroni.dynamic.json /pgdata/06/data/patroni.dynamic.json
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/etc/patroni/postgres.yml /etc/patroni/postgres.yml
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1400/pangolin_manager/etc/systemd/system/patroni.service /etc/systemd/system/patroni.service
ln -snf /usr/patroni/patroni_venv/lib /usr/patroni/patroni_venv/lib64
export PANGOLIN_FULL_OLD_VER=0x.00x.0x
dnf remove pangolin-manager
rm -rf /usr/patroni/patroni_venv/
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/pangolin-manager-venv-1.1.0-sberlinux8.8.x86_64.rpm
dnf install /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/pangolin-manager-2.1.2-sberlinux8.8.x86_64.rpm
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/etc/pangolin-manager/postgres.yml /etc/pangolin-manager/postgres.yml
cp -ra /pgarclogs/backups/$PANGOLIN_FULL_OLD_VER/2024-10-23-T1213/pangolin_manager/patroni.dynamic.json /pgdata/06/data/patroni.dynamic.json