Joshua D. Drake
Are you tired of not having a real solution for PITR? Enter PITRTools, a single and secure solution for using Point In Time Recovery for PostgreSQL.
10. How does it work?
success
Master Slave
else
Queue
11. The process on the archiver/master
On the archiver/Master:
● Configure ssh key for postgres user to
standby/slave
● Configure archiver.ini
● cmd_archiver -C /path/to/archiver.ini -I
● Edit the postgresql.conf change:
● archive_mode to on
● archive_command to:
● cmd_archiver -C /path/to/archiver.ini -F %p
● restart postgresql
● apply cmd_standby.sql to database of pitr user
(usually postgres)
● psql -U postgres < /path/to/cmd_standby/sql
12. The archiver
The archiver calls cmd_archive.py which calls rsync to “push” the
file to the slave or queue.
Usage: cmd_archiver [options] arg1 arg2
Options:
-h, --help show this help message and exit
-F FILE, --file=FILE Archive file
-C FILE, --config=FILE
the name of the archiver config file
-f, --flush Flush all remaining archives to slave
-I, --init Initialize master environment
13. The archiver config file
Useful but obvious parameters
[DEFAULT]
state: online
pgdata: /var/lib/postgresql/8.3/main
rsync_bin: /usr/bin/rsync
rsync_version = 2 # Because RH ships old software
user: postgres
timeout: 10
debug: on
ssh_debug: off
15. cmd_standby.py
Works in conjunction with pg_standby
Supports failover
Supports recovery to a point in time
Included with 8.3, available for 8.1 and 8.2 (8.1
is flaky)
16. The process on the slave
On the standby/slave:
● Configure SSH key for postgres user to master
● Configure cmd_standby.ini
● Initialize environment
● cmd_standby -C /path/to/cmd_standby.ini -I
● Start base backup
● cmd_standby -C /path/to/cmd_standby.ini -B
● Start standby
● cmd_standby -C /path/to/cmd_standby.ini -S
19. Start the standby
Usage: cmd_standby [options] arg1 arg2
Options:
-h, --help show this help message and exit
-A start|stop, --action=start|stop|stop_basebackup
Start or Stop PostgreSQL
-B, --basebackup Start/Stop a base backup
-C FILE, --config=FILE
Name of the archiver config file
-F VALUE, --failover=VALUE
If you are serious, set -F999
-I, --dbinit Use before -B
-P, --ping Is my master alive?
-R TIMESTAMP, --recovertotime=TIMESTAMP
To restore to a specific point in time
-S, --standby Enter standby mode
22. How do I?
Use PITRTools to simplify backups?
Take the archiver offline?
Configure send_nsca (nagios) for alerts
Donate to PostgreSQL?
23. Simplify backups
On the standby/slave:
cmd_standby -C
/var/lib/postgresql/etc/cmd_standby.ini -Astop
tar -czvf /backups/database.`date +%a`.tar.gz
/var/lib/pgsql/data
cmd_standby -C
/var/lib/postgresql/etc/cmd_standby.ini -S
You could also use rsync with a network volume to make
the backup more efficient (after stopping the standby)
24. Take the archiver offline
Edit /var/lib/postgresql/etc/cmd_archiver.ini
[DEFAULT]
; online or offline
state: offline
When you are ready to bring it back online, just change to
online. No restarts on archiver or standby required.
25. Configure send_nsca
Example ok.sh for send_nsca
#!/bin/sh
echo "shoggoth;CMD_ARCHIVER;0;Archived to Yugg"|
/usr/sbin/send_nsca -to 10 -H monitor -d ';' -c /etc/
nagios/send_nsca.cfg
26. Donate to PostgreSQL
For United States PostgreSQL:
https://www.postgresql.us/donate
For PostgreSQL Generally:
http://www.postgresql.org/about/donate