Для перехода со схемы, использующей однохостовую установку, на схему с резервированием требуется развернуть кластер NAICE и выполнить резервное копирование БД, развернуть БД с резервированием с "нуля" и выполнить восстановление БД.
Данное обновление работает только в рамках одной версии. Если требуется обновиться на новую версию и перейти на схему с резервированием, то сначала необходимо выполнить обновление NAICE до актуальной версии, после чего выполнить обновление. |
Для установки использующей OVA/QCOW2 образ для перехода от однохостовой установки на схему с резервированием необходимо использовать инструкцию: v1.2_ru.3.3.2 Переход от "Stand-alone" установки к схеме "1+1". |
При выборе данной стратегии рекомендуется заранее указать на сетевом оборудовании новые IP-адреса для взаимодействия с NAICE с более низким приоритетом. |
Перед выполнением миграции БД, в зависимости от используемого функционала NAICE необходимо остановить обработку RADIUS и TACACS+ пакетов. Это требуется для того, что бы предотвратить потерю информации и RADIUS и TACACS+ сессиях, которые могут быть записаны в БД после выполнения её резервного копирования. Для этого требуется подключиться к хосту с NAICE по ssh и выполнить в папке установки NAICE (по умолчанию /etc/docker-naice) остановку сервисов, отвечающих за данные процессы. Пример:
cd /etc/docker-naice/ sudo docker compose stop naice-radius sudo docker compose stop naice-aquila |
Переход БД с версии однохостовой установки на версию с резервированием включает в себя следующие этапы:
Этап 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-06-26_04-43-39_722] [04:43:39.72] INFO ==> Validation required env variables for backup [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.72] INFO ==> Checking variables.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.72] DEBUG ==> 'BACKUPS_DIR' = /var/backups [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.73] DEBUG ==> 'POSTGRES_USER' = postgres [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.73] DEBUG ==> 'POSTGRES_PASSWORD' = postgres [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.73] INFO ==> Ok, all required variables are set [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.74] INFO ==> Directory for backups from env. variable '$BACKUPS_DIR:/var/backups' [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.74] INFO ==> Creating directory '/var/backups' [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.75] [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.75] INFO ==> ok, directory is created [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.75] INFO ==> Starting backup of database 'ursus' to /var/backups/ursus_2026-06-26_04-43-39_722.sql with excluded data for tables events.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.76] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d ursus -f /var/backups/ursus_2026-06-26_04-43-39_722.sql --inserts -c --if-exists --exclude-table-data events' [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.98] [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.98] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.98] INFO ==> Starting backup of database 'lepus' to /var/backups/lepus_2026-06-26_04-43-39_722.sql.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:39.99] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d lepus -f /var/backups/lepus_2026-06-26_04-43-39_722.sql --inserts -c --if-exists' [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.11] [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.11] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.11] INFO ==> Starting backup of database 'aquila' to /var/backups/aquila_2026-06-26_04-43-39_722.sql with excluded data for tables tacacs_sessions|tacacs_accounting.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.12] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d aquila -f /var/backups/aquila_2026-06-26_04-43-39_722.sql --inserts -c --if-exists --exclude-table-data tacacs_sessions|tacacs_accounting' [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.23] [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.23] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.23] INFO ==> Starting backup of database 'mustela' to /var/backups/mustela_2026-06-26_04-43-39_722.sql with excluded data for tables events.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.24] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d mustela -f /var/backups/mustela_2026-06-26_04-43-39_722.sql --inserts -c --if-exists --exclude-table-data events' [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.36] [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.36] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.37] INFO ==> Starting backup of database 'ovis' to /var/backups/ovis_2026-06-26_04-43-39_722.sql with excluded data for tables radius_sessions.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.37] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d ovis -f /var/backups/ovis_2026-06-26_04-43-39_722.sql --inserts -c --if-exists --exclude-table-data radius_sessions' [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.52] [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.52] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.53] INFO ==> Starting backup of database 'phoca' to /var/backups/phoca_2026-06-26_04-43-39_722.sql.. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.53] DEBUG ==> Call 'PGPASSWORD=postgres pg_dump -U postgres -d phoca -f /var/backups/phoca_2026-06-26_04-43-39_722.sql --inserts -c --if-exists' [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.65] [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.65] INFO ==> Ok, backup is created. [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.65] INFO ==> Start compressing backups to file naice_2026-06-26_04-43-39_722.tar.gz [BACKUP] [2026-06-26_04-43-39_722] [04:43:40.72] INFO ==> The backup was successfully compressed to '/var/backups/naice_2026-06-26_04-43-39_722.tar.gz' |
Выгрузка резервной копии БД выполняется на хост в папку <путь установки NAICE>/postgres/backups. По умолчанию это папка /etc/docker-naice/postgres/backups файл имеет формат naice_ГГГГ-ММ-ДД_ЧЧ-ММ-СС_XXX.tar.gz.
Доступ в папку c резервными копиями БД возможен только с правами root! |
2. Убедиться, что в папке присутствует файл с резервной копией БД с именем, которое отображалось в логах при создании резервной копии.
3. Выгрузить файл с резервной копией БД на машину администратора или в специальное хранилище для предотвращения его потери в ходе дальнейших действий с виртуальной машиной, на которой выполнена однохостовая установка.
/etc/docker-naice/postgres/backup), остановить все сервисы NAICE и удалить эту папку: $ sudo mv /etc/docker-naice/postgres/backups/naice_2026-06-26_04-43-39_722.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-06-26_04-43-39_722.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-06-26_04-43-39_722.tar.gz 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-06-26_04-43-39_722] [06:17:54.13] INFO ==> Ok, restoring is completed. [RESTORE] [naice_2026-06-26_04-43-39_722] [06:17:54.13] INFO ==> All databases were successfully restored from available dumps. |
Для отката в случае неудачной попытки установки NAICE в схеме с резервированием необходимо: