Резервное копирование

Возможно резервное копирование следующих компонентов системы:

  • данных кластера — настроек, сделанных через web-интерфейс и API;
  • данных экземпляра — специфичных для экземпляра настроек;
  • метрик (графиков).

Восстановление возможно только на ту же версию MITIGATOR, с которой была сделана резервная копия.

Создание резервной копии

Резервная копия состоит из копии данных кластера (backup.sql) и копии данных каждого экземпляра (один или несколько backup_ownid.tgz).

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

Выполняется на сервере, хранящем базу данных (primary, если настроена репликация).

Вариант А. При работающем MITIGATOR:

docker-compose exec postgres sh -c 'backup > /tmp/backup.sql'
docker cp mitigator_postgres_1:/tmp/backup.sql .

Вариант Б. При остановленном MITIGATOR:

docker-compose up -d postgres
docker-compose exec postgres sh -c 'backup > /tmp/backup.sql'
docker cp mitigator_postgres_1:/tmp/backup.sql .
docker-compose down postgres

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

tail backup.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 mitigator_clickhouse_1:/tmp/metrics.tar.zst .
docker-compose exec clickhouse rm /tmp/metrics.tar.zst

Восстановление из резервной копии

Команды приведены исходя из того, что файлы с резервной копией находятся в рабочем каталоге /srv/mitigator, однако местоположение файлов может быть любым:

  • на удаленном сервере;
  • на USB-накопителе;
  • в любом каталоге системы.

В этом случае в командах должен быть указан полный путь к файлам резервной копии.

Восстановление данных кластера

Выполняется на сервере, хранящем базу данных (primary, если настроена репликация).

  1. Остановить MITIGATOR:

    docker-compose down
    
  2. Удалить существующую базу:

    docker volume rm mitigator_postgres
    
  3. Запустить Postgres:

    docker-compose up -d postgres && docker-compose logs -f postgres
    
  4. Дождаться сообщения database system is ready to accept connections, нажать Ctrl+C.

  5. Перенести бэкап в контейнер и восстановить данные:

    docker cp backup.sql mitigator_postgres_1:/tmp
    docker-compose exec postgres sh -c 'psql mitigator </tmp/backup.sql >/tmp/restore.log'
    

Восстановление данных экземпляра

Выполняется на каждом экземпляре.

  1. Развернуть volume own_id:

    tar -xzf backup_ownid.tgz -C /var/lib/docker/volumes/mitigator_own_id/ .
    
  2. Запустить MITIGATOR:

    docker-compose up -d
    

Если на этапе восстановления появились ошибки, технической поддержке будет нужен их текст и файл restore.log, который можно забрать из контейнера так:

docker cp mitigator_postgres_1:/tmp/restore.log .

Восстановление метрик

Выполняется на сервере, хранящем метрики.

  1. Запустить Clickhouse (если остановлен)

    docker-compose up -d clickhouse && docker-compose logs -f clickhouse | grep -qm1 "03-create-graphite_tagged-table.sql"
    
  2. Перенести бэкап в контейнер и восстановить данные

    Внимание! Резервные копии метрик, снятые на версиях v22.02.0-v22.04.3, будут иметь расширение .tar.gz

    docker cp metrics.tar.gz mitigator_clickhouse_1:/tmp
    docker-compose exec clickhouse sh -c 'restore /tmp/metrics.tar.zst'
    
  3. Удалить архив с бэкапом из контейнера

    docker-compose exec clickhouse rm /tmp/metrics.tar.zst