Версия:

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

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

Tarantool has an append-only storage architecture: it appends data to files but it never overwrites earlier data. The Tarantool garbage collector removes old files after a checkpoint. You can prevent or delay the garbage collector’s action by configuring the checkpoint daemon. Backups can be taken at any time, with minimal overhead on database performance.

backup.start() and backup.stop()

Two functions are helpful for backups in certain situations.

box.backup.start() informs the server that some activities that might interfer with backup should be suspended – suspend checkpointing, suspend Tarantool garbage collection, and effectively enter read-only mode.

Later box.backup.stop() informs the server that normal operations may resume. Starting with Tarantool 1.10.1 there is a new optional argument, box.backup.start(n), where n indicates the checkpoint to use relative to the latest checkpoint – for example n = 0 means «backup will be based on the latest checkpoint», n = 1 means «backup will be based on the first checkpoint before the latest checkpoint (counting backwards)», and so on, and the default value for n is zero.

box.backup.start() returns a table with the names of snapshot and vinyl files that should be copied. Example:

tarantool> box.backup.start()
---
- - ./00000000000000000015.snap
  - ./00000000000000000000.vylog
  - ./513/0/00000000000000000002.index
  - ./513/0/00000000000000000002.run
...

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

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

The last snapshot file is a backup of the entire database; and the WAL files that are made after the last snapshot are incremental backups. Therefore taking a backup is a matter of copying the snapshot and WAL files.

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

Later, restoring the database is a matter of taking the .tar file and putting its contents back in the memtx_dir and wal_dir directories.

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

Vinyl stores its files in vinyl_dir, and creates a folder for each database space. Dump and compaction processes are append-only and create new files. The Tarantool garbage collector may remove old files after each checkpoint.

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

  1. Issue box.backup.start() on the administrative console. This will suspend garbage collection till the next box.backup.stop() and will return a list of files to back up.
  2. Скопируйте файлы из списка в надежное место. Это касается файлов-снимков memtx, выполняемых vinyl-файлов и индексных файлов, соответствующих последней контрольной точке.
  3. Issue box.backup.stop() so the garbage collector can continue.

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

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

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

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

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

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

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