forked from Deuxfleurs/infrastructure
52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
|
## 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
|