aboutsummaryrefslogtreecommitdiff
path: root/op_guide/stolon/manual_backup.md
diff options
context:
space:
mode:
Diffstat (limited to 'op_guide/stolon/manual_backup.md')
-rw-r--r--op_guide/stolon/manual_backup.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/op_guide/stolon/manual_backup.md b/op_guide/stolon/manual_backup.md
new file mode 100644
index 0000000..b952174
--- /dev/null
+++ b/op_guide/stolon/manual_backup.md
@@ -0,0 +1,51 @@
+## Disclaimer
+
+Do **NOT** use the following backup methods on the Stolon Cluster:
+ 1. copying the data directory
+ 2. `pg_dump`
+ 3. `pg_dumpall`
+
+The first one will lead to corrupted/inconsistent files.
+The second and third ones put too much pressure on the cluster.
+Basically, you will destroy it, in the following ways:
+ - Load will increase, requests will timeout
+ - RAM will increase, the daemon will be OOM (Out Of Memory) killed by Linux
+ - Potentially, the WAL log will grow a lot
+
+
+## A binary backup with `pg_basebackup`
+
+The only acceptable solution is `pg_basebackup` with **some throttling configured**.
+Later, if you want a SQL dump, you can inject this binary backup on an ephemeral database you spawned solely for this purpose on a non-production machine.
+
+First, start by fetching from Consul the identifiers of the replication account.
+Do not use the root account setup in Stolon, it will not work.
+
+First setup a SSH tunnel on your machine that bind postgresql, eg:
+
+```bash
+ssh -L 5432:psql-proxy.service.2.cluster.deuxfleurs.fr:5432 ...
+```
+
+Then export your password in `PGPASSWORD` and launch the backup:
+
+```bash
+export PGPASSWORD=xxx
+
+pg_basebackup \
+ --host=127.0.0.1 \
+ --username=replicator \
+ --pgdata=/tmp/sql \
+ --format=tar \
+ --wal-method=none \
+ --gzip \
+ --compress=6 \
+ --progress \
+ --max-rate=2M
+```
+
+*Take a cup of coffe, it will take some times...*
+
+## Importing the backup
+
+## Dump SQL