Version 3.12.0

3.3.4. PostgreSQL physical backups

A PostgreSQL physical backup is a regular file archive. Backups are created in Binary format.

Requirements:

  • To make backups of your databases, you have to ensure that you have installed pg_basebackup utility to an equal or newer version than the target server.
  • There should be enough space in the directory where the temporary backup is created.
  • The connection to the database must be made with a user ID that has REPLICATION permissions and pg_hba.conf must permit the replication connection

Here is an example of configs for creating a backup of all databases on the PostgreSQL server running on localhost.

This job config defines rules to make database backups on the PostgreSQL server running on localhost:

job_name: postgresql_basebackup
type: postgresql_basebackup
tmp_dir: /var/backup/dump_tmp
safety_backup: false
deferred_copying: false
sources:
  - name: psql_basebackup
  	connect:
    	db_host: localhost
    	db_port: "5432"
    	psql_ssl_mode: require
    	db_user: repmgr@postgres
    	db_password: repmgrP@5s
  	gzip: true
storages_options:
  - storage_name: local
  	backup_path: /var/backup/dump
  	retention:
    	days: 7
    	weeks: 5
    	months: 5

If you need to configure additional storage or have questions about options, please visit the Job storage options page for more details.

Tips

User without a database

If used user that does not have a corresponding database, e.g. "backup" or "repmgr", you can specify the database to which the user has access by specifying the name of the database after the username with the @ symbol, e.g. "backup@postgres".

Excludes

For this type of backup, there is no option to exclude any databases or tables from the dump.

Reference of postgresql_basebackup type

# Job unique name
job_name: string # Required

# Type of the backup job. `postgresql_basebackup`
type: string # Required 

# Path to the directory used to temporarily store the backup during the creation process
tmp_dir: string # Required

# The option defines the order of rotation (deletion of old) backups, before creating a new copy or afterwards
safety_backup: bool # Default: false

# The option allows you to postpone copying until all backup parts of the job are complete before its delivery
deferred_copying: bool # Default: false

# The option enables compression of the backup archive
gzip: bool # Default: false
 
# Contains resource constraints for a specific job that override all others.
limits: map
  # Limit the write speed to the local disc per second in `bytes`, `kb`, `mb`, etc. Example: "20mb".
  # If "0" is used, there is no limitation.
  disk_rate: string
  # Limit the net speed to remote storages per second in `bytes`, `kb`, `mb`, etc. Example: "12mb".
  # If "0" is used, there is no limitation.
  net_rate: string

# Contains a list of individual subtasks for creating backups
sources: list 
    # Unique subtask name, used to separate storage paths
  - name: string # Required
    # Defines a set of parameters for connecting to the database. You may use either db_host,db_port or socket options. Options priority follows: db_host → socket
    connect: map 
      # DB host address
      db_host: string # Optional
      # DB port
      db_port: string # Optional
      # DB user
      db_user: string # Optional
      # DB password
      db_password: string # Optional
      # Path to DB socket
      socket: string # Optional
      # PostgreSQL SSL mode option
      psql_ssl_mode: string # Default: require
      # Path to file containing SSL certificate authority (CA) certificate(s) for PostgreSQL
      psql_ssl_root_cert: string # Optional
      # Path to file containing SSL server certificate revocation list (CRL) for PostgreSQL
      psql_ssl_crl: string # Optional
    # The option enables compression of the backup archive, overwrites job level
    gzip: bool # Default: false
    # Special parameters for collecting database backups.
    db_extra_keys: string # Optional

# List of storages to which backups should be delivered and their rotation rules
storages_options: list 
    # The name of the storage added to the main config. The name `local` is used to store a copy on host.
  - storage_name: string # Reuired
    # Path to directory where backups will be stored
    backup_path: string # Reuired
    # Enables backup rotation according to retention parameters.
    enable_rotate: bool # Default: true
    # Set of rules to store and rotate the backups.
    retention: map 
      # Use backup retention count instead of retention period.
      count_instead_of_period: bool # Default: false
      # Count of days/daily copies to store backups. Multiple copies can be created in one day.
      days: numeric # Default: 7
      # Count of weeks/weekly copies to store backups created on sunday.
      weeks: numeric # Default: 5
      # Count of months/montly copies to store backups created on the first day of month.
      months: numeric # Default: 12