Binary Replication Tools
From PostgreSQL wiki
Contents |
Disclaimer
This is a Work-In-Progress, started Dec 28, 2012.
Additions welcome, and Selena reserves the right to edit. :)
Purpose
Compare binary replication tools for PostgreSQL for features and ease of use. This document should classify and differentiate binary replication tools for easier selection and fit to purpose.
Comparison Matrix
| Tool | Documentation | License | Makes base backups | Makes base backups from replicas | Manages backups | Creates replicas | Monitors replication delay | Supports automated failover | Transport used | Source includes replication tests |
|---|---|---|---|---|---|---|---|---|---|---|
| pg_basebackup* | Postgres docs | PostgreSQL | Yes | Yes | No | Manual | No | No | PostgreSQL connection | |
| pgbarman | Documentation | GPLv3 | Yes | Yes | Yes | Manual | No | No | ssh | |
| OmniPITR | Intro | PostgreSQL | Yes | Yes | No | Manual | WAL archive delay | No | rsync / ssh | |
| pg-rman | Readme | BSD | Yes | Yes | Yes | Manual | No | No | local / NFS mount | |
| repmgr | Readme | GPLv3 | No | No | No | Yes | Yes | Yes | rsync / ssh | |
| Skytools | walmgr3 | BSD-ish | ||||||||
| WAL-E | Readme | BSD | Yes | No | Yes | Manual | No | No | HTTPS/SSL |
- pg_basebackup is included with a standard PostgreSQL installation.
Tool: name of the project that manages binary replication or WAL archiving
Documentation: Link to canonical documentation for the project. Several projects have broken links that show up as top results in Google.
License: License software is released under. So far, we only have open/free software projects listed. We could add commercial projects.
Makes base backups: Yes if the project supports creating binary archives, including the necessary WAL to restore a backed-up instance.
Makes base backups from replicas: Yes if the project supports creating binary archives and WAL using the PGDATA directory from a replica rather than the master database.
Manages backups: Yes if the project adds, removes and lists binary archives.
Creates replicas: Yes if the project automatically adds a recovery.conf (sets up replication) as part of restoring a base backup.
Monitors replication delay: Yes if the project supports monitoring of replication delay (WAL shipping or streaming replication).
Supports automated failover: Yes if the project has an option for detecting master failure and promoting a replica to master.
Transport used: Supported methods for file transfer for making backups or replicas
Barman
pgbarman Demo setup for pgbarman
Summary of features:
- Creates base backups
- Uses SSH as transport for backup
- Configuration stored in file or command-line
- Restore is automatable for creating replicas, although not explictly supported
- GPLv3
Install notes:
- Had a dependency problem with 9.1 on Ubuntu Precise, so installed from source
- Missing dep for argcomplete, noted in README in demo repo
- written in Python
OmniPITR
OmniPITR Demo of a simple replication setup with OmniPITR
Summary of Features:
- Creating PITR backups from Master or Slave
- Restoring a PITR backup for DR
- Creating replicas (by untarring backups)
- Monitoring of replicas
- Supports 'pause removal' of WAL during a backup (nice!)
- PostgreSQL license
Install notes:
- No packaging, perl
- No documented support for streaming replication
- Uses '^' instead of '%' in custom logfile naming
- No configuration file option (instead of using long command-line options)
- Supported on all Linux, Solaris variants
pg-rman
pg-rman Simple demo for pg_rman setup
Summary of features:
- Online backup and recovery, including backup from a replica
- Archive management and restore
- .ini configuration file
- Simple command-line options
Install notes:
- Written in C, install with 'make USE_PGXS=1'
- On Ubuntu/Debian, installs in non-default bin directory
- Commands are simple, manages WAL archive as well as backups
repmgr
repmgr Demo of a simple setup with repmgr
Supported features:
- Setting up new replicas/hot_standby with streaming replication (makes recovery.conf itself)
- Making base backups
- Failover (automated, or not, including redirecting replicas to connect to a new master after failover)
- Lag monitoring (repmgrd)
- A "witness" DB server for monitoring (typically on a replica)
- License: GPLv3
Install notes:
- Written in C
- Installs like a typical UNIX utility out of postgresql/contrib source tree (make USE_PGXS=1; make USE_PGXS=1 install)
- Developed on Debian systems, so support for package is present. Did not find an Ubuntu package for repmgr, however.
- Detailed docs are in the README for installing on many Linux platforms
- Doesn't appear to be supported on Mac OS X