Reputation: 81
I'm a new to PostgreSQL and I'm looking to backup the database. I understand that there are 3 methods pg_dump
, snapshot and copy and using WAL. Which one do you suggest for full backup of the database? If possible, provide code snippets.
Upvotes: 0
Views: 2253
Reputation: 324931
It depends a lot more on your operational requirements than anything else.
All three will require shelling out to an external program. libpq
doesn't provide those facilities directly; you'll need to invoke the pg_basebackup
or pg_dump
via execv
or similar.
All three have different advantages.
Atomic snapshot based backups are useful if the filesystem supports them, but become useless if you're using tablespaces since you then need a multivolume atomic snapshot - something most systems don't support. They can also be a pain to set up.
pg_dump
is simple and produces compact backups, but requires more server resources to run and doesn't support any kind of point-in-time recovery or incremental backup.
pg_basebackup
+ WAL archiving and PITR is very useful, and has a fairly low resource cost on the server, but is more complex to set up and manage. Proper backup testing is imperative.
I would strongly recommend allowing the user to control the backup method(s) used. Start with pg_dump
since you can just invoke it as a simple command line and manage a single file. Use the -Fc
mode and pg_restore
to restore it where needed. Then explore things like configuring the server for WAL archiving and PITR once you've got the basics going.
Upvotes: 6