Перейти к содержимому
Последнее обновление

Операция резервного копирования метаданных

В режиме разделения вычислений и хранения метаданные кластера хранятся в двух местах: в образе и журнале изменений BDBJE на стороне FE и в FoundationDB (FDB) на стороне Meta Service. При независимом резервном копировании эти данные фиксируются в разные моменты времени, из-за чего при восстановлении они могут оказаться несогласованными.

Эти API решают эту проблему: сначала создаётся точка синхронизации метаданных между FE и FDB, затем на её основе экспортируются метаданные FE. Это позволяет согласовать обе резервные копии по одному моменту времени.

Примечание о версии

Эта функция поддерживается начиная с версии 4.0.8 и доступна только в режиме разделения вычислений и хранения. При вызове в режиме совмещённых вычислений и хранения возвращается ошибка.

Обзор API​

APIМетодНазначение
/rest/v2/manager/backup/sync_cloud_metaPOSTСоздаёт точку синхронизации метаданных между FE и FDB и возвращает её идентификатор журнала, зафиксированную версию и versionstamp
/rest/v2/manager/backup/export_metaPOSTЭкспортирует образ FE, файлы метаданных и журналы BDBJE в указанный каталог

Предварительные требования​

  • Кластер работает в режиме разделения вычислений и хранения (параметр конфигурации FE deploy_mode = cloud).
  • Учётная запись, от имени которой выполняется вызов, имеет привилегию ADMIN.
  • Оба API необходимо вызывать на Master FE. При вызове на FE, не являющемся ведущим, по умолчанию в ответе возвращается адрес ведущего FE; для автоматического перенаправления добавьте к URL allow_redirect=true.
  • Для export_meta требуется параметр конфигурации FE edit_log_type = bdb (значение по умолчанию).

Создание точки синхронизации метаданных​

Назначение: Зафиксировать точку синхронизации в Meta Service и записать её в журнал изменений FE, чтобы использовать её как опорную точку для согласования резервных копий FE и FDB.

curl -u <user>:<passwd> -X POST \
"http://<fe_host>:<fe_http_port>/rest/v2/manager/backup/sync_cloud_meta"

Пример ответа:

{
"msg": "success",
"code": 0,
"data": {
"journal_id": 1024,
"committed_version": 20250811000000,
"versionstamp": "0000000000000001"
},
"count": 0
}

Поля ответа:

ПолеОписание
journal_idИдентификатор этой точки синхронизации в журнале изменений FE
committed_versionЗафиксированная версия, возвращённая Meta Service
versionstampСоответствующий versionstamp FDB, используемый для согласования с резервной копией FDB

Экспорт метаданных FE​

Назначение: Экспортировать текущий образ FE и журналы BDBJE в локальный каталог для создания резервной копии метаданных FE, пригодной для восстановления.

curl -u <user>:<passwd> -X POST \
-H "Content-Type: application/json" \
-d '{"target_dir": "/path/to/backup/dir"}' \
"http://<fe_host>:<fe_http_port>/rest/v2/manager/backup/export_meta"

Параметры тела запроса:

ПараметрТипОбязательныйОписание
target_dirStringДаАбсолютный путь к целевому каталогу экспорта. Если каталог не существует, он создаётся; если он уже существует, сначала удаляется всё его содержимое

Пример ответа:

{
"msg": "success",
"code": 0,
"data": {
"target_dir": "/path/to/backup/dir",
"bdb_dir": "/path/to/backup/dir/bdb",
"bdb_file_count": 12,
"image_file": "image.1024",
"image_version": 1024,
"image_exported": true,
"journal_upper_bound": 2048
},
"count": 0
}

Поля ответа:

ПолеОписание
target_dirАбсолютный путь к каталогу, фактически использованному для экспорта
bdb_dirПодкаталог с экспортированными файлами журналов BDBJE
bdb_file_countКоличество экспортированных файлов журналов BDBJE
image_fileИмя экспортированного файла образа; null, если образ отсутствует
image_versionВерсия экспортированного образа
image_exportedПризнак успешного экспорта файла образа
journal_upper_boundНаибольший идентификатор журнала в BDBJE на момент экспорта

Структура каталога экспорта:

<target_dir>/
├── image/
│ ├── image.<version> # The latest image file
│ ├── MODE # Deployment mode file
│ ├── ROLE # FE role file
│ └── VERSION # Cluster version file
└── bdb/
└── *.jdb # BDBJE log files

Во время экспорта FE удерживает блокировку checkpoint в режиме чтения, поэтому образ нельзя заменить, пока он копируется. Для образа и файлов метаданных по возможности создаются жёсткие ссылки; если жёсткие ссылки недоступны, файлы копируются.

Полная процедура резервного копирования​

  1. Вызовите sync_cloud_meta и сохраните возвращённые versionstamp и committed_version.
  2. Создайте резервную копию метаданных на стороне FDB на основе этого versionstamp.
  3. Вызовите export_meta, чтобы экспортировать метаданные FE в каталог резервного копирования.
  4. Заархивируйте вместе versionstamp, committed_version и каталог экспорта, чтобы при восстановлении можно было проверить, что обе резервные копии относятся к одному моменту времени.

Часто задаваемые вопросы​

СимптомПричинаРешение
Возвращается only works on the cloud modeКластер работает не в режиме разделения вычислений и храненияЭти API поддерживают только режим разделения вычислений и хранения
Возвращается current fe is not master, master is <host>:<port>Запрос был отправлен на FE, не являющийся ведущимОтправьте запрос на ведущий FE или добавьте к URL allow_redirect=true
Возвращается target_dir is requiredВ теле запроса отсутствует target_dirУкажите target_dir в теле запроса JSON
Возвращается only bdb edit_log_type supports bdbje exportПараметр FE edit_log_type имеет значение, отличное от bdbЭтот API поддерживает только журнал изменений BDBJE
Возвращается export failed: bdb min journal id ... is greater than image_version + 1Самая ранняя запись журнала BDBJE находится за пределами диапазона, охватываемого образом, поэтому экспортированную резервную копию нельзя восстановить непрерывным воспроизведением журналаИнициируйте checkpoint, чтобы создать более новый образ, затем повторите экспорт
Возвращается target_dir exists but is not a directorytarget_dir указывает на файлУкажите путь к каталогу