|
<< 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 или ином выделенном хранилище.
•Регламентировать периодичность резервного копирования и выполнять тестовое восстановление.
Для надежной эксплуатации системы рекомендуется обеспечить регулярное резервное копирование данных с размещением копий на внешнем носителе или выделенном хранилище. При отсутствии указанных резервных копий восстановление ранее введенных данных СКС после полной утраты серверов технически невозможно.