Настройка резервного копирования в S3 для YDB EM

В этом руководстве описана настройка резервного копирования баз данных в S3-совместимое хранилище через YDB Enterprise Manager (YDB EM). Резервное копирование настраивается в конфигурационном файле Control Plane. В примерах ниже путь к этому файлу обозначен как <ydb-em-cp-config.yaml>.

Для настройки S3-бэкапов нужны три блока конфигурации:

  • backup_targets — куда сохранять резервные копии;
  • secret_key — каким мастер-ключом зашифрованы ключи доступа к S3;
  • locations[].default_backup_config — когда запускать резервное копирование и сколько хранить копии.

Примечание

Эта статья описывает настройку автоматического резервного копирования через YDB EM. Общую информацию о способах резервного копирования в YDB см. в разделах Концепции резервного копирования и Резервное копирование и восстановление.

Настройка S3-хранилища

Добавьте в конфигурацию Control Plane блок backup_targets:

backup_targets:
  - target_id: "target-em"
    tags:
      locations:
        - "em"
    settings:
      s3:
        endpoint: s3.example.net
        bucket: ydb-em-backups
        access_key: "<encrypted access key>"
        secret_key: "<encrypted secret key>"
        compression: "zstd"
Параметр Описание
target_id Уникальный идентификатор целевого хранилища резервных копий.
tags.locations Список location_id, для которых применяется этот target. База данных будет копироваться в этот target, если ее location_id есть в списке. Для YDB EM обычно используется значение em, соответствующее locations[].database_location_id и meta_location_id.
settings.s3.endpoint Адрес S3-совместимого хранилища.
settings.s3.bucket Имя бакета для резервных копий.
settings.s3.scheme Протокол подключения: 1 — HTTP, 2 — HTTPS. Если параметр не задан, используется HTTPS.
settings.s3.access_key Зашифрованный ключ доступа к S3.
settings.s3.secret_key Зашифрованный секретный ключ доступа к S3.
settings.s3.compression Алгоритм сжатия экспортируемых данных. По умолчанию используется zstd. Удалите параметр, если сжатие не требуется.

Location — это логическая группа баз данных в YDB EM, к которой каждая база привязана через идентификатор location_id. Как правило, одна location соответствует одной зоне размещения баз данных — например, дата-центру или зоне доступности, в которой они работают, — но location можно использовать и для логического разделения, например по окружениям (prod, test). Например, если базы данных развёрнуты в двух дата-центрах, им можно назначить разные location и направлять резервные копии из каждого дата-центра в своё S3-хранилище. Для типовой установки YDB EM используется единственная location со значением em, которому соответствуют поля locations[].database_location_id и meta_location_id в конфигурации Control Plane.

tags.locations нужен, когда один Control Plane управляет базами из нескольких location и для разных location нужно использовать разные хранилища резервных копий. Worker выбирает target по location_id базы: если location_id базы входит в tags.locations, для резервного копирования используется этот target. Так можно, например, направлять бэкапы из разных зон или окружений в разные S3-бакеты.

Примечание

Вместо привязки target к location_id можно использовать explicit_backup_targets с правилами by_database_path или by_cloud_id, если конкретную базу данных или облако нужно закрепить за определенным target.

Настройка мастер-ключа

На верхнем уровне конфигурационного файла укажите путь к файлу с мастер-ключом:

secret_key: configs/em/secret_key

Этот мастер-ключ используется для шифрования и расшифровки значений settings.s3.access_key и settings.s3.secret_key. Файл мастер-ключа должен быть доступен процессам Control Plane по пути, указанному в параметре secret_key.

Важно

Не сохраняйте access_key и secret_key в конфигурации в открытом виде. YDB EM ожидает зашифрованные значения и расшифровывает их во время выполнения.

Шифрование ключей доступа к S3

Зашифруйте ключи доступа к S3 тем же мастер-ключом, который указан в параметре secret_key. Для шифрования используйте бинарный файл Control Plane ydb-em-cp, который входит в пакет YDB EM как bin/ydb-em-cp и размещается на хосте Control Plane при первоначальном развёртывании:

ydb-em-cp admin crypto encrypt --body '<plaintext access key>' --cfg-file <ydb-em-cp-config.yaml>
ydb-em-cp admin crypto encrypt --body '<plaintext secret key>' --cfg-file <ydb-em-cp-config.yaml>

Скопируйте полученные зашифрованные строки в параметры settings.s3.access_key и settings.s3.secret_key.

Чтобы проверить, что значение можно расшифровать тем же мастер-ключом, выполните:

ydb-em-cp admin crypto decrypt --body '<encrypted value>' --cfg-file <ydb-em-cp-config.yaml>

Настройка расписания и срока хранения

Target определяет, куда сохранять резервные копии. Расписание и срок хранения задаются отдельно, в блоке locations[].default_backup_config. Это конфигурация резервного копирования по умолчанию для баз данных в указанной location. Если для конкретной базы данных в YDB EM задана индивидуальная конфигурация резервного копирования, она может отличаться от этих значений по умолчанию.

locations:
  - database_location_id: em
    default_backup_config:
      backup_settings:
        - name: daily
          type: SYSTEM
          backup_schedule:
            daily_backup_schedule:
              execute_time:
                hours: 20
          backup_time_to_live: "604800s"
Параметр Описание
backup_settings[].name Имя настройки резервного копирования.
backup_settings[].type Тип настройки. Для системного расписания используйте SYSTEM.
backup_schedule.daily_backup_schedule.execute_time.hours Час запуска ежедневного резервного копирования в UTC.
backup_time_to_live Срок хранения резервной копии в секундах. Например, 604800s — 7 суток.

Применение конфигурации

Чтобы применить настройки:

  1. Разместите обновленный конфигурационный файл в рабочей директории Control Plane. Например, для установки в /opt/ydb-em это может быть файл /opt/ydb-em/ydb-em-cp/cfg/config.yaml.

  2. Убедитесь, что файл мастер-ключа, указанный в secret_key, доступен процессам Control Plane.

  3. Проверьте, что settings.s3.access_key и settings.s3.secret_key зашифрованы тем же мастер-ключом.

  4. Перезапустите сервис Control Plane:

    sudo systemctl restart ydb-em-cp
    

После перезапуска Control Plane по расписанию определяет target по location_id, настраивает S3-хранилище и запускает экспорт данных в указанный бакет.

Проверочный список

Перед запуском проверьте:

  • backup_targets[].tags.locations содержит location_id баз данных, для которых нужно включить резервное копирование;
  • endpoint, bucket и scheme указывают на нужное S3-хранилище;
  • access_key и secret_key зашифрованы командой ydb-em-cp admin crypto encrypt;
  • верхнеуровневый параметр secret_key указывает на корректный файл мастер-ключа;
  • в locations[].default_backup_config задано расписание и срок хранения;
  • обновленный конфигурационный файл размещен в рабочей директории Control Plane;
  • сервис Control Plane перезапущен после изменения конфигурации.