This repository has been archived on 2023-03-15. You can view files and clone it, but cannot push or open issues or pull requests.
infrastructure/op_guide/stolon/manual_backup.md
2022-01-27 18:26:02 +01:00

1.4 KiB

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:

ssh -L 5432:psql-proxy.service.2.cluster.deuxfleurs.fr:5432 ...

Then export your password in PGPASSWORD and launch the backup:

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