Backup and restore management tool for PostgreSQL
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Update copyright. Jan 9, 2018
expected Update version number to 1.3.7 Sep 26, 2018
pgsql_src Update copyright. Jan 9, 2018
pgut Clear search_path before connecting to Postgres Jul 5, 2018
script Update copyright. Jan 9, 2018
sql Added regression tests for vacuum shrinking pages.(#72) Sep 19, 2018
.gitignore Add .gitignore to avoid any unwelcome files in a commit. Jan 9, 2014
.travis.yml Update travis and Readme files about the new branch REL_11_STABLE (#101) Oct 10, 2018
COPYRIGHT Update copyright. Jan 9, 2018
Makefile Update copyright. Jan 9, 2018
README.md Update travis and Readme files about the new branch REL_11_STABLE (#101) Oct 10, 2018
backup.c Fix a bug in file copying logic of incremental backup (#76) Oct 10, 2018
catalog.c change strtoul to strtoull Sep 14, 2018
data.c Removed unnecessary 0-filled data.(#72) Sep 18, 2018
delete.c Update copyright. Jan 9, 2018
dir.c Update copyright. Jan 9, 2018
idxpagehdr.h Update copyright. Jan 9, 2018
init.c Update copyright. Jan 9, 2018
parray.c Update copyright. Jan 9, 2018
parray.h Update copyright. Jan 9, 2018
pg_rman.c Update version number to 1.3.7 Sep 26, 2018
pg_rman.h Modify comments on the previous commit.(#72) Sep 13, 2018
restore.c Fix build against PG 11. Jun 15, 2018
show.c Update copyright. Jan 9, 2018
util.c Update copyright. Jan 9, 2018
validate.c Update copyright. Jan 9, 2018
xlog.c Fix build against PG 11. Jun 15, 2018

README.md

pg_rman

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.

Branches

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 latest PostgreSQL development version Build Status
  • REL_11_STABLE : branch for PostgreSQL 11.0 Build Status
  • REL_10_STABLE : branch for PostgreSQL 10.0 Build Status
  • REL9_6_STABLE : branch for PostgreSQL 9.6 Build Status
  • REL9_5_STABLE : branch for PostgreSQL 9.5 Build Status
  • REL9_4_STABLE : branch for PostgreSQL 9.4 Build Status
  • REL9_3_STABLE : branch for PostgreSQL 9.3 Build Status
  • REL9_2_STABLE : branch for PostgreSQL 9.2 Build Status
  • pre-9.2 : branch for PostgreSQL 9.1 and before Build Status

How to use

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. 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.7
restore_command = 'cp /home/postgres/arclog/%f %p'
recovery_target_timeline = '1'
$ pg_ctl start

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

How to build and install from source code

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

How to run regression tests

Start PostgreSQL server and run the below command.

 $ make installcheck