Рейтинг@Mail.ru

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

Замечание

Документация находится в процессе перевода и может отставать от английской версии.

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

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

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

Это особый случай, когда все таблицы хранятся в памяти.

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

  1. С помощью tar создайте (сжатую) копию последнего .snap-файла и следующих за ним .xlog-файлов из директорий memtx_dir и wal_dir.
  2. Если того требуют правила безопасности, зашифруйте получившийся .tar-файл.
  3. Скопируйте .tar-файл в надежное место.

В дальнейшем базу данных можно восстановить, разархивировав содержимое .tar-файла в директории memtx_dir и wal_dir.

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

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

Для создания смешанной резервной копии:

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

Непрерывное удаленное резервирование

Репликация используется не только для резервирования, но и для выравнивания нагрузки.

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

Непрерывное резервирование

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

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

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