Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

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

В Tarantool используется архитектура хранения с добавлением (append-only): данные дозаписываются в файлы, но никогда не перезаписываются. Сборщик мусора Tarantool удаляет старые файлы после контрольной точки. Работу сборщика мусора можно предотвратить или отсрочить настройками демона контрольных точек. Резервное копирование можно выполнять в любое время с минимальной нагрузкой на производительность базы данных.

Для резервного копирования в определенных ситуациях используются две функции:

  • box.backup.start() уведомляет сервер о необходимости приостановить удаление устаревших резервных копий, и возвращает таблицу с именами файлов-снимков и vinyl-файлов, которые следует скопировать.
  • box.backup.stop() уведомляет сервер о возможности возобновить нормальную работу.

Горячее резервное копирование (memtx)

Это описание относится к установкам, в которых используются только in-memory таблицы.

Последний файл-снимок является резервной копией всей базы данных; а WAL-файлы, созданные после него - инкрементными. Поэтому резервное копирование сводится к копированию последнего файла-снимка и следующих за ним WAL-файлов.

  1. Используйте tar для создания (возможно, сжатой) копии последних файлов .snap и .xlog в директориях snapshot.dir и wal.dir.

  2. Если включена политика безопасности, зашифруйте .tar-файл.

  3. Скопируйте .tar-файл в безопасное место.

Восстановление базы данных сводится к извлечению .tar-файла и перемещению его содержимого обратно в директории snapshot.dir и wal.dir.

Горячее резервное копирование (vinyl/memtx)

Vinyl хранит свои файлы в директории vinyl_dir и создает для каждого спейса отдельную поддиректорию. Процессы создания дампов и уплотнения являются append-only - они создают новые файлы, а старые не перезаписывают. Сборщик мусора Tarantool может удалять старые файлы после очередной контрольной точки.

Для создания смешанной (когда в базе используются и memtx, и vinyl) резервной копии:

  1. Выполните функцию box.backup.start() на административной консоли. Будет возвращен список файлов для резервного копирования, а сборщик мусора для них приостановлен до следующего вызова функции box.backup.stop().
  2. Скопируйте файлы из списка в безопасное место. В список войдут файлы-снимки memtx, а также run- и index-файлы vinyl в состоянии, соответствующем последней контрольной точке.
  3. Выполните функцию box.backup.stop(), чтобы сборщик мусора мог продолжить работу в обычном режиме.

Непрерывное удаленное резервное копирование (memtx)

Репликация данных помогает при резервном копировании и балансировке.

Поэтому резервное копирование сводится к тому, чтобы убедиться, что любая реплика актуальна, и выполнить на ней холодное резервное копирование. Поскольку все остальные реплики продолжают работать, с точки зрения конечного пользователя это не является холодным резервным копированием. Такое копирование можно выполнять регулярно с помощью планировщика cron или файбера Tarantool.

Непрерывное резервное копирование (memtx)

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

Для этого нужна утилита для копирования файлов (например, rsync), которая позволит удаленно копировать только изменившиеся части WAL-файла, а не весь файл целиком.

Если использовать обычную утилиту для копирования целых файлов, то потребуется создавать новые файлы-снимки или WAL-файлы при каждом изменении, чтобы копировать только новые файлы.