Настройка резервного копирования в 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 суток. |
Применение конфигурации
Чтобы применить настройки:
-
Разместите обновленный конфигурационный файл в рабочей директории Control Plane. Например, для установки в
/opt/ydb-emэто может быть файл/opt/ydb-em/ydb-em-cp/cfg/config.yaml. -
Убедитесь, что файл мастер-ключа, указанный в
secret_key, доступен процессам Control Plane. -
Проверьте, что
settings.s3.access_keyиsettings.s3.secret_keyзашифрованы тем же мастер-ключом. -
Перезапустите сервис 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 перезапущен после изменения конфигурации.