PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma Hans-Jürgen...

27
PostgreSQL: Backups Hans-Jürgen Schönig, Ants Aasma www.cybertec.at Hans-Jürgen Schönig, Ants Aasma www.cybertec.at

Transcript of PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma Hans-Jürgen...

Page 1: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

PostgreSQL: Backups

Hans-Jürgen Schönig, Ants Aasma

www.cybertec.at

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 2: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Logical backups

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 3: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_dump

I Dumps out the contents of the database in textual formatI Cross version backups and restores.I Backups can be fixed up in case data corruption, etc.I SlowI Needs ACCESS SHARE lock on all tables.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 4: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_dump backup formats

I -F plain (default), custom, directory, tarI Use custom or directory formatI Parallel dumps (--jobs) need directory format.I Most options relevant to plain dump, specify them with

pg_restore

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 5: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_dumpall

I Only in SQL formatI Use -g or --globals-only together with pg_dump

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 6: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_restore

I Converts custom dumps to SQL and inputs them toPostgreSQL

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 7: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Physical backup

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 8: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Cold backup

I Just copy the files

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 9: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Hot backup

I SELECT pg_start_backup('foobar', true)I Copy files.I SELECT pg_stop_backup()I Copy transaction logs.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 10: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

How hot backup works

I Backup checkpointI backup_labelI WAL start and end

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 11: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_basebackup

I Does the same thing as a hot backupI Database contents streamed out over a connection.I Needs a replication connection to be set up.I Don’t forget the WAL.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 12: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Snapshot based backup

I SimplestI Consistent snapshot accross all tablespaces AND transaction

log is required.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 13: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

WAL archiving

I Needed for PITRI Helpful for backups and replicationI Figure out your retention policy.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 14: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Backup from a slave

I Simple answer: use pg_basebackupI Complex answer. . .

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 15: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Schrödingers backup

I A backups state is a superposition of ok and not ok, until youtry to restore it.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 16: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Point-In-Time-Recovery

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 17: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

What it does

I PITR can be used to reach (almost) any point after a basebackup.

I Replication and PITR can be combined.

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 18: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Configuring for PITR

I S: create an archive (ideally this is not on the master)I M: Change postgresql.conf

I set wal_levelI set max_wal_senders (if pg_basebackup is desired)I set archive_mode to onI set a proper archive_command to archive xlog

I M: adapt pg_hba.conf (if pg_basebackup is desired)I M: restart the master

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 19: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pg_basebackup, etc.

I Perform a pg_basebackup as performed beforeI –xlog-method=stream and -R are not needed

I In the archive a .backup file will be available afterpg_basebackup

I You can delete all xlog files older than the oldest base backupyou want to keep.

I The .backup file will guide you

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 20: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Restoring from a crash

I Take a base backup.I Write a recovery.conf file:

I restore_command: Tell PostgreSQL where to find xlogI recovery_target_time (optional): Use a timestamp to tell the

system how far to recover

I Start the serverI Make sure the system has reached consistent state

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 21: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

More config options

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 22: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

recovery_min_apply_delay: Delayed replay

I This settings allows you to tell the slave that a certain delay isdesired.

I Example: A stock broker might want to provide you with 15minute old data

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 23: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

pause_at_recovery_target

I Make sure that the recovery does not stop at a specified pointin time.

I Make PostgreSQL wait when a certain point is reached.I This is essential in case you do not know precisely how far to

recover

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 24: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

recovery_target_name

I Sometimes you want to recover to a certain point in time,which has been specified before.

I To specify a point in time run . . .

SELECT pg_create_restore_point('some_name');

I Use this name in recovery.conf to recover to this very specificpoint

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 25: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

How to develop your own solution

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 26: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Existing tools for backups

I Barman automates everything discussedI OmniPITR for archivingI WAL-E or pghoard to store backups/archive in S3/SwiftI pg-rman

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at

Page 27: PostgreSQL:Backups€¦ · PostgreSQL:Backups Hans-JürgenSchönig,AntsAasma  Hans-Jürgen Schönig, Ants Aasma

Clustering tools

I Linux-HA/pacemaker/corosyncI patroniI repmgr

Hans-Jürgen Schönig, Ants Aasmawww.cybertec.at