pg_rman is an online backup and restore tool for PostgreSQL.
The goal of the pg_rman project is to provide a method for online backup and PITR that is as easy as pg_dump. Also, it maintains a backup catalog per database cluster. Users can maintain old backups including archive logs with one command.
There are several branches within pg_rman repository in order to work with different PostgreSQL server versions without introducing server version check code blocks. Please choose a branch to match the PostgreSQL version you will be building pg_rman against.
- master : branch for PostgreSQL 14beta
- REL_13_STABLE : branch for PostgreSQL 13
- REL_12_STABLE : branch for PostgreSQL 12
- REL_11_STABLE : branch for PostgreSQL 11
- REL_10_STABLE : branch for PostgreSQL 10
- REL9_6_STABLE : branch for PostgreSQL 9.6
To take an online backup, use the backup
command:
$ pg_rman backup --backup-mode=full --with-serverlog
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
To list all the backups taken so far, use the show
command:
$ pg_rman show
=====================================================================
StartTime EndTime Mode Size TLI Status
=====================================================================
2015-03-27 14:59:47 2015-03-27 14:59:49 FULL 3404kB 3 OK
2015-03-27 14:59:19 2015-03-27 14:59:20 ARCH 26kB 3 OK
2015-03-27 14:59:00 2015-03-27 14:59:01 ARCH 26kB 3 OK
2015-03-27 14:58:46 2015-03-27 14:58:48 FULL 3516kB 3 OK
2015-03-27 11:43:31 2015-03-27 11:43:32 INCR 54kB 1 OK
2015-03-27 11:43:19 2015-03-27 11:43:20 INCR 69kB 1 OK
2015-03-27 11:43:04 2015-03-27 11:43:05 INCR 151kB 1 OK
2015-03-27 11:42:56 2015-03-27 11:42:56 INCR 96kB 1 OK
2015-03-27 11:34:55 2015-03-27 11:34:58 FULL 5312kB 1 OK
To restore from a backup, use the restore
command. Up to PostgreSQL11, note that pg_rman itself generates the recovery.conf
file required to perform PostgreSQL PITR.
$ pg_ctl stop -m immediate
$ pg_rman restore
$ cat $PGDATA/recovery.conf
# recovery.conf generated by pg_rman 1.3.12
restore_command = 'cp /home/postgres/arclog/%f %p'
recovery_target_timeline = '1'
$ pg_ctl start
After to PostgreSQL12, note that pg_rman itself added PostgreSQL PITR related options to postgresql.conf
file and generates the recovery.signal
file in sub directory of PGBASE
To see more options to use with each command, run pg_rman --help
.
Also, see the documentation for detailed usage:
http://ossc-db.github.io/pg_rman/index.html
Go to the top directory of pg_rman source tree and run the following commands:
$ make
# make install
The following packages need to be installed as a prerequisite.
- zlib-devel
Start PostgreSQL server and run the below command.
$ make installcheck