Skip to content

Резервные копии

Страница для администраторов инстансов, развёрнутых самостоятельно. Дампы базы данных TAktom снимает «из коробки»; настраивать нужно то, как часто их снимать, сколько хранить и куда складывать.

Настройки — в разделе Админ → Бэкап.

Что попадает в резервную копию

Копия охватывает базу данных — проекты, задачи, комментарии, конфигурацию, пользователей. Ещё две вещи в дамп не входят и остаются на вас:

  • Прикреплённые файлы — они лежат в хранилище файлов и резервируются средствами того, что их хранит.
  • Файл параметров развёртывания с секретами. Держите его копию в надёжном месте.

Политики

Политика — это расписание: что дампить, как часто и сколько истории хранить. В комплекте идут две политики, их можно править и отключать:

ПолитикаЧто дампитПериодХранение
Полный дампВсю базу24 часа7 копий / 30 дней
Частый дампВсё, кроме содержимого журнала аудита и журнала вызовов ИИ1 час24 копии / 2 дня

Частая политика существует ради того, чтобы регулярные дампы оставались небольшими: исключается только содержимое этих объёмных таблиц. Структура в дампе есть всегда, поэтому любой дамп восстанавливает базу целиком — частый просто вернётся без этой истории.

Для каждой политики задаются период, сколько копий хранить, сколько дней их держать и включена ли она. Дамп можно снять и вручную в любой момент.

Снимать дамп только при изменениях

Политике можно указать пропускать прогон, если база не менялась с прошлого дампа. На спокойном инстансе это избавляет от десятков одинаковых копий в хранилище. Страховочный интервал всё равно заставляет снять дамп через заданное время, поэтому сбой детектора не может оставить вас без свежих копий.

Ротация

Самые свежие копии политики в заданном количестве хранятся всегда, сколько бы им ни было лет. Сверх этого количества удаляются те, что старше срока хранения. Файл удаляется, а запись в журнале остаётся с пометкой об истёкшем сроке — история прогонов не теряется.

Куда складываются дампы

У каждой политики есть выбор:

ВариантЧто делает
Только том инстанса (по умолчанию)Дамп остаётся на собственном томе установки.
Только внешнее хранилищеДамп снимается локально, выгружается наружу, локальный файл удаляется.
Хранилище и локальная копияВыгружается наружу и остаётся локально.

Двум последним вариантам нужно хранилище за пределами этого сервера, подключённое дополнительным плагином; какое именно принимает дампы, выбирается здесь же. Это отдельный выбор, независимый от того, где лежат вложения задач, — см. Хранилище файлов → Назначение.

Локальные дампы лежат на том же сервере

Дамп на томе инстанса спасает от повреждения базы, но не от потери сервера. Чтобы резервная копия чего-то стоила, дампы должны покидать машину — либо выгрузкой во внешнее хранилище, либо вашим собственным регулярным копированием содержимого тома.

Если внешнее хранилище для дампов не назначено, варианты с выгрузкой выбрать нельзя — прогон гарантированно падал бы на доставке. А если доставка всё же сорвалась, прогон помечается неуспешным, но локальный файл сохраняется: терять снятый дамп из-за сетевого сбоя нельзя.

Журнал прогонов

Каждый прогон записывается: время, размер файла, контрольная сумма и ошибка, если она была. По журналу и проверяют, что копии действительно снимаются, — тихо падающая политика классическим образом обнаруживается слишком поздно.

Восстановление

Восстановление выполняется с командной строки сервера скриптом из комплекта поставки:

bash
bash deploy/restore-backup.sh --list             # какие дампы есть
bash deploy/restore-backup.sh --latest           # восстановить самый свежий
bash deploy/restore-backup.sh /path/file.dump    # восстановить конкретный файл

Восстановление замещает данные

Восстановление перезаписывает содержимое базы. Скрипт требует явного подтверждения и перед началом сам снимает страховочный дамп текущего состояния, но относитесь к операции как к необратимой и будьте уверены в том, какой дамп восстанавливаете.

На время восстановления контейнеры приложения останавливаются, а сам скрипт подстраивается под то, как развёрнута база — встроенная она или внешняя. На хосте должно быть свободно примерно столько места, сколько весит дамп.

Инстансы на общей базе данных

Если ваш инстанс работает на общей или управляемой базе, которую её владелец уже резервирует централизованно, снятие собственных дампов можно выключить параметром BACKUP_ENABLED=0. Интерфейс тогда честно показывает баннер, что резервное копирование отключено, — это намеренно отличается от состояния «служба недоступна».

В остальном всё работает одинаково: дампы охватывают базу этого инстанса и никогда не затрагивают соседние базы того же кластера.

Что дальше