Миграция PostgreSQL 11/15 на PostgreSQL 15/16

В Staffcop Enterprise возможна миграция между версиями:

  • PostgreSQL 11 → PostgreSQL 15,

  • PostgreSQL 11 → PostgreSQL 16;

  • PostgreSQL 15 → PostgreSQL 16.

Внимание

Миграция поддерживается только на Ubuntu Server.

Для выполнения миграции используется скрипт postgresql-upgrade.

Внимание

Для миграции на PostgreSQL 16 требуется корректировка скрипта. Обратитесь в техническую поддержку.

После запуска скрипт:

  1. Установит PostgreSQL 15 или 16.

  2. Перенесет данные из текущего кластера.

  3. Удалит PostgreSQL 11 или 15 при успешном переносе данных.

Миграцию выполняет утилита pg_upgrade от PostgresPRO. Утилита входит в состав скрипта.

Системные требования

Операционная система:

  • Ubuntu 18.04 LTS,

  • Ubuntu 20.04 LTS,

  • Ubuntu 22.04 LTS.

База данных:

  • Предустановленная PostgreSQL 11 или PostgreSQL 15.

Примечание

Скрипт производит миграцию путём переназначения файлов данных, дополнительное место не требуется.

Условия миграции

Скрипт сработает при соблюдении условий:

Условие

Описание

Комментарий

Расположение PostgreSQL 11, 15

Данные и файлы конфигурации расположены в директории
/var/lib/postgresql/11/ или /var/lib/postgresql/15/

Если данные находятся в другой папке, скрипт не сможет
их найти и использовать для обновления

Название базы данных

Базы данных имеют названия:
staffcop, postgres, template0, template1

Скрипт не переносит базы данных с другими названиями.
Измените скрипт для переноса архивных БД
Используйте внутренние регламенты для переноса баз,
не входящих в инфраструктуру Staffcop

Пользовательский кластер

Пользовательский кластер расположен на одном хосте
с базой данных

Скрипт не сработает, если пользовательский кластер
находится на отдельном хосте.
Используйте другие способы миграции

Расположение архивных баз данных

У всех архивных БД кластера в параметре location указан путь
/var/lib/staffcop/archives

Скрипт остановится, если у одной или нескольких БД
в параметре location указан путь к /var/lib/postgresql/11
или /var/lib/postgresql/15 [1]

Локальные настройки сервера

Локаль консоли сервера совпадает с локалью кластера PostgreSQL 11/15

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

dpkg-reconfigure locales

Подготовка

Резервное копирование

Перед запуском скрипта выполните резервное копирование БД с помощью команды:

staffcop backup_db

Опасно

Без резервного копирования перед миграцией вы рискуете потерять данные из-за ошибок обновления.

Перенос архивных баз данных

Для переноса архивной базы данных:

  1. Откройте скрипт postgresql-upgrade для редактирования:

sudo nano /usr/share/staffcop/bin/postgresql-upgrade
  1. Измените переменную ARCHIVED_DATABASES:

  • при переносе одной архивной БД:

ARCHIVED_DATABASES="archive2023"
  • при переносе нескольких архивных БД :

ARCHIVED_DATABASES="archive_2021 archive_2022 archive_2023"

Запуск скрипта

Скрипт предназначен для переноса PostgreSQL 11 на PostgreSQL 15. Перенос версии 11 на 15 или 15 на 16 требует корректировки скрипта. Обратитесь в техподдержку.

  1. Запустите в терминале скрипт командой:

sudo staffcop postgresql upgrade

Скрипт автоматически проверит совместимость старого и нового кластеров PostgreSQL с помощью утилиты pg_upgrade.

  1. После успешной проверки скрипт запросит подтверждение перед обновлением PostgreSQL:

*** WARNING! You are really want to run Postgres upgrade script (type 'yes')?

Введите yes, чтобы начать миграцию кластера PostgreSQL на новую версию.

Завершение миграции

Скрипт удалит старую версию и предложит перезапустить Staffcop командой:

staffcop init

Время перезапуска зависит от объема базы.

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

Дата изменения: 10.07.2024