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

<< 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 или ином выделенном хранилище.

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

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