1.4 KiB
Backups
rqlite supports hot-backing up a node. You can retrieve and write a consistent snapshot of the underlying SQLite database to a file like so:
curl localhost:4001/db/backup -o bak.sqlite3
The node can then be restored by loading this database file via sqlite3
and executing .dump
. You can then use the output of this dump to replay the entire database back into brand new node (or cluster), with the exception of BEGIN TRANSACTION
and COMMIT
commands. You should ignore those commands in the .dump
output, and not play them into the new cluster.
By default a backup can only be retrieved from the leader, though this check can be disabled by adding noleader
to the URL as a query param.
Example
An example backup and dump session is shown below.
~ $ curl localhost:4001/db/backup -o bak.sqlite3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2048 100 2048 0 0 35932 0 --:--:-- --:--:-- --:--:-- 36571
~ $ sqlite3 bak.sqlite3 .dump >dump.sql
~ $ cat dump.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE foo (id integer not null primary key, name text);
INSERT INTO "foo" VALUES(1,'fiona');
COMMIT;
~ $
To restore an rqlite system from the dump, issue each command between BEGIN TRANSACTION
and COMMIT
to rqlite, using the HTTP API.