Public | Automated Build

Last pushed: a day ago
Short Description
Backup PostgresSQL to local filesystem with periodic backups and rotate backups.
Full Description

postgres-backup-local

Backup PostgresSQL to local filesystem with periodic backups and rotate backups.
Based on schickling/postgres-backup-s3.

Usage

Docker:

$ docker run -e POSTGRES_HOST=postgres -e POSTGRES_DB=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password  prodrigestivill/postgres-backup-local

Docker Compose:

version: '2'
services:
    postgres:
        image: postgres
        restart: always
        environment:
            - POSTGRES_DB=database
            - POSTGRES_USER=username
            - POSTGRES_PASSWORD=password
    pgbackups:
        image: prodrigestivill/postgres-backup-local
        restart: always
        volumes:
            - /var/opt/pgbackups:/backups
        links:
            - postgres
        depends_on:
            - postgres
        environment:
            - POSTGRES_HOST=postgres
            - POSTGRES_DB=database
            - POSTGRES_USER=username
            - POSTGRES_PASSWORD=password
            - POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs
            - SCHEDULE=@daily
            - BACKUP_KEEP_DAYS=7
            - BACKUP_KEEP_WEEKS=4
            - BACKUP_KEEP_MONTHS=6

Manual Backups

By default it makes daily backups but you can start a manual one by running the command /backup.sh.

Example running only manual backup on Docker:

$ docker run -e POSTGRES_HOST=postgres -e POSTGRES_DB=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password  prodrigestivill/postgres-backup-local /backup.sh

Automatic Periodic Backups

You can change the SCHEDULE environment variable like -e SCHEDULE="@daily" to change its default frequency, by default is daily.

More information about the scheduling can be found here.

Folders daily, weekly and monthly are created and populated using hard links to save disk space.

Docker Pull Command
Owner
prodrigestivill

Comments (2)
boulmers
3 months ago

@randymeyer

  • extract/gunzip sql.gz backup to .sql file

    $ gunzip archive.sql.gz

  • execute extracted sql file with postgres interpreter inside running
    postgres container to hold the restored database with something like:

    $ cat archive.sql | docker exec -i pg_container psql -U postgres

if you are pgAdmin user you can use a modified image based on this to produce custom format backups ( flexible/compressed/pgAdmin restore ready)

randymeyer
3 months ago

How do I restore these backups?