Резервное копирование внутренних баз данных Акуры#
Обзор#
Иногда машина, на которой развернута Акура, может выходить из строя. Чтобы не нарушать работу инфраструктуры, мы реализовали возможность создания резервных копий баз данных etcd, MariaDB и MongoDB, с возможностью их развертывания на резервной виртуальной машине.
Резервное копирование должно выполняться регулярно, для удобства процесс автоматизирован с помощью cronjob. Он разделён на два этапа: создание резервных копий и загрузка архива во внешнее хранилище.
Резервное копирование etcd и баз данных#
Параметры cronjob задаются через overlay. Например:
external_backup:
suspend: false
mountpoint: /acura/backup
schedule: "@daily"
keep: 5
name: &external_backup_name
startingDeadlineSeconds: 100
image:
repository: *external_backup_name
tag: local
- mountpoint – путь к локальному хранилищу резервных копий на машине Акуры
- keep – максимальное количество резервных копий для хранения
- name – имя архива для резервного копирования на внешнее хранилище
Резервное копирование сохраняет все ключи etcd в файл acura_etcd-<timestamp>.dump
. Также выполняются shell-скрипты для экспорта MariaDB в acura_db_<timestamp>.sql.gz
и коллекции events из MongoDB в acura_mongo_<timestamp>.json.gz
. Хранятся только последние n файлов (см. параметр keep).
Резервное копирование на внешнее хранилище#
Резервное копирование на внешнее хранилище копирует локально сохранённые резервные копии баз данных Акуры на удалённую виртуальную машину.
Параметры этой процедуры настраиваются в etcd. Если они не указаны, считается, что резервные копии хранятся только локально. Пример:
external_backup:
type: object-storage
key: username
secret: password
url: http://172.22.5.88:9000
bucket: some-bucket
region: some-region (optional)
backup_path: some/path/folder (optional)
- type – ожидаемые значения:
object-storage
илиlocal
- url – URL объекта хранилища
- bucket – имя бакета для хранения резервных копий
- region – регион хранилища (необязательный параметр)
- backup_path – путь для хранения архива резервного копирования (необязательный параметр)
Если какой-либо параметр отсутствует (кроме region и backup_path), процесс резервного копирования на внешнее хранилище не будет выполнен. Однако важно отметить, что в случае ошибки локальные резервные копии останутся на машине.
При запуске процедуры резервного копирования последние версии резервных копий etcd и баз данных архивируются в файл с именем acura_backup_<timestamp>.tar.gz
. Если заданы соответствующие параметры, архив загружается в объектное хранилище (см. параметр backup_path). Если параметры хранилища не указаны, резервные копии остаются локальными.
Процесс восстановления#
После того как локальные резервные копии баз данных Акуры загружены на удалённую виртуальную машину, восстановите их, используя: hx_restore_from_backup
.