ATE Documentation portal logo
Помощь
Обновлена 30 октября 2026 г. в 12:05

Переменные PITR-резервирования

В этом разделе приведены переменные окружения сценария PITR-резервирования playbooks/backup_pitr.yml. Сценарий выполняет резервное копирование кластера Tarantool 3.x на основе утилиты tt backup (полное и инкрементальное копирование с возможностью восстановления на момент времени).

Все переменные имеют префикс tarantool_pitr_ и задаются глобально, например через --extra-vars или в файле инвентаря. Сценарий также использует переменные роли tt (см. раздел LINK_NOT_DEFINED(/ru/variable-reference/tt-variables)): tt_connect_username, tt_connect_password, а также переменные подключения к централизованному хранилищу конфигурации tt_config_storage_*.

Обязательные переменные

Переменная

Описание

tarantool_pitr_storage

Значение, передаваемое в tt backup флагом --backup-storage: ссылка на файл конфигурации хранилища (@/path/s3-prod.yaml) либо inline-URI (s3://…, s3+https://…, file://…). Общая переменная для резервирования и восстановления (хранилище одно и то же). Может быть пустой, если заданы параметры S3 переменными tarantool_pitr_s3_* (см. ниже) — тогда сценарий соберёт файл конфигурации сам. Сценарий завершается ошибкой, если пусты одновременно tarantool_pitr_storage и tarantool_pitr_s3_endpoint. Тип: string. Значение по умолчанию: "".

tarantool_pitr_backup_host

Хост сбора резервных копий (для управляющего узла Ansible — localhost). Тип: string. Значение по умолчанию: "" (обязательная).

Область хранилища (кластер и окружение)

Переменные tarantool_pitr_cluster_name и tarantool_pitr_environment необязательны. Они выбирают поддерево хранилища <root>/<prefix>/<cluster-name>/<environment>/ и должны задаваться одинаково во всех командах сценария (plan, upload, verify, gc, last). Если обе переменные пусты, резервные копии пишутся непосредственно в корень хранилища (или в его prefix). Если в одном хранилище лежит несколько кластеров, переменные нужно задать: команды, вызванные без них, увидят пустое хранилище, а не ошибку.

Переменная

Описание

tarantool_pitr_cluster_name

Имя кластера — первый компонент поддерева хранилища (<root>/<prefix>/<cluster-name>/<environment>/…). Тип: string. Значение по умолчанию: "" (необязательная).

tarantool_pitr_environment

Окружение (например prod, stage) — второй компонент поддерева хранилища. Задаётся только вместе с tarantool_pitr_cluster_name (tt отклоняет environment без cluster-name). Тип: string. Значение по умолчанию: "" (необязательная).

Хранилище

Переменная

Описание

tarantool_pitr_storage_root

Корневой каталог локальной файловой системы для хранилища type: fs. Сценарий создаёт его на хосте сбора (права 0750), если переменная задана. Для S3-хранилища переменную оставляют пустой. Также используется сценарием восстановления для чтения манифестов (--tags list-points, tarantool_pitr_restore_point_label). Тип: string. Значение по умолчанию: "".

S3-хранилище (параметры подключения)

Если tarantool_pitr_storage пуста, а tarantool_pitr_s3_endpoint задана, сценарий собирает файл конфигурации хранилища type: s3 (в рабочем каталоге tarantool_pitr_backup_dir для резервирования, tarantool_pitr_restore_dir для восстановления) из переменных ниже и передаёт его в tt backup/tt restore флагом --backup-storage (@<рабочий-каталог>/s3-storage.yaml). Переменные общие для резервирования и восстановления; применяются только когда tarantool_pitr_storage пуста.

Переменная

Описание

tarantool_pitr_s3_endpoint

URL конечной точки S3 (например https://s3.example.com). Тип: string. Значение по умолчанию: "" (необязательная; задаётся вместе с остальными tarantool_pitr_s3_*).

tarantool_pitr_s3_bucket

Имя бакета S3. Тип: string. Значение по умолчанию: "".

tarantool_pitr_s3_prefix

Префикс (подпуть) внутри бакета, изолирующий резервные копии кластера/окружения. Тип: string. Значение по умолчанию: "".

tarantool_pitr_s3_access_key

Ключ доступа S3 (access key id). Тип: string. Значение по умолчанию: "".

tarantool_pitr_s3_secret_key

Секретный ключ S3 (secret access key). Тип: string. Значение по умолчанию: "".

Бинарный файл tt

Переменная

Описание

tarantool_pitr_tt_bin_dir

Директория, содержащая бинарный файл tt, используемый во всех вызовах tt/tt backup обоих сценариев (backup_pitr.yml и restore_pitr.yml). По умолчанию — per-instance tt (tt_bin_path), доступный на хостах кластера. Явно задаётся только для управляющего узла Ansible или выделенного хоста, не входящего в кластер. Тип: string. Значение по умолчанию: "{{ tt_bin_path }}" (необязательная).

Тип и идентификатор резервной копии

Переменная

Описание

tarantool_pitr_backup_type

Тип резервной копии, передаваемый в tt backup plan --target: incremental (по умолчанию) или full. Тип: string. Значение по умолчанию: incremental.

tarantool_pitr_backup_snapshot

Для полной резервной копии выполнять tt backup start --snapshot: перед снятием копии создаётся свежий memtx-снимок (box.snapshot()), чтобы базовый снимок полной копии покрывал все экземпляры кластера, а не только bootstrap-экземпляр. Это необходимо для поэкземплярного восстановления tt restore. Действует только при tarantool_pitr_backup_type: full; для incremental флаг не добавляется (--snapshot для инкрементальных копий недопустим). Тип: boolean. Значение по умолчанию: true.

tarantool_pitr_backup_id

Явный идентификатор резервной копии. Если пусто, сценарий генерирует его сам как лексикографически сортируемый UTC-таймстемп YYYYMMDDTHHMMSSZ (например 20260326T120000Z). Тип: string. Значение по умолчанию: "".

tarantool_pitr_backup_ttl

Время жизни незавершённой резервной копии, передаваемое в tt backup start --ttl. Тип: string. Значение по умолчанию: 1h.

Точка восстановления

Сценарий backup_pitr.yml не создаёт точек восстановления. tt backup сам их не пишет, а tt restore plan выбирает момент восстановления исключительно по точкам восстановления. Поэтому в конфигурации кластера должна быть включена встроенная роль roles.recovery-point-manager: она периодически создаёт точки на каждом репликасете. Для подключения к репликасетам роли нужен отдельный пользователь (например backup_user) с правом execute на box.backup.recovery_point.create.

Пример фрагмента конфигурации кластера:

credentials:  users:    backup_user:      password: secret_backup      privileges:        - permissions: [execute]          lua_call: ['box.backup.recovery_point.create']roles: [roles.recovery-point-manager]roles_cfg:  roles.recovery-point-manager:    backend: net-replicaset    create:      by: {interval: 300}      timeout: 60    backends_cfg:      net-replicaset:        login: backup_user    managers:      rs_001:        backend_cfg:          target: replicaset-001

Рабочий каталог

Переменная

Описание

tarantool_pitr_backup_dir

Рабочий каталог, используемый на мастерах (через TMPDIR) и на хосте сбора для конфигурации кластера, плана и собранных артефактов. Тип: string. Значение по умолчанию: /tmp/bkp.

Сбор артефактов и требования к диску

По умолчанию артефакты проходят через управляющий узел Ansible: tt backup start пишет архив (.tar.zst) и манифест фрагмента (.json) каждого мастера в его рабочий каталог tarantool_pitr_backup_dir, затем сценарий забирает их на управляющий узел (модуль fetch), при выделенном хосте сбора — дополнительно копирует на него, и передаёт в хранилище командой tt backup upload. Схема одинакова для файлового хранилища и S3: tt backup upload читает локальные файлы, поэтому до загрузки архивы целиком лежат на управляющем узле (а при выделенном хосте сбора — ещё и на нём).

Такой маршрут намеренно идёт через управляющий узел: Ansible и без того соединяется с мастерами и хостом сбора, поэтому мастерам и хосту сбора не требуется прямая сетевая связность друг с другом. Это работает везде, где работает сам Ansible; однако, это требует достаточного места на диске:

  • на управляющем узле Ansible должно быть достаточно места под архив одной резервной копии (сумма архивов всех мастеров); локальная копия после загрузки автоматически не удаляется;
  • при выделенном хосте сбора (tarantool_pitr_backup_host ≠ localhost) тот же объём потребуется и на нём.

Чтобы исключить управляющий узел из цепочки и не пересылать данные между мастерами и хостом сбора, используйте общую файловую систему: tarantool_pitr_backup_shared_fs: true. Тогда tt backup start пишет архивы в каталог, смонтированный одновременно на мастерах и хосте сбора (общий том или NFS), а сценарий читает их напрямую и не выполняет fetch/copy. Мастера и хост сбора обращаются к общему тому, а не друг к другу напрямую.

Переменная

Описание

tarantool_pitr_backup_shared_fs

Если true, мастера и хост сбора используют общую файловую систему для tarantool_pitr_backup_dir: артефакты не забираются на управляющий узел, а читаются напрямую с общего каталога. Подходит для топологий с общим томом или NFS. Тип: boolean. Значение по умолчанию: false.

Очистка старых резервных копий

tt backup gc не удаляет ничего, пока --keep-full или --keep-days равны нулю. Переменные ниже управляют этим поведением.

Переменная

Описание

tarantool_pitr_keep_full

Количество последних полных резервных копий, которые нужно сохранить (флаг gc --keep-full). Тип: integer. Значение по умолчанию: 0.

tarantool_pitr_keep_days

Срок хранения резервных копий в днях (флаг gc --keep-days). Тип: integer. Значение по умолчанию: 0.

tarantool_pitr_gc_dry_run

Выполнять очистку в режиме «dry-run» (без фактического удаления, флаг gc --dry-run). Тип: boolean. Значение по умолчанию: true.

Была ли статья полезна?