Перейти к основному содержимому

Восстановление после неудачного обновления с переносом данных

В разделе рассматривается процесс восстановления после неудачного обновления с переносом данных СУБД Pangolin.

Внимание!

Перед началом выполнения инструкции необходимо убедиться, что yum/dnf-репозитории настроены корректно.

Поскольку инструкция является универсальной для standalone и cluster конфигураций, каждый пункт необходимо выполнить на всех узлах экземпляра СУБД. На узле арбитр производить обновление компонентов только по необходимости.

Восстановление выполняется покомпонентно. Шаги, соответствующие компонентам, отсутствующим в конфигурации, следует пропустить.

Восстановление СУБД может осуществляться пользователем с правами суперпользователя, а также пользователем postgres.

Все команды ниже являются примерами. Их необходимо отредактировать в соответствии с требуемыми параметрами и конфигурациями. В названиях rpm/deb-пакетов и в блоках кода, при необходимости, замените наименование ОС и пакетного менеджера. Также, резервная копия файлов компонентов находится в каталоге под названием ~/pangolin/cache/backup, созданная в процессе ручного обновления на «Шаге 1». В случае ручного отката после процесса автоматизированного обновления резервная копия файлов компонентов находится в каталоге /pgarclogs/backups/PANGOLIN_FULL_VER_OLD/<update_timestamp>.

Где update_timestamp - дата и время начала обновления.

Обозначения

В инструкции используются переменные для динамической настройки. Перед выполнением команд эти переменные будут экспортироваться. Скорректируйте значение относительно реализуемого сценария обновления:

  • PANGOLIN_VER_OLD – исходная версия СУБД Pangolin (формат - х.х.х);
  • PANGOLIN_FULL_VER_OLD – исходная версия СУБД Pangolin (формат - 0х.00х.0х);
  • PANGOLIN_DBMS_MAJOR – новая мажорная версия СУБД Pangolin (формат - х);
  • PANGOLIN_DBMS_MAJOR_OLD – исходная мажорная версия СУБД Pangolin (формат - х);
  • PANGOLIN_BACKUP_TOOLS_OLD – исходная версия компонента Pangolin Backup Tools (формат - х.х.х);
  • PANGOLIN_BACKUP_TOOLS_VENV_OLD – исходная версия зависимости pangolin-backup-tools-venv (формат - х.х.х);
  • PANGOLIN_POOLER_OLD – исходная версия компонента Pangolin Pooler (формат - х.х.х);
  • PANGOLIN_MANAGER_OLD – исходная версия компонента Pangolin Manager (формат - х.х.х);
  • PANGOLIN_MANAGER_VENV_OLD – исходная версия зависимости pangolin-manager-venv (формат - х.х.х);
  • PANGOLIN_TUNER_OLD – исходная версия компонента Pangolin Tuner (формат - х.х.х);
  • PANGOLIN_TIMESCALEDB_OLD – исходная версия расширения timescaledb (формат - х.х.х);
  • PANGOLIN_POSTGIS_OLD – исходная версия пакета стороннего расширения postgis (формат - х.х.х);
  • PANGOLIN_PGROUTING_OLD – исходная версия пакета стороннего расширения pgrouting (формат - х.х.х);
  • PANGOLIN_PG_BACKGROUND_OLD – исходная версия пакета стороннего расширения pg_background (формат - х.х.х);
  • PANGOLIN_BACKUP_PATH - путь до резервной копии файлов компонентов (путь зависит от использованного процесса обновления);
  • PGDATA – исходный путь до данных СУБД Pangolin (формат - /pgdata/xx);
  • PGHOME – исходный путь до серверной части СУБД Pangolin (формат - /usr/pangolin-x.x);
  • PGHOME_CLIENT – исходный путь до клиентской части СУБД Pangolin (формат - /opt/pangolin-dbms-client-x.x);
  • PGHOME_NEW – новый путь до серверной части СУБД Pangolin (формат - /opt/pangolin-dbms-server-x);
  • PGHOME_CLIENT_NEW – новый путь до клиентской части СУБД Pangolin (формат - /opt/pangolin-dbms-client-x);
  • CLUSTERNAME - наименование кластера (по умолчанию clustername).

