Tarantool storage architecture is append-only: files are only appended to, and are never overwritten. Old files are removed by garbage collection after a checkpoint. You can configure the amount of past checkpoints preserved by garbage collection by configuring Tarantool snapshot daemon. Backups can be taken at any time, with minimal overhead on database performance.
Hot backup (memtx)¶
This is a special case when there are only in-memory tables.
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.
tarto make a (possibly compressed) copy of the latest .snap and .xlog files on the snap_dir and wal_dir directories.
- If there is a security policy, encrypt the .tar file.
- Copy the .tar file to a safe place.
Later, restoring the database is a matter of taking the .tar file and putting its contents back in the snap_dir and wal_dir directories.
Hot backup (general idea)¶
To take a backup, in general terms:
box.backup.begin()on the administrative console. This will suspend garbage collection till the next
box.backup.end()and will return a list of files to backup.
- Copy the files from the list to a safe location. This will include memtx snapshot files, at a state consistent with the last checkpoint.
- Resume garbage collection with
Continuous remote backup (memtx)¶
The replication feature is useful for backup as well as for load balancing.
Therefore taking a backup is a matter of ensuring that any given replica is
up to date, and doing a cold backup on it. Since all the other replicas continue
to operate, this is not a cold backup from the end user’s point of view. This
could be done on a regular basis, with a
cron job or with a Tarantool fiber.
Continuous backup (memtx)¶
The logged changes done since the last cold backup must be secured, while the system is running.
For this purpose, you need a file copy utility that will do the copying remotely and continuously, copying only the parts of a write ahead log file that are changing. One such utility is rsync.
Alternatively, you need an ordinary file copy utility, but there should be frequent production of new snapshot files or new WAL files as changes occur, so that only the new files need to be copied.