Your SlideShare is downloading. ×
0
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Pitr Made Easy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Pitr Made Easy

4,060

Published on

A talk given at multiplier conferences on PITRTools. A PostgreSQL Warm Standby helper.

A talk given at multiplier conferences on PITRTools. A PostgreSQL Warm Standby helper.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,060
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
85
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PITR made easy Joshua Drake United States PostgreSQL Software in the Public Interest Command Prompt, Inc. Creative Commons Attribution-Share Alike 3.0 United States License
  • 2. What is PITR Log shipping/Warm Standby/Replication
  • 3. What can you do with it? Simple asynchronous fail over scenarios Low impact backups Simple archiving
  • 4. What can't you do with it? Read only slave
  • 5. Why is PITR hard? It was written by open source engineers.
  • 6. Uses the many tools to one solution rsync? nfs? walmgr? scp? Push or pull? Something else?
  • 7. What makes PITR easy? PITR tools BSD Licensed Written in Python (theoretically cross platform)
  • 8. What is PITRTools A simple wrapper around all the utilities you already have. ssh,rsync,pg_standby,postgresql Designed by a consultant (KISS)
  • 9. PITRTools Features? Warm standby Cold Storage Fail over (actionable) Arbitrary alerts (monitoring) Single protocol (security)
  • 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
  • 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
  • 14. The “other” archiver options r_archivedir: /var/lib/postgresql/archive l_archivedir: /var/lib/postgresql/archive rsync_version = 2 slaves: 192.168.1.201,192.168.1.202 notify_ok: /var/lib/postgresql/etc/archiver_ok.sh notify_warning: /var/lib/postgresql/etc/archiver_warning.sh notify_critical: /var/lib/postgresql/etc/archiver_critical.sh
  • 15. Configuring archiver with pitrtools 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
  • 16. 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)
  • 17. The process on the slave/standby On the standby/slave: ● Configure SSH key for postgres user to master ● Configure cmd_standby.ini
  • 18. The standby configuration [DEFAULT] pgversion: 8.2 numarchives: 10 ssh: /usr/bin/ssh rsync: /usr/bin/rsync pg_standby: /usr/lib/postgresql/8.3/bin/pg_standby pg_ctl: /usr/lib/postgresql/8.3/bin/pg_ctl r_psql: /usr/lib/postgresql/8.3/bin/psql port: 6000 master_public_ip: 192.168.3.254 master_local_ip: 127.0.0.1 user: postgres debug: off ssh_timeout: 30
  • 19. Configuring the standby cont... archivedir: /data2/pgsql/archive/ pgdata: /data1/pgsql/data/ postgresql_conf: /var/lib/postgresql/etc/postgresql.conf pg_hba_conf: /var/lib/postgresql/etc/pg_hba.conf notify_critical: /var/lib/postgresql/etc/standby_critical.sh notify_warning: /var/lib/postgresql/etc/standby_warning.sh notify_ok: /var/lib/postgresql/etc/standby_ok.sh action_failover: /var/lib/postgresql/pitr_tools/failover.sh
  • 20. 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
  • 21. Initializing the slave/standby 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 
  • 22. Is the archiver working? With debug: on 
  • 23. Is the standby is working?
  • 24. How do I? Use PITRTools to simplify backups?  Take the archiver offline?  Configure send_nsca (nagios) for alerts  Get PITRTools  Donate to PostgreSQL? 
  • 25. 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)
  • 26. 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.
  • 27. Configure send_nsca Example ok.sh for send_nsca  #!/bin/sh echo quot;shoggoth;CMD_ARCHIVER;0;Archived to Yuggquot;| /usr/sbin/send_nsca -to 10 -H monitor -d ';' -c /etc/ nagios/send_nsca.cfg
  • 28. Get PITRTools svn co https://projects.commandprompt.com/public /pitrtools/repo
  • 29. Donate to PostgreSQL For United States PostgreSQL:   https://www.postgresql.us/donate For PostgreSQL Generally:   http://www.postgresql.org/about/donate
  • 30. Questions Hit me

×