1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
1.4 KiB
Markdown

# 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:
```bash
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.
```bash
~ $ 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.