Резервное копирование и восстановление данных

<< Click to Display Table of Contents >>

Navigation:  Рекомендации по эксплуатации системы > Обслуживание базы данных >

Резервное копирование и восстановление данных

Общие сведения о резервировании

Резервирование ПО IQLink реализовано на уровне базы данных PostgreSQL. В базе данных хранятся пользовательские и системные данные, включая:

сведения об инфраструктуре СКС;

справочники;

учетные записи пользователей;

задачи;

события;

пользовательские свойства;

данные авторизации и учетные записи Keycloak.

Файлы, загруженные в систему (вложения, документы и иные материалы), хранятся отдельно в файловом хранилище file-storage.

Для обеспечения сохранности данных рекомендуется регулярно выполнять резервное копирование:

базы данных PostgreSQL;

тома данных сервиса file-storage;

конфигурационных файлов docker-compose.yml, .env;

лицензионных файлов.

Резервные копии рекомендуется хранить на внешнем носителе, сетевом хранилище (NAS)  или выделенном сервере резервирования.

Перенос ПО с БД на новый сервер

При переносе ПО IQLink на новый сервер выполняется перенос базы данных, файлового хранилища и конфигурационных файлов.

Для переноса необходимо выполнить следующие действия:

1. Подготовка нового сервера

Установить операционную систему.

Установить Docker и Docker Compose.

Обеспечить сетевую доступность сервера, включая порты API Gateway и БД при необходимости.

Скопировать на новый сервер дистрибутив ПО: каталог compose/, содержащий docker-compose.yml, init-db.sql, переменные окружения и файл .env.

2. Остановка работы пользователей на действующем сервере

Уведомить пользователей о проведении работ.

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

Остановить микросервисы, оставив запущенным только PostgreSQL:

bash

docker compose stop aim-service aim-middle api-gateway react-app \ 

file-storage user-service dictionary-service task-service \

event-service custom-properties license-service aim-idp

3. Резервное копирование БД на старом сервере

Снять полный дамп всех баз кластера PostgreSQL:

bash

pg_dumpall -h 127.0.0.1 -p 54321 -U postgres -f iqlink_full.sql

При необходимости выполнить отдельные дампы по каждой БД (aim_db, filestore_db, user_db, dictionary_db, task_db, event_db, properties_db, keycloak_db) средствами pg_dump -Fc.

Сохранить содержимое тома file-storage (вложения, документы):

bash

docker run --rm -v <file_storage_volume>:/data -v $PWD:/backup alpine \

tar czf /backup/file-storage.tar.gz -C /data

Сохранить файлы конфигурации: docker-compose.yml, .env, кастомные настройки config-server, лицензионные файлы.

4. Перенос артефактов

Скопировать на новый сервер:

iqlink_full.sql или набор файлов *.dump;

file-storage.tar.gz;

конфигурационные файлы.

5. Развёртывание ПО на новом сервере

Поднять только PostgreSQL:

bash

docker compose up -d postgres

Дождаться готовности БД.

При необходимости выполнить инициализацию ролей и БД с использованием init-db.sql.

Восстановить дамп:

bash

psql -h 127.0.0.1 -p 54321 -U postgres -f iqlink_full.sql

Восстановить том file-storage:

bash

docker run --rm -v <file_storage_volume>:/data -v $PWD:/backup alpine \

tar xzf /backup/file-storage.tar.gz -C /data

6. Запуск микросервисов

Проверить, что в docker-compose.yml и .env адреса БД (*_DB_URL) и Keycloak (KC_DB_URL) указывают на новый хост.

Запустить остальные сервисы:

bash

docker compose up -d

7. Проверка работоспособности

Проверить статусы контейнеров:

bash

docker compose ps

Проверить логи сервисов aim-service, aim-idp, api-gateway.

Войти в веб-интерфейс.

Убедиться, что инфраструктура СКС, пользователи, справочники и вложения отображаются корректно.

Активировать или проверить лицензию license-service на новом сервере. При привязке лицензии к hardware id требуется выпуск новой лицензии.

8. Вывод старого сервера из эксплуатации

Перенаправить DNS-имя или IP-адрес на новый сервер.

Остановить старый стенд.

Сохранить дамп как контрольную резервную копию.

Серверы ПО и БД повреждены, внешние резервные копии отсутствуют

Если серверы ПО и базы данных полностью утрачены, а внешние резервные копии отсутствуют, восстановление ранее введенных данных невозможно. В этом случае выполняется развертывание новой инсталляции системы, следуя следующим действиям:

1. Подготовка новых серверов

Установить операционную систему.

Установить Docker и Docker Compose.

Обеспечить сетевую связность и доступность требуемых сетевых портов.

2. Получение дистрибутива ПО

Запросить у поставщика актуальный комплект поставки IQLink, включающий:

docker-compose.yml;

init-db.sql;

образы микросервисов или доступ к registry;

эталонные справочники dictionary-data;

лицензионный файл.

3. Развёртывание PostgreSQL «с нуля»

Поднять контейнер PostgreSQL.

       Создать роли и пустые базы данных (aim_db, filestore_db, user_db, dictionary_db, task_db, event_db, properties_db, keycloak_db) с использованием init-db.sql.

4. Запуск микросервисов

Выполнить запуск сервисов:

bash

docker compose up -d

При первом запуске Liquibase/Flyway миграции каждого сервиса создадут структуру БД.

Сервис dictionary-data загрузит эталонные справочники.

Сервис aim-idp (Keycloak) выполнит инициализацию realm и учетных записей администратора.

5. Активация лицензии

Установить лицензионный файл в license-service.

При необходимости перевыпустить лицензию для нового сервера.

6. Проверка работоспособности

Войти в веб-интерфейс под учетной записью администратора.

Убедиться в доступности основных модулей системы.

7. Повторный ввод инфраструктуры СКС

Поскольку ранее введенные данные утрачены безвозвратно, инфраструктуру необходимо ввести повторно:

вручную через пользовательский интерфейс;

через штатный механизм импорта import-service;

из внешних источников (CAD, CSV, Excel), если такие данные сохранились.

8. Организация регулярного резервного копирования

Настроить периодическое резервное копирование базы данных средствами pg_dumpall или pg_dump.

Включить резервное копирование тома file-storage.

Обеспечить хранение копий файлов docker-compose.yml, .env, лицензионных файлов.

Разместить резервные копии на внешнем носителе, NAS, S3 или ином выделенном хранилище.

Регламентировать периодичность резервного копирования и выполнять тестовое восстановление.

Для надежной эксплуатации системы рекомендуется обеспечить регулярное резервное копирование данных с размещением копий на внешнем носителе или выделенном хранилище. При отсутствии указанных резервных копий восстановление ранее введенных данных СКС после полной утраты серверов технически невозможно.