Шаг 1. Подготовка

  1. Убедитесь, что все компоненты остановлены:

    sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-dbms|pangolin-certs-rotate|pangolin-auth-reencrypt|etcd" | grep -v grep
  2. Если команда вернула результат, то выполните остановку запущенных сервисов и остановите рабочие процессы:

    Остановка сервисов:

    sudo systemctl stop <service_name>

    Где service_name - название запущенного сервиса

    Остановка рабочего процесса:

    sudo kill -9 <pid>
    примечание

    pid можно получить следующим образом:

    sudo ps aux | grep -E "pangolin-pooler|pangolin-manager|postgresql|pangolin-dbms|pangolin-certs-rotate|pangolin-auth-reencrypt|etcd" | grep -v grep

Шаг 2. Восстановление компонента pangolin-auth-reencrypt

  1. Произведите восстановление пакета компонента:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_auth_reencrypt/pangolin-auth-reencrypt-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      sudo dnf install -y pangolin-auth-reencrypt-$PANGOLIN_VER_OLD
  2. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_auth_reencrypt/{path_to_service}/pangolin-auth-reencrypt.service {path_to_service}/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_auth_reencrypt/{path_to_service}/pangolin-auth-reencrypt@.service {path_to_service}/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/etc/pangolin-auth-reencrypt/enc_util.cfg /etc/pangolin-auth-reencrypt/

    Где:

    • path_to_backup - путь до каталога с резервной копией компонентов;
    • path_to_service - актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ от root» это может быть путь /home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть /usr/lib/systemd/system/, /lib/systemd/system/ или /etc/systemd/system/.
Внимание!

В случае конфигурации с DCS, произведите дополнительно восстановление на узле арбитр.

Шаг 3. Восстановление компонента pangolin-certs-rotate

  1. Произведите восстановление пакета компонента:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_certs_rotate/pangolin-certs-rotate-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      sudo dnf install -y pangolin-certs-rotate-$PANGOLIN_VER_OLD
  2. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_certs_rotate/{path_to_service}/pangolin-certs-rotate.service {path_to_service}/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_certs_rotate/etc/pangolin-certs-rotate/pangolin-certs-rotate.yml /etc/pangolin-certs-rotate/

    Где:

    • path_to_backup - путь до каталога с резервной копией компонентов;
    • path_to_service - актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ от root» это может быть путь /home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть /usr/lib/systemd/system/, /lib/systemd/system/ или /etc/systemd/system/.
Внимание!

В случае конфигурации с DCS, произведите дополнительно восстановление на узле арбитр.

Шаг 4. Восстановление компонента pangolin-security-utilities

Произведите восстановление пакета компонента:

  • При сохранении пакета от исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_security_utilities/pangolin-security-utilities-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y pangolin-security-utilities-$PANGOLIN_VER_OLD
Внимание!

В случае конфигурации с DCS, произведите дополнительно восстановление на узле арбитр.

Шаг 5. Восстановление компонента pangolin-backup-tools

  1. Произведите восстановление пакета компонента:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_BACKUP_TOOLS_OLD=x.x.x
      export PANGOLIN_BACKUP_TOOLS_VENV_OLD=x.x.x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_backup_tools/pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_OLD-sberlinux9.x86_64.rpm
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_backup_tools/pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_BACKUP_TOOLS_OLD=x.x.x
      export PANGOLIN_BACKUP_TOOLS_VENV_OLD=x.x.x
      sudo dnf install -y pangolin-backup-tools-venv-$PANGOLIN_BACKUP_TOOLS_VENV_OLD pangolin-backup-tools-$PANGOLIN_BACKUP_TOOLS_OLD
  2. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_backup_tools/etc/pangolin-backup-tools/backup-tools-env /etc/pangolin-backup-tools/

    Где path_to_backup - путь до каталога с резервной копией компонентов.

Шаг 6. Восстановление компонента Pangolin Pooler

  1. Произведите восстановление пакета компонента:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_POOLER_OLD=x.x.x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_pooler/pangolin-pooler-$PANGOLIN_POOLER_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_POOLER_OLD=x.x.x
      sudo dnf install -y pangolin-pooler-$PANGOLIN_POOLER_OLD
  2. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_pooler/{path_to_service}/pangolin-pooler.service {path_to_service}/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_pooler/etc/pangolin-pooler/pangolin-pooler.ini /etc/pangolin-pooler/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_pooler/etc/pangolin-pooler/userlist.txt /etc/pangolin-pooler/

    Где:

    • path_to_backup - путь до каталога с резервной копией компонентов;
    • path_to_service - актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ от root» это может быть путь /home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть /usr/lib/systemd/system/, /lib/systemd/system/ или /etc/systemd/system/.

Шаг 7. Восстановление компонента Pangolin Manager

  1. Произведите восстановление пакета компонента:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_MANAGER_OLD=x.x.x
      export PANGOLIN_MANAGER_VENV_OLD=x.x.x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_manager/pangolin-manager-$PANGOLIN_MANAGER_OLD-sberlinux9.x86_64.rpm
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_manager/pangolin-manager-venv-$PANGOLIN_MANAGER_VENV_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_MANAGER_OLD=x.x.x
      export PANGOLIN_MANAGER_VENV_OLD=x.x.x
      sudo dnf install -y pangolin-manager-$PANGOLIN_MANAGER_OLD pangolin-manager-venv-$PANGOLIN_MANAGER_VENV_OLD
  2. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    export PGDATA=/pgdata/xx
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_manager/{path_to_service}/pangolin-manager.service {path_to_service}/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_manager/etc/pangolin-manager/postgres.yml /etc/pangolin-manager/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_manager/patroni.dynamic.json $PGDATA/data/

    Где:

    • path_to_backup - путь до каталога с резервной копией компонентов;
    • path_to_service - актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ от root» это может быть путь /home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть /usr/lib/systemd/system/, /lib/systemd/system/ или /etc/systemd/system/.
Внимание!

В случае конфигурации с DCS, произведите дополнительно восстановление на узле арбитр.

