19
© 2015 EnterpriseDB Corporation. All rights reserved. 1 How to get your data back in Postgres – Point-in-Time Recovery (PITR) explained For more information on Postgres PITR please email [email protected] or visit www.enterprisedb.com

Postgres Point-in-Time Recovery

Embed Size (px)

Citation preview

Page 1: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 1

How to get your data back in Postgres – Point-in-Time Recovery (PITR) explained For more information on Postgres PITR please email [email protected] or visit www.enterprisedb.com

Page 2: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 2

Agenda

•  Introduction •  Business Impact vs Cost •  Downtime Scenarios

•  Backup Methods •  Point-In-Time Recovery •  Summary

Page 3: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 3

•  Disaster recovery strategies are key to the reliable operation of any business-critical environment.

•  Backup and recovery plans must consider various failure scenarios and compliance requirements, including device failure, operator error, and data corruption.

Introduction

Page 4: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 4

Business Impact vs Cost

•  How long will recovery take? •  How long do we need to store backup data? •  How much will data storage cost?

•  Will an outage effect our brand? •  Can any part of the database remain operational whilst

I recover elsewhere?

•  Do I know when the problem I am recovering from started?

Page 5: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 5

Downtime Scenarios

Page 6: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 6

•  As with any database, a Postgres database should be backed up regularly. •  There are three fundamentally different approaches to backing up

Postgres data: −  SQL dump −  File system level backup −  Continuous archiving

Backup Methods

Page 7: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 7

•  Generate a text file with SQL commands •  Postgres provides the utility program pg_dump for this purpose. •  pg_dump does not block readers nor writers.

•  Dumps created by pg_dump are internally consistent, that is, the dump represents a snapshot of the database as of the time pg_dump begins running.

•  Syntax: pg_dump [options] [dbname]

Backup – SQL Dump

Page 8: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 8

Backup – Entire Cluster – SQL Dump

•  pg_dumpall is used to dump an entire database cluster in plain-text SQL format

•  pg_dumpall dumps global objects: users, groups, and associated permissions

•  Use PSQL to restore

•  Syntax: pg_dumpall [options] > filename.backup

Page 9: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 9

•  Copy Postgres files from the file system. •  You can use whatever method you prefer for doing usual file system

backups, for example: tar -cvf backup.tar /usr/local/pgsql/data

•  The database server must be shut down in order to get a usable backup. •  File system backups only work for complete backups and recovery of an

entire database cluster.

Backup – Cold Backup

Page 10: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 10

•  Database can stay operational during backup. •  Postgres maintains WAL logs for all transactions in the pg_xlog directory. •  When full, Postgres automatically switches WAL logs.

•  Continuous archiving can be setup to keep a copy of switched WAL logs which can later be used for recovery.

•  Enables online file system backup of a database cluster.

•  Requirements: wal_level = archive archive_mode = on archive_command = …

Backup – Hot Backup

Page 11: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 11

1.  Connect using psql and issue SELECT pg_start_backup(‘any useful label’);

2.  Use a standard file system backup utility to back up the data directory.

3.  Connect using psql and issue SELECT pg_stop_backup();4.  Ensure to continuously archive WAL logs.

Online Base Backup

Page 12: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 12

•  pg_basebackup takes a base backup of a Postgres cluster. •  Backup can be used to setup a standby with streaming replication and a

Point-In-Time Recovery (PITR).

•  pg_basebackup takes a binary copy of the database cluster files. •  pg_basebackup puts the database in and out of backup mode.

Online Base Backup using pg_basebackup

Page 13: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 13

•  Point-in-time recovery (PITR) is the ability to restore a database cluster up to the present or to a specified point of time in the past.

•  Uses a full database cluster backup and applies the WAL logs.

•  Must be configured before it is needed. WAL log archiving must be enabled.

•  Must have information of when you want to recover to.

Point-in-Time Recovery

Page 14: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 14

Point-in-Time Recovery Demo

Page 15: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 15

•  pause_at_recovery_target = true•  hot_standby = on (if using pause_at_recovery_target) •  SELECT pg_is_xlog_replay_paused();•  SELECT pg_xlog_replay_resume();•  SELECT pg_catalog.pg_current_xlog_location();•  SELECT pg_xlogfile_name(’output from above command');•  SELECT pg_create_restore_point('webinar_restore');

Point-In-Time Recovery Help

Page 16: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 16

Summary

•  Introduction •  Business Impact vs Cost •  Backup and Recovery Methods

−  SQL Dump −  Cold Backup (offline Backup) −  Hot Backup (online Backup) −  Continuous Archiving

•  Point-In Time Recovery •  Demo

Page 17: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 17

•  EDB Postgres Advanced Server 9.5 Downloadhttp://www.enterprisedb.com/downloads/postgres-postgresql-downloads

•  Continuous Archiving and Point-in-Time Recovery (PITR) http://www.postgresql.org/docs/current/static/continuous-archiving.html

•  pg_dump http://www.postgresql.org/docs/9.5/static/app-pgdump.html

•  pg_dumpall http://www.postgresql.org/docs/current/static/app-pg-dumpall.html

•  pg_basebackup http://www.postgresql.org/docs/current/static/app-pgbasebackup.html

Contact [email protected] for more information on Postgres PITR

Resources

Page 18: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 18

•  Take advantage of the most convenient training that best fits your learning style and get Postgres certified! −  EDB offers Classroom & on-site training globally −  Live virtual training courses can be taken from any location and maintains live communication

with the instructor to guide you and answer questions quickly.

•  EDB’s eSubscriptions −  This annual subscription provides access to the entire EDB library of on-demand training

courses for convenient access and training any time.

•  Postgres Training Credits (PTC) −  Training credits provide the flexibility to pre-purchase blocks of training credits that can be spent

on any combination of our training delivery methods. It is a convenient way to receive training with a built-in price discount.

•  Earn an Associate-level or Professional-level Postgres Certification

To learn more about EDB’s training schedule, Certification, eSubscriptions and Training Credits email [email protected]

Sharpen your skills with Training and Certification

Page 19: Postgres Point-in-Time Recovery

© 2015 EnterpriseDB Corporation. All rights reserved. 19