Для перехода со схемы, использующей однохостовую установку, на схему с резервированием требуется развернуть кластер NAICE и выполнить резервное копирование БД, развернуть БД с резервированием с "нуля" и выполнить восстановление БД.
Данное обновление работает только в рамках одной версии. Если требуется обновиться на новую версию и перейти на схему с резервированием, то сначала необходимо выполнить обновление NAICE до актуальной версии, после чего выполнить обновление. |
Для установки использующей OVA/QCOW2 образ для перехода от однохостовой установки на схему с резервированием необходимо использовать инструкцию: v1.3_3.2.2.2 Переход от "Stand-alone" установки к схеме "1+1". |
При выборе данной стратегии рекомендуется заранее указать на сетевом оборудовании новые IP-адреса для взаимодействия с NAICE с более низким приоритетом. |
Переход БД с версии однохостовой установки на версию с резервированием включает в себя следующие этапы:
Этап 1. Выгрузка файла бэкапа текущих настроек БД.
Этап 2. Разворачивание на новых хостах кластера БД PostgreSQL.
Этап 3. Загрузка ранее выгруженного бэкапа данных в кластер БД PostgreSQL.
1. Передать в контейнер postgres команду на запуск скрипта для формирования бэкапа:
sudo docker exec -it naice-postgres /home/worker/scripts/backup/backup.sh |
$ sudo docker exec -it naice-postgres /home/worker/scripts/backup/backup.sh [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Validation required env variables for backup [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Checking variables.. [BACKUP] [2026-10-30_05-43-06_] [05:43:06.DEBUG ==> 'BACKUPS_DIR' = /var/backups [BACKUP] [2026-10-30_05-43-06_] [05:43:06.DEBUG ==> 'POSTGRES_USER' = postgres [BACKUP] [2026-10-30_05-43-06_] [05:43:06.DEBUG ==> 'POSTGRES_PASSWORD' = postgres [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Ok, all required variables are set [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Directory for backups from env. variable '$BACKUPS_DIR:/var/backups' [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Creating directory '/var/backups' [BACKUP] [2026-10-30_05-43-06_] [05:43:06. [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> ok, directory is created [BACKUP] [2026-10-30_05-43-06_] [05:43:06.INFO ==> Starting backup of database 'ursus' to /var/backups/ursus_2026-10-30_05-43-06_.sql with excluded data for tables events.. [BACKUP] [2026-10-30_05-43-06_] [05:43:06.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d ursus -f /var/backups/ursus_2026-10-30_05-43-06_.sql --inserts -c --if-exists --exclude-table-data events' [BACKUP] [2026-10-30_05-43-06_] [05:43:07. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.INFO ==> Starting backup of database 'lepus' to /var/backups/lepus_2026-10-30_05-43-06_.sql with excluded data for tables dhcp_probes.. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d lepus -f /var/backups/lepus_2026-10-30_05-43-06_.sql --inserts -c --if-exists --exclude-table-data dhcp_probes' [BACKUP] [2026-10-30_05-43-06_] [05:43:07. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.INFO ==> Starting backup of database 'aquila' to /var/backups/aquila_2026-10-30_05-43-06_.sql with excluded data for tables tacacs_sessions|tacacs_accounting.. [BACKUP] [2026-10-30_05-43-06_] [05:43:07.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d aquila -f /var/backups/aquila_2026-10-30_05-43-06_.sql --inserts -c --if-exists --exclude-table-data tacacs_sessions|tacacs_accounting' [BACKUP] [2026-10-30_05-43-06_] [05:43:08. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Starting backup of database 'mustela' to /var/backups/mustela_2026-10-30_05-43-06_.sql with excluded data for tables system_events.. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d mustela -f /var/backups/mustela_2026-10-30_05-43-06_.sql --inserts -c --if-exists --exclude-table-data system_events' [BACKUP] [2026-10-30_05-43-06_] [05:43:08. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Starting backup of database 'ovis' to /var/backups/ovis_2026-10-30_05-43-06_.sql with excluded data for tables radius_sessions|radius_sessions_details|active_sessions|radius_coa_details.. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d ovis -f /var/backups/ovis_2026-10-30_05-43-06_.sql --inserts -c --if-exists --exclude-table-data radius_sessions|radius_sessions_details|active_sessions|radius_coa_details' [BACKUP] [2026-10-30_05-43-06_] [05:43:08. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.INFO ==> Starting backup of database 'phoca' to /var/backups/phoca_2026-10-30_05-43-06_.sql.. [BACKUP] [2026-10-30_05-43-06_] [05:43:08.DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d phoca -f /var/backups/phoca_2026-10-30_05-43-06_.sql --inserts -c --if-exists' [BACKUP] [2026-10-30_05-43-06_] [05:43:09. [BACKUP] [2026-10-30_05-43-06_] [05:43:09.INFO ==> Ok, backup is created. [BACKUP] [2026-10-30_05-43-06_] [05:43:09.INFO ==> Start compressing backups to file naice_2026-10-30_05-43-06_.tar.gz [BACKUP] [2026-10-30_05-43-06_] [05:43:09.INFO ==> The backup was successfully compressed to '/var/backups/naice_2026-10-30_05-43-06_.tar.gz' |
Выгрузка резервной копии БД выполняется на хост в папку <путь установки NAICE>/postgres/backups. По умолчанию это папка /etc/docker-naice/postgres/backups файл имеет формат naice_ГГГГ-ММ-ДД_ЧЧ-ММ-СС_.tar.gz.
Доступ в папку c резервными копиями БД возможен только с правами root! |
2. Убедиться, что в папке присутствует файл с резервной копией БД с именем, которое отображалось в логах при создании резервной копии.
3. Выгрузить файл с резервной копией БД на машину администратора или в специальное хранилище для предотвращения его потери в ходе дальнейших действий с виртуальной машиной, на которой выполнена однохостовая установка.
/etc/docker-naice/postgres/backup), остановить все сервисы NAICE и удалить эту папку: $ sudo mv /etc/docker-naice/postgres/backups/naice_2026-10-30_05-43-06_.tar.gz ~ $ sudo docker compose -f /etc/docker-naice/docker-compose.yml down $ sudo rm -rfv /etc/docker-naice/ |
Сервисы NAICE на данном этапе устанавливать не нужно! |
Внимание! Загрузка резервной копии данных в БД, использующую кластерную схему резервирования, возможна только на ноде, находящейся в состоянии Primary! |
$ sudo scp tester@100.110.3.35:/etc/docker-naice/postgres/backups/naice_2026-10-30_05-43-06_.tar.gz /etc/docker-naice/postgres/backups The authenticity of host '100.110.3.35 (100.110.3.35)' can't be established. ED25519 key fingerprint is SHA256:0xB2cJjNA/FUZfBr+Z1q3npqNtd0gELjat2XkQwxT0E. 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.3.35' (ED25519) to the list of known hosts. tester@100.110.3.35's password: naice_2026-10-30_05-43-06_.tar.g 100% 93KB 25.6MB/s 00:00 100% 21KB 8.3MB/s 00:00 |
sudo docker exec -it naice-postgres-1 /home/worker/scripts/backup/restore.sh -f /var/backups/<имя файла из которого выполняется восстановление БД> |
sudo docker exec -it naice-postgres-2 /home/worker/scripts/backup/restore.sh -f /var/backups/<имя файла из которого выполняется восстановление БД> |
[RESTORE] [naice_2026-10-30_05-43-06_] [05:50:15.INFO ==> Ok, restoring is completed. [RESTORE] [naice_2026-10-30_05-43-06_] [05:50:15.INFO ==> All databases were successfully restored from available dumps. |
Для отката в случае неудачной попытки установки NAICE в схеме с резервированием необходимо: