Резервное копирование
Возможно резервное копирование следующих компонентов системы:
- данных кластера — настроек, сделанных через web-интерфейс и API;
- данных экземпляра — специфичных для экземпляра настроек;
- метрик (графиков);
- данных журналов.
Восстановление возможно только на ту же версию MITIGATOR, с которой была сделана резервная копия.
Создание резервной копии
Резервная копия состоит из копии данных кластера (backup.sql или
backup_lite.sql) и копии данных каждого экземпляра (один или
несколько backup_ownid.tgz).
В зависимости от потребностей резервная копия данных кластера может
быть полной (backup.sql) или облегченной (backup_lite.sql).
Облегченная резервная копия не содержит данных журналов и инцидентов.
Резервная копия данных кластера
Выполняется на сервере, хранящем базу данных (primary, если настроена репликация).
Вариант А. При работающем MITIGATOR:
docker-compose exec postgres sh -c 'backup > /tmp/backup.sql' && \
docker cp $(docker-compose ps -q postgres):/tmp/backup.sql .docker-compose exec postgres sh -c 'backup_lite > /tmp/backup_lite.sql' && \
docker cp $(docker-compose ps -q postgres):/tmp/backup_lite.sql .Вариант Б. При остановленном MITIGATOR:
docker-compose up -d postgres && \
docker-compose exec postgres sh -c 'backup > /tmp/backup.sql' && \
docker cp $(docker-compose ps -q postgres):/tmp/backup.sql . && \
docker-compose down postgresdocker-compose up -d postgres && \
docker-compose exec postgres sh -c 'backup_lite > /tmp/backup_lite.sql' && \
docker cp $(docker-compose ps -q postgres):/tmp/backup_lite.sql . && \
docker-compose down postgresПосле выполнения любого из вариантов создания копии следует вручную убедиться, что резервная копия создалась без ошибок:
tail backup.sqltail backup_lite.sqlРезервная копия данных экземпляра
Выполняется на каждом из экземпляров:
tar -czf backup_ownid.tgz -C /var/lib/docker/volumes/mitigator_own_id/ .Резервная копия метрик
Выполняется на сервере, хранящем метрики.
Инструкция актуальна для версии v22.02 и выше. Для более старых версий используйте соответствующую версии инструкцию.
Если перед началом резервного копирования MITIGATOR остановлен, необходимо
запустить модуль хранения метрик (docker-compose up -d clickhouse) и
остановить его после процедуры создания бэкапа (docker-compose stop clickhouse).
Внимание! Резервные копии метрик, снятые на версиях v22.02.0-v22.04.3, будут иметь расширение .tar.gz
docker-compose exec clickhouse sh -c 'backup' && \
docker cp $(docker-compose ps -q clickhouse):/tmp/metrics.tar.zst . && \
docker-compose exec -u root clickhouse rm /tmp/metrics.tar.zstВосстановление из резервной копии
Команды приведены исходя из того, что файлы с резервной копией
находятся в рабочем каталоге /srv/mitigator, однако местоположение файлов
может быть любым:
- на удаленном сервере;
- на USB-накопителе;
- в любом каталоге системы.
В этом случае в командах должен быть указан полный путь к файлам резервной копии.
Восстановление данных кластера
Выполняется на сервере, хранящем базу данных (primary, если настроена репликация).
-
Остановить MITIGATOR:
docker-compose down
Очистка тома postgres приведёт к удалению всех настроек, политик защиты, журналов
и пользователей системы MITIGATOR.
Перед выполнением убедитесь в наличии актуальной резервной копии данных.
-
Удалить существующую базу:
docker volume rm mitigator_postgres -
Запустить Postgres:
docker-compose up -d postgres && docker-compose logs -f postgres -
Дождаться сообщения
database system is ready to accept connections, нажать Ctrl+C. -
Перенести бэкап в контейнер и восстановить данные:
docker cp backup.sql $(docker-compose ps -q postgres):/tmp && \
docker-compose exec postgres sh -c 'psql mitigator </tmp/backup.sql >/tmp/restore.log'docker cp backup.sql $(docker-compose ps -q postgres):/tmp && \
docker-compose exec postgres sh -c 'psql mitigator </tmp/backup_lite.sql >/tmp/restore.log'Восстановление данных экземпляра
Выполняется на каждом экземпляре.
-
Развернуть volume own_id:
tar -xzf backup_ownid.tgz -C /var/lib/docker/volumes/mitigator_own_id/ . -
Запустить MITIGATOR:
docker-compose up -d
Если на этапе восстановления появились ошибки, технической поддержке будет
нужен их текст и файл restore.log, который можно забрать из контейнера так:
docker cp $(docker-compose ps -q postgres):/tmp/restore.log .Восстановление метрик
Выполняется на сервере, хранящем метрики.
-
Запустить Clickhouse (если остановлен)
docker-compose up -d clickhouse && docker-compose logs -f clickhouse | grep -qm1 "03-create-graphite_tagged-table.sql" -
Перенести бэкап в контейнер и восстановить данные
Внимание! Резервные копии метрик, снятые на версиях v22.02.0-v22.04.3, будут иметь расширение
.tar.gzdocker cp metrics.tar.zst $(docker-compose ps -q clickhouse):/tmp && \ docker-compose exec clickhouse sh -c 'restore /tmp/metrics.tar.zst' -
Удалить архив с бэкапом из контейнера
docker-compose exec -u root clickhouse rm /tmp/metrics.tar.zst