Перейти к содержанию

Резервное копирование внутренних баз данных Акуры#

Обзор#

Иногда машина, на которой развернута Акура, может выходить из строя. Чтобы не нарушать работу инфраструктуры, мы реализовали возможность создания резервных копий баз данных 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.