Шаг 8. Восстановление компонента серверной части СУБД Pangolin

  1. Удалите пакеты pangolin-dbms из системы:

    sudo dnf remove -y pangolin-dbms*
  2. Произведите восстановление пакета компонента:

    • При откате на исходную версию СУБД ниже 7.x.x:

      • При сохранении пакета от исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        export PANGOLIN_DBMS_MINOR_OLD=x
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD. $PANGOLIN_DBMS_MINOR_OLD-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
      • При использовании репозитория с пакетами исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        export PANGOLIN_DBMS_MINOR_OLD=x
        sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-$PANGOLIN_VER_OLD
    • При откате на исходную версию СУБД выше 7.x.x:

      • При сохранении пакета от исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
      • При использовании репозитория с пакетами исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-$PANGOLIN_VER_OLD
  3. Произведите восстановление конфигурационных файлов компонента:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    export PGDATA=/pgdata/xx
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_dbms/ {path_to_service}/postgresql.service # для конфигурации без Pangolin Manager
    sudo cp -raf $PANGOLIN_BACKUP_PATH/pangolin_dbms/$PGDATA/data/*.conf $PGDATA/data/

    Где:

    • path_to_backup - путь до каталога с резервной копией компонентов;
    • path_to_service - актуальный путь до service-файла компонента. В случае наличия функциональности «Отказ от root» это может быть путь /home/postgres/.config/systemd/user/. В случае отсутствия такой функциональности это может быть /usr/lib/systemd/system/, /lib/systemd/system/ или /etc/systemd/system/.
  4. Восстановите локальную резервную копию на мастере:

    sudo -iu postgres
    export PGPASSWORD=<password_postgres>
    export PGPORT=<port DBMS>
    export PGDATA=/pgdata/xx
    export CLUSTERNAME=clustername
    export PANGOLIN_FULL_VER_OLD=0х.00х.0х
    rm -rf $PGDATA
    /opt/pangolin-backup-tools/bin/pg_probackup restore -B /{path_to_pgbackup}/$PANGOLIN_FULL_VER_OLD/pg_probackup --instance $CLUSTERNAME -j 14 --progress --restore-command=cp /{path_to_pgbackup}/$PANGOLIN_FULL_VER_OLD/pg_probackup/wal/$CLUSTERNAME/%f %p -w
    ln -sfnv $PGDATA /pgdata/data
    exit

    Где path_to_pgbackup - путь до каталога с резервной копией. В случае ручного обновления этот путь может быть /pgarclogs. В случае автоматизированного обновления необходимо использвать путь, указанный в параметре local_backup_path (значение по умолчанию /pgarclogs).

  5. Произведите чистку $PGDATA на реплике:

    sudo -iu postgres
    export PGDATA=/pgdata/xx
    rm -rf $PGDATA
    ln -sfnv $PGDATA /pgdata/data
    exit

Шаг 9. Восстановление компонента клиентской части СУБД Pangolin

Произведите восстановление пакета компонента:

  • При откате на исходную версию СУБД ниже 7.x.x:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      export PANGOLIN_DBMS_MINOR_OLD=x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD. $PANGOLIN_DBMS_MINOR_OLD-client-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      export PANGOLIN_DBMS_MINOR_OLD=x
      sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-client-$PANGOLIN_VER_OLD
  • При откате на исходную версию СУБД выше 7.x.x:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-client-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_VER_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-client-$PANGOLIN_VER_OLD

Шаг 10. Восстановление расширения pangolin-timescaledb

Произведите восстановление пакета расширения:

  • При откате на исходную версию СУБД ниже 7.x.x:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_TIMESCALEDB_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      export PANGOLIN_DBMS_MINOR_OLD=x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_timescaledb/pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD-sberlinux9-x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_TIMESCALEDB_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      export PANGOLIN_DBMS_MINOR_OLD=x
      sudo dnf install -y pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD
  • При откате на исходную версию СУБД выше 7.x.x:

    • При сохранении пакета от исходной версии СУБД:

      export PANGOLIN_TIMESCALEDB_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      sudo dnf install -y ~/pangolin/cache/backup/pangolin_timescaledb/pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD-sberlinux9-x86_64.rpm
    • При использовании репозитория с пакетами исходной версии СУБД:

      export PANGOLIN_TIMESCALEDB_OLD=x.x.x
      export PANGOLIN_DBMS_MAJOR_OLD=x
      sudo dnf install -y pangolin-timescaledb-$PANGOLIN_DBMS_MAJOR_OLD-apache-$PANGOLIN_TIMESCALEDB_OLD

Шаг 11. Восстановление компонента pangolin-auth-password

Произведите восстановление пакета компонента:

  • При сохранении пакета от исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_auth_password/pangolin-auth-password-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y pangolin-auth-password-$PANGOLIN_VER_OLD
Внимание!

Произведите дополнительно восстановление на узле арбитр.

Шаг 12. Восстановление компонента Pangolin Tuner

Произведите восстановление пакета компонента:

  • При сохранении пакета от исходной версии СУБД:

    export PANGOLIN_TUNER_OLD=x.x.x
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_tuner/pangolin-tuner-$PANGOLIN_TUNER_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    export PANGOLIN_TUNER_OLD=x.x.x
    sudo dnf install -y pangolin-tuner-$PANGOLIN_TUNER_OLD

Шаг 13. Восстановление компонента pangolin-diagnostic-tool

Произведите восстановление пакета компонента:

  • При сохранении пакета от исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_diagnostic_tool/pangolin-diagnostic-tool-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    sudo dnf install -y pangolin-diagnostic-tool-$PANGOLIN_VER_OLD

Шаг 14. Восстановление опциональных пакетов

  1. Произведите удалене устновленных пакетов:

    sudo dnf remove -y pangolin-dbms-*-libpq pangolin-dbms-*-libpq-dev
  2. Произведите восстановление опциональных пакетов:

    • При откате на исходную версию СУБД ниже 7.x.x:

      • При сохранении пакета от исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        export PANGOLIN_DBMS_MINOR_OLD=x
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms_libpq/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD. $PANGOLIN_DBMS_MINOR_OLD-libpq-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms_libpq_dev/pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD. $PANGOLIN_DBMS_MINOR_OLD-libpq-dev-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
      • При использовании репозитория с пакетами исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        export PANGOLIN_DBMS_MINOR_OLD=x
        sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD.$PANGOLIN_DBMS_MINOR_OLD-libpq-$PANGOLIN_VER_OLD pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-dev-$PANGOLIN_VER_OLD
    • При откате на исходную версию СУБД выше 7.x.x:

      • При сохранении пакета от исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms_libpq/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
        sudo dnf install -y ~/pangolin/cache/backup/pangolin_dbms_libpq_dev/ pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-dev-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
      • При использовании репозитория с пакетами исходной версии СУБД:

        export PANGOLIN_VER_OLD=x.x.x
        export PANGOLIN_DBMS_MAJOR_OLD=x
        sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-$PANGOLIN_VER_OLD pangolin-dbms-$PANGOLIN_DBMS_MAJOR_OLD-libpq-dev-$PANGOLIN_VER_OLD

Шаг 15. Восстановление пакетов pangolin-untrusted расширений

Произведите восстановление пакетов расширений для исходнодной версии СУБД выше 7.x.x:

  • При сохранении пакета от исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    export PANGOLIN_DBMS_MAJOR=x
    sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR-{ext_name}-$PANGOLIN_VER_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    export PANGOLIN_VER_OLD=x.x.x
    export PANGOLIN_DBMS_MAJOR=x
    sudo dnf install -y pangolin-dbms-$PANGOLIN_DBMS_MAJOR-{ext_name}-$PANGOLIN_VER_OLD

Где ext_name - название untrusted-расширения.

Шаг 16. Восстановление пакетов сторонних расширений

Произведите восстановление пакетов расширений:

  • При сохранении пакета от исходной версии СУБД:

    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 dnf install -y ~/pangolin/cache/backup/pangolin_external/{postgis_pkg_name}-$PANGOLIN_POSTGIS_OLD-sberlinux9.x86_64.rpm
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_external/{pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLD-sberlinux9.x86_64.rpm
    sudo dnf install -y ~/pangolin/cache/backup/pangolin_external/{pg_background_pkg_name}-$PANGOLIN_PG_BACKGROUND_OLD-sberlinux9.x86_64.rpm
  • При использовании репозитория с пакетами исходной версии СУБД:

    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 dnf install -y {postgis_pkg_name}-$PANGOLIN_POSTGIS_OLD
    sudo dnf install -y {pgrouting_pkg_name}-$PANGOLIN_PGROUTING_OLD
    sudo dnf install -y {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).

Шаг 17. Удаление psql_rotate_password из shared_preload_libraries

Удалите расширение psql_rotate_password из shared_preload_libraries:

  1. Выполните команду:

    cat $PDATA/postgresql.conf | grep shared_preload_libraries
  2. Если расширение psql_rotate_password присутствует в параметре shared_preload_libraries, его необходимо удалить.

В случае кластерной конфигурации также необходимо проверить файл /etc/pangolin-manager/postgres.yml на наличие расширения psql_rotate_password (на мастере и на реплике).

Проверить наличие расширения можно командой:

cat /etc/pangolin-manager/postgres.yml | grep shared_preload_libraries

Шаг 18. Дополнительный действия

  1. Произведите восстановление исходных файлов .bash_profile, .bashrc, dynmotd.sh для пользователей postgres и kmadmin_pg:

    export PANGOLIN_BACKUP_PATH={path_to_backup}
    sudo cp -raf $PANGOLIN_BACKUP_PATH/home/postgres/.bash_profile /home/postgres/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/home/postgres/.bashrc /home/postgres/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/home/kmadmin_pg/.bash_profile /home/kmadmin_pg/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/home/kmadmin_pg/.bashrc /home/kmadmin_pg/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/usr/local/sbin/dynmotd.sh /usr/local/sbin/
    sudo cp -raf $PANGOLIN_BACKUP_PATH/etc/profile /etc/

    Где path_to_backup - путь до каталога с резервной копией компонентов.

  2. Произведите восстановление лицензии, если это необходимо:

    sudo mkdir -p /opt/pangolin-license
    sudo cp -r /opt/pangolin-license/license.json /opt/pangolin-license
    sudo chown -R postgres:pangolin_users /opt/pangolin-license
    sudo chmod 0770 /opt/pangolin-license
    sudo chmod 0440 /opt/pangolin-license/license.json
    sudo rm -rf /opt/pangolin-license
  3. Произведите удаление следов обновления:

    export PGHOME_NEW=/opt/pangolin-dbms-server-x
    export PGHOME_CLIENT_NEW=/opt/pangolin-dbms-client-x
    sudo rm -rf $PGHOME_NEW $PGHOME_CLIENT_NEW
Внимание!

Дополнительные действия произведите на узле арбитр.

Шаг 19. Запуск компонентов СУБД Pangolin

  1. Запустите компоненты СУБД Pangolin. В случае кластерной конфигурации действия по запуску произведите сначала на мастере, затем на реплике, после на арбитре:

    • Для конфигурации с Pangolin Manager и модулем Pangolin DCS:

      • на мастере и реплике:

        sudo systemctl daemon-reload
        sudo systemctl start pangolin-pooler
        sudo systemctl start pangolin-certs-rotate
        sudo systemctl start pangolin-auth-reencrypt@postgres
        sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg
        sudo systemctl start pangolin-manager
        sudo -iu postgres
        export PGHOME=/usr/pangolin-x.x
        export PGDATA=/pgdata/xx
        $PGHOME/bin/pg_ctl start -D $PGDATA/data
        exit
      • на арбитре:

        sudo systemctl daemon-reload
        sudo systemctl start pangolin-certs-rotate
        sudo systemctl start pangolin-auth-reencrypt@postgres
        sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg
        sudo systemctl start pangolin-manager
    • Для конфигурации с Pangolin Manager и etcd:

      • на мастере и реплике:

        sudo systemctl daemon-reload
        sudo systemctl start pangolin-pooler
        sudo systemctl start pangolin-certs-rotate
        sudo systemctl start pangolin-auth-reencrypt@postgres
        sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg
        sudo systemctl start pangolin-manager
        sudo systemctl start etcd
        sudo -iu postgres
        export PGHOME=/usr/pangolin-x.x
        export PGDATA=/pgdata/xx
        $PGHOME/bin/pg_ctl start -D $PGDATA/data
        exit
      • на арбитре:

        sudo systemctl daemon-reload
        sudo systemctl start etcd
    • Для конфигурации без Pangolin Manager:

      • на мастере:

        sudo systemctl daemon-reload
        sudo systemctl start pangolin-pooler
        sudo systemctl start pangolin-certs-rotate
        sudo systemctl start pangolin-auth-reencrypt@postgres
        sudo systemctl start pangolin-auth-reencrypt@kmadmin_pg
        # в случае наличия файла `postgresql.service`:
        sudo systemctl start postgresql
        # в случае отсутствия файла `postgresql.service`:
        sudo -iu postgres
        export PGHOME=/usr/pangolin-x.x
        export PGDATA=/pgdata/xx
        $PGHOME/bin/pg_ctl start -D $PGDATA/data
        exit
  2. Запустите сторонние сервисы:

    sudo systemctl restart crond
  3. Для конфигурации с Pangolin Manager выведите компонент из режима паузы:

    sudo -iu postgres
    export CLUSTERNAME=clustername
    /opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml remove $CLUSTERNAME
    systemctl --user restart pangolin-manager # С включенной функциональностью «Отказ от root». Дополнительно выполните на узле replica
    exit
    sudo systemctl restart pangolin-manager # Без функциональности «Отказ от root». Дополнительно выполните на узле replica
    sudo -iu postgres
    export CLUSTERNAME=clustername
    /opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-config --set 'pause=false' --force
    /opt/pangolin-manager/bin/pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart $CLUSTERNAME
    exit