Резервное копирование
Плейбуки для создания резервных копий экземпляров Tarantool, перевода экземпляров в режим резервирования и восстановления из резервных копий.
В режиме резервирования архивируются рабочие директории экземпляров и конфигурационные файлы. Порядок резервирования произвольный.
Плейбук для создания резервных копий экземпляров Tarantool.
Переменная | Описание |
|---|---|
| Путь к директории на удалённом сервере, в которой будут собраны резервные копии. Значение по умолчанию: |
| Количество одновременных процессов резервирования. Значение по умолчанию: |
| Копировать архивы резервных копий на локальный сервер. Значение по умолчанию: |
| Директория для архивов на локальном сервере. Значение по умолчанию: |
| Таймаут ожидания создания снимка состояния в секундах. Значение по умолчанию: |
| Интервал между проверками готовности снимка состояния в секундах. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \-e tarantool_remote_backups_dir=${PATH_TO_BACKUP_DIRECTORY} \playbooks/backup.yml
Запуск через Docker-образ инсталлятора:
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_remote_backups_dir":"'${PATH_TO_BACKUP_DIRECTORY}'"}' \playbooks/backup.yml
Плейбук для перевода экземпляров в режим резервирования. На стороне инсталлятора создаются текстовые файлы — по одному на каждый физический сервер — со списком путей для резервного копирования.
Переменная | Описание |
|---|---|
| Путь для сохранения файлов со списком путей резервного копирования. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \-e path_to_write_backup_list_files=/tmp \playbooks/backup_start.yml --limit ${LIMIT}
Запуск через Docker-образ инсталлятора:
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","path_to_write_backup_list_files":"/tmp"}' \playbooks/backup_start.yml --limit ${LIMIT}
Плейбук для выключения режима резервирования экземпляров.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/backup_stop.yml --limit ${LIMIT}
Запуск через Docker-образ инсталлятора:
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'"}' \playbooks/backup_stop.yml --limit ${LIMIT}
Плейбук для настройки автоматической очистки резервных копий через cron.
Очистка настраивается либо по количеству хранимых копий, либо по сроку хранения в днях.
Переменная | Описание |
|---|---|
| Количество хранимых резервных копий. Очистка по количеству. |
| Срок хранения резервных копий в днях. Очистка по времени. |
| Периодичность запуска задачи cron для очистки. Значение по умолчанию: |
Запуск через коллекцию (очистка по количеству):
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \-e tarantool_backup_retention_count=7 \playbooks/backup_clean.yml
Запуск через Docker-образ инсталлятора:
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_backup_retention_count": 7}' \playbooks/backup_clean.yml
Плейбук для PITR-резервирования кластера Tarantool 3.x на основе утилиты tt backup: полное и инкрементальное копирование с возможностью восстановления на момент времени.
Плейбук выполняет фазы в следующем порядке:
- Проверяет входные данные (например, что задано хранилище резервных копий
tarantool_pitr_storage). - Строит план копирования (
tt backup plan) — один раз на хосте сбора. - Запускает копирование на мастерах наборов реплик (
tt backup start). Если на мастере осталась незавершённая предыдущая копия, плейбук принудительно завершает её и повторяет запуск. - Собирает артефакты копии с мастеров на хост сбора.
- Выгружает копию в хранилище резервных копий (
tt backup upload). - Завершает копирование на мастерах (
tt backup finalize). - Проверяет копию в хранилище (
tt backup verify) и при заданных политиках хранения удаляет устаревшие копии (tt backup gc). По умолчанию очистка выполняется в режиме dry-run (переменнаяtarantool_pitr_gc_dry_run, значение по умолчанию:true): устаревшие копии только перечисляются, без удаления. Для реального удаления задайте переменной значениеfalse.
Хост сбора — единственный хост, на котором собираются архивы и выполняются фазы планирования, выгрузки и проверки. Задаётся переменной tarantool_pitr_backup_host; по умолчанию — управляющий узел Ansible (localhost).
Основные переменные (полный список и подробное описание — в разделе «Переменные окружения», страница «Переменные PITR-резервирования»):
Переменная | Описание |
|---|---|
| Хранилище резервных копий для |
| Хост сбора артефактов. Значение по умолчанию: |
| Тип копии: |
| Идентификатор копии. Если не задан, генерируется автоматически на каждый запуск. |
| Количество полных копий для хранения при очистке. Значение по умолчанию: |
| Срок хранения копий в днях при очистке. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/backup_pitr.yml
Плейбук для восстановления экземпляров из резервных копий.
Переменная | Описание |
|---|---|
| Путь к директории с архивами резервных копий на удалённом сервере. Значение по умолчанию: |
| Восстанавливать общие файлы (конфигурацию кластера). Значение по умолчанию: |
| Отключить проверку принадлежности резервной копии экземпляру. Значение по умолчанию: |
| Отключить очистку файлов перед восстановлением. Значение по умолчанию: |
| Время резервной копии для выбора ближайшей (формат |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \-e tarantool_remote_backups_dir=${PATH_TO_BACKUP_DIRECTORY} \playbooks/restore.yml
Запуск через Docker-образ инсталлятора:
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_remote_backups_dir":"'${PATH_TO_BACKUP_DIRECTORY}'"}' \playbooks/restore.yml
Плейбук для PITR-восстановления кластера Tarantool 3.x на момент времени на основе утилиты tt restore.
Плейбук выполняет фазы в следующем порядке:
- Проверяет входные данные.
- Строит план восстановления (
tt restore plan) — один раз на хосте восстановления. - Останавливает кластер и переносит директории данных экземпляров в сторону (с суффиксом
.pre-restore-<время>) — это позволяет откатить неудачное восстановление. - Распределяет скачанные из хранилища архивы по целевым узлам.
- Применяет копию (
tt restore apply) — по одному разу на набор реплик, на целевом узле. - После успешного применения удаляет директории
.pre-restore-*.
Хост восстановления — хост, на котором выполняется фаза планирования и куда скачиваются манифесты и архивы. Задаётся переменной tarantool_pitr_restore_host; по умолчанию — управляющий узел Ansible (localhost).
Основные переменные (полный список и подробное описание — в разделе «Переменные окружения», страница «Переменные PITR-восстановления»):
Переменная | Описание |
|---|---|
| Хранилище резервных копий для |
| Момент времени |
| Метка точки восстановления для выбора цели. Приоритетнее момента времени; для S3-хранилища недоступна. |
| Хост восстановления. Значение по умолчанию: |
| Наборы реплик для восстановления. Если не заданы, восстанавливаются только наборы реплик хранилищ — с ролями |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/restore_pitr.yml
Вывод доступных точек восстановления:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/restore_pitr.yml --tags list-points