systemd unit files for PostgreSQL on Debian/Ubuntu
--------------------------------------------------

Each cluster is run as a separate service, called postgresql@version-cluster.
pg_ctlcluster is invoked with --skip-systemctl-redirect. Logging still goes to
/var/log/postgresql.

There is a parent service called postgresql.service, that starts/stops/restarts/
reloads all individual services that are configured as "auto" in
/etc/postgresql/*/*/start.conf.

The link between start.conf and postgresql.service is established by
postgresql-generator, which creates symlinks in
/run/systemd/generator/postgresql.service.wants/.

Backup
------

Two backup mechanisms are being offered as systemd services: basebackups
capable of point in time recovery (PITR, the preferred method), and SQL-level
dumps.

pg_basebackup@version-cluster.service
pg_basebackup@version-cluster.timer

  Weekly basebackup in /var/backups/postgresql/version/cluster.
  By default, 3 copies are being kept.

  To enable, run
  systemctl enable --now pg_basebackup@version-cluster.timer
  systemctl start pg_basebackup@version-cluster.service

pg_receivewal@version-cluster.service

  WAL archival to be used with pg_basebackup@.service for PITR.

  To enable, run
  systemctl enable --now pg_basebackup@version-cluster.timer pg_receivewal@version-cluster.service
  systemctl start pg_basebackup@version-cluster.service

pg_dump@version-cluster.service
pg_dump@version-cluster.timer

  Weekly SQL dump in /var/backups/postgresql/version/cluster.
  By default, 3 copies are being kept.

  To enable, run
  systemctl enable --now pg_dump@version-cluster.timer
  systemctl start pg_dump@version-cluster.service

The mechanisms provided are meant to be used with low to medium size databases.
For larger databases, or databases with high write volume, we advise to use a
full-size backup solution such as pgbackrest or barman.

 -- Christoph Berg <myon@debian.org>  Mon, 08 Mar 2021 13:45:26 +0100
