Sign inSign up

0xff/postgres-backup

By 0xff

•Updated about 7 years ago

Simple daily backup solution for PostgreSQL

Image
1

1M+

0xff/postgres-backup repository overview

⁠0xff/postgres-backup⁠

A (very) simple daily backup solution for PostgreSQL. Built around dcron⁠ and pg_dump⁠
in a very small package - thanks to Alpine⁠.

⁠Usage

with docker-compose

version: "2.2"
services:
  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_PASSWORD: "9p4O6ICIGf9hmdA1GJFwDN8"
  backup:
    image: 0xff/postgres-backup
    environment:
      PGPASSWORD: "9p4O6ICIGf9hmdA1GJFwDN8"
    volumes:
      - ./pg-backups:/pg-backups

And you will have a daly backup in ./pg-backups for 7 days.
After that, old backups will be overwritten.
This can be customized to some extent by environment variables.
See Dockerfile⁠ for defaults.
libpq environment variables⁠ will also be passed on.

⁠Advanced usage

By default backups are made for 7 days as SQL dumps, wich is nice for readability but might not be what you want.
In that case you may want to use a different format, for example tar for a jear.
You can do so by changing the PGDUMPOPTIONS environment variable like:

  backup:
    environment:
      PGDUMPOPTIONS: "-F t -f /pg-backups/backup-$$(date +%j).tar"

The example above is for a docker-compose.yml file where you have to use $$ in order to write a single dollar sign.
Also note %j in the date format⁠ expression which means day of year.
So you will have backup files for a year until the first one is overwritten.

For a full example of using the custom format please have a look at example.yml⁠.

⁠Restore

docker exec into the container and use pg_restore⁠ or psql⁠.

⁠pg_restore with tar or custom format.

Inspect backup:

docker-compose exec backup pg_restore -l /pg-backups/backup-1.tar

Restore backup - and thereby destroy existing data - into postgres database:

docker-compose exec backup pg_restore -d postgres --clean --if-exists /pg-backups/backup-1.tar
⁠psql for sql dumps

By default sql dumps are created with --clean --if-exists wich will ovrwrite existing data in this case.

docker-compose exec backup psql -f /pg-backups/backup-1.sql

⁠Why

I really tried hard to find a simple postgres-backup solution but I did not find any.
If someone finds something similar please drop me a line - i'd appreciate it.

Tag summary

Content type

Image

Digest

Size

5.3 MB

Last updated

about 7 years ago

docker pull 0xff/postgres-backup