Резервное копирование
В данном разделе описаны компоненты платформы НТБот, подлежащие резервному копированию, рекомендуемые процедуры создания резервных копий и восстановления.
Перечень компонентов для резервного копирования
| Компонент | Тип данных | Путь / расположение |
|---|---|---|
| PostgreSQL | Базы данных сервисов (launcher, scenario, project, statistic и др.) | ./psql/data/ (Docker volume) |
| MinIO / файловое хранилище | Скрипты, JMX-сценарии, CSV-файлы, артефакты тестов | ./script-config-service/ntbot/ → /opt/ntbot |
| Keycloak | Конфигурация realm, пользователи, роли, клиенты | ./keycloak/data/h2/ (встроенная БД) или внешняя PostgreSQL |
| Конфигурация сервисов | YAML-файлы Spring Cloud Config | config-service/src/main/resources/config/ |
| SSL-сертификаты | PKCS12-хранилище ключей | /opt/ssh/ntdispatcher.p12 (внутри контейнера) |
| docker-compose.yml | Декларация сервисов и переменных окружения | Корневой каталог установки |
| Логи приложения | Журналы технических событий сервисов | ./logs/ (Docker volume каждого сервиса) |
Резервное копирование PostgreSQL
Создание резервной копии
# Резервная копия базы данных launcher
docker exec postgres-sql-eval pg_dump -U nt_dispatcher launcher \
> /backup/launcher_$(date +%Y%m%d_%H%M%S).sql
# Резервная копия всех баз данных одним файлом
docker exec postgres-sql-eval pg_dumpall -U postgres \
> /backup/ntbot_all_$(date +%Y%m%d_%H%M%S).sqlВосстановление из резервной копии
# Восстановление одной базы данных
docker exec -i postgres-sql-eval psql -U postgres -c "CREATE DATABASE launcher;"
docker exec -i postgres-sql-eval psql -U postgres -d launcher \
< /backup/launcher_<дата>.sqlБазы данных отдельных сервисов: launcher, scenario, project, statistic,
artefact_storage, test_data, schedule, sts.
Резервное копирование файлового хранилища
Каталог /opt/ntbot содержит скрипты и JMX-конфигурации, используемые при запуске тестов.
# Резервная копия скриптов и конфигураций
tar -czf /backup/ntbot_scripts_$(date +%Y%m%d).tar.gz ./script-config-service/ntbot/
# Восстановление
tar -xzf /backup/ntbot_scripts_<дата>.tar.gz -C ./script-config-service/Резервное копирование Keycloak
Экспорт realm через Admin Console
- Войдите в Keycloak Admin Console.
- Выберите realm ntdispatcher.
- Перейдите в Realm Settings → Action → Partial export.
- Включите экспорт пользователей и групп.
- Нажмите Export — сохраните файл
ntdispatcher-realm.json.
Экспорт через CLI (kcadm)
docker exec -it <keycloak-container> /opt/keycloak/bin/kc.sh export \
--dir /opt/keycloak/data/export \
--realm ntdispatcher \
--users realm_fileВосстановление realm
docker exec -it <keycloak-container> /opt/keycloak/bin/kc.sh import \
--file /opt/keycloak/data/export/ntdispatcher-realm.jsonРезервное копирование конфигурации сервисов
Конфигурация сервисов управляется через Git (репозиторий htbot_back).
Резервная копия создаётся стандартными средствами Git:
git -C <путь-к-репозиторию> bundle create \
/backup/htbot_back_$(date +%Y%m%d).bundle --allДополнительно — сохраните файл docker-compose.yml корневого каталога установки.
Резервное копирование SSL-сертификатов
# Копирование хранилища ключей из контейнера
docker cp api-gateway:/opt/ssh/ntdispatcher.p12 /backup/ntdispatcher.p12Храните резервную копию хранилища ключей в защищённом месте отдельно от паролей.
Рекомендуемая периодичность
| Компонент | Рекомендуемая периодичность |
|---|---|
| PostgreSQL (все базы) | Ежедневно |
| MinIO / файловое хранилище | Еженедельно (или при значимых изменениях) |
| Keycloak (realm export) | При каждом изменении конфигурации realm |
| Конфигурация сервисов (Git) | Непрерывно (каждый коммит) |
| SSL-сертификаты | При выпуске или обновлении сертификата |
Проверка резервных копий
Рекомендуется регулярно проверять работоспособность резервных копий путём тестового восстановления на изолированном стенде. Выполните следующие действия для проверки:
- Восстановите резервную копию PostgreSQL в тестовой БД.
- Запустите сервисы с указанием тестовой БД.
- Убедитесь, что данные (проекты, сценарии, результаты тестов) доступны в интерфейсе.
- Проверьте, что авторизация через Keycloak работает с восстановленным realm.