Возможно резервное копирование следующих компонентов системы:
Сценарии автоматизированного резервного копирования:
Восстановление возможно только на ту же версию 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/ .
Выполняется на сервере, хранящем метрики.
Если перед началом резервного копирования MITIGATOR остановлен, необходимо
запустить модуль хранения метрик (docker-compose up -d clickhouse
) и
остановить его после процедуры создания бэкапа (docker-compose stop clickhouse
).
for table in 'graphite' 'graphite_tagged' 'graphite_index'; do docker-compose exec clickhouse clickhouse-client --query "ALTER TABLE $table FREEZE"; done
tar -czf metrics.tgz -C /var/lib/docker/volumes/mitigator_clickhouse/_data/shadow/1/data/default .
rm -r /var/lib/docker/volumes/mitigator_clickhouse/_data/shadow/{1,increment.txt}
Команды приведены исходя из того, что файлы с резервной копией
находятся в рабочем каталоге /srv/mitigator
, однако местоположение файлов
может быть любым:
В этом случае в командах должен быть указан полный путь к файлам резервной копии.
Выполняется на сервере, хранящем базу данных (primary, если настроена репликация).
Остановить MITIGATOR:
docker-compose down
Удалить существующую базу:
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 mitigator_postgres_1:/tmp
docker-compose exec postgres sh -c 'psql mitigator </tmp/backup.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 mitigator_postgres_1:/tmp/restore.log .
Выполняется на сервере, хранящем метрики.
Задать тома. Совпадает с именем каталога установки, то есть mitigator
.
Другие значения могут быть нужны только в специальных случаях.
VOLUME=mitigator_clickhouse
Запустить ClickHouse:
docker-compose up -d clickhouse && docker-compose logs -f clickhouse
Дождаться сообщения /entrypoint.sh: running /docker-entrypoint-initdb.d/03-create-graphite_tagged-table.sql
,
нажать Ctrl+C.
Распаковать архив metrics.tgz
в том контейнера:
mkdir -p /var/lib/docker/volumes/${VOLUME}/_data/backup
tar -xzf metrics.tgz -C /var/lib/docker/volumes/${VOLUME}/_data/backup
Переместить бэкап в системные директории Clickhouse внутри контейнера:
docker-compose exec clickhouse bash -c 'cd /var/lib/clickhouse/backup; for dir in *; do cp -r $dir/* /var/lib/clickhouse/data/default/$dir/detached; done'
Выдать права пользователю внутри контейнера:
docker-compose exec clickhouse chown -R clickhouse:clickhouse /var/lib/clickhouse
Восстановить данные:
docker-compose exec clickhouse clickhouse-client --format=TSVRaw -q"select 'ALTER TABLE ' || database || '.' || table || ' ATTACH PARTITION ID \'' || partition_id || '\';\n' from system.detached_parts group by database, table, partition_id order by database, table, partition_id;" | docker-compose exec -T clickhouse clickhouse-client -nm