Общее описание
Для перехода со схемы, использующей однохостовую установку, на схему с резервированием требуется выполнить миграцию данных БД. Это необходимо, т. к. контейнер БД PostgreSQL, предназначенный для работы в схеме с резервированием БД имеет отдельный образ, в состав которого включен "Replication manager for PostgreSQL clusters" (далее repmng).
Данная особенность образа БД, предназначенного для использования в схеме с резервированием, не позволяет выполнить прямую миграцию данных. Для этого требуется выполнить резервное копирование БД, развернуть БД с резервированием с "нуля" и выполнить восстановление БД.
| Версия NAICE | Название образа и версия |
|---|---|
| 1.0 | postgres: 1.0.6 |
| 1.0 | postgres-repmgr: 1.0.6 |
Данное обновление работает только в рамках одной версии. Если вы хотите обновиться на новую версию и перейти на схему с резервированием, то сначала необходимо выполнить обновление NAICE до актуальной версии, после чего действовать по инструкции ниже.
Порядок миграции БД
Переход БД с версии однохостовой установки на версию с резервированием включает в себя следующие этапы:
Этап 1. Выгрузка файла бэкапа текущих настроек БД.
- Выгрузка скриптом резервной копии БД (скрипты включены в образ БД).
Этап 2. Разворачивание на новых хостах кластера БД PostgreSQL.
- Удаление текущей однохостовой установки, если планируется использовать его как часть кластера.
- Установка кластера БД в соответствии с инструкцией v1.0_3.4 Установка с резервированием.
Этап 3. Загрузка ранее выгруженного бэкапа данных в кластер БД PostgreSQL.
- Загрузка ранее выгруженного бэкапа данных БД скриптом;
- Установка сервисов NAICE.
Выполнение миграции БД
Этап 1. Выгрузка файла бэкапа текущих данных БД однохостовой установки
1. Передать в контейнер postgres команду на запуск скрипта для формирования бэкапа:
sudo docker exec -it naice-postgres /scripts/backup/backup.sh
Выгрузка резервной копии БД выполняется на хост в папку <путь установки NAICE>/backups. По умолчанию это папка /etc/docker-naice/backups/.
2. Убедиться, что в папке присутствует файл с резервной копией БД с именем, которое отображалось в логах при создании резервной копии.
Этап 2. Разворачивание на новых хостах кластера БД PostgreSQL
1. Если планируется переиспользование текущей однохостовой установки в качестве части кластера, то предварительно необходимо перенести файл резервной копии из папки установки NAICE (по умолчанию - /etc/docker-naice/) и удалить эту папку:
$ sudo mv /etc/docker-naice/backups/naice_2025-11-14_08-25-02_318.tar.gz ~ $ docker compose -f /etc/docker-naice/docker-compose.yml down $ sudo rm -rf /etc/docker-naice/
2. Установить кластер БД в соответствии с инструкцией v1.0_3.4 Установка с резервированием в разделе Установка кластера СУБД PostgreSQL. Сервисы NAICE на данном этапе устанавливать не нужно!
Этап 3. Загрузка ранее выгруженного бэкапа данных в кластер БД PostgreSQL
Внимание! Загрузка резервной копии данных в БД, использующую кластерную схему резервирования, возможна только на ноде, находящейся в состоянии Primary!
1. Определить, какая нода находится в состоянии Primary (описано в v1.0_3.4 Установка с резервированием в разделе Проверка состояния кластера PostgreSQL).
2. Перенести ранее выгруженный файл данных с сервера с однохостовой установкой на ноду кластера БД PostgreSQL в состоянии Primary.
3. Файл с резервной копией необходимо поместить в папку <путь к БД>/postgres/backups. Эта папка доступна пользователю с правами root.
$ sudo scp tester@100.110.2.202:/etc/docker-naice/backups/naice_2025-11-14_08-25-02_318.tar.gz /etc/docker-naice/postgres/backups The authenticity of host '100.110.2.202 (100.110.2.202)' can't be established. ED25519 key fingerprint is SHA256:4YUjqgXmieg9JM9kU49/yk5BA9+ndhEK78sX8flb2+w. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '100.110.2.202' (ED25519) to the list of known hosts. tester@100.110.2.202's password: naice_2025-11-14_08-25-02_318.tar.gz 100% 21KB 8.3MB/s 00:00
4. В зависимости от того, какая надо находится в состоянии Primary, передать в контейнер команду на запуск скрипта для восстановления данных из резервной копии:
Команда для ноды 1 кластера PostgreSQL:
sudo docker exec -it naice-postgres-1 /home/worker/scripts/backup/restore.sh
Команда для ноды 2 кластера PostgreSQL:
sudo docker exec -it naice-postgres-2 /home/worker/scripts/backup/restore.sh
В конце лога выполнения команды появится сообщение:
[RESTORE] [naice_2025-11-14_08-25-02_318] [08:55:15.90] INFO ==> Ok, restoring is completed. [RESTORE] [naice_2025-11-14_08-25-02_318] [08:55:15.90] INFO ==> All databases were successfully restored from available dumps.
5. Выполнить установку сервисов NAICE в соответствии с инструкцией v1.0_3.4 Установка с резервированием в разделе Установка кластера NAICE.