UFS2 Snapshots and Postgres

Started by Eduardo Morrasalmost 14 years ago5 messagesgeneral
Jump to latest
#1Eduardo Morras
nec556@retena.com

Hi everyone,

I'm using FreeBSD 9 for Postgres and want to know if these actions
are safe for make a backup of the database:

a) call pg_start_backup('b1')
b) take an UFS2 snapshot of data files
c) call pg_stop_backup()
d) change to the snapshot dir and rsync/dd/dump/transfer it to backup
file server

Is it safe to call pg_start_backup('b1',true)?

Thanks in advance

#2Karl Denninger
karl@denninger.net
In reply to: Eduardo Morras (#1)
Re: UFS2 Snapshots and Postgres

On 6/25/2012 7:35 AM, Eduardo Morras wrote:

Hi everyone,

I'm using FreeBSD 9 for Postgres and want to know if these actions are
safe for make a backup of the database:

a) call pg_start_backup('b1')
b) take an UFS2 snapshot of data files
c) call pg_stop_backup()
d) change to the snapshot dir and rsync/dd/dump/transfer it to backup
file server

Is it safe to call pg_start_backup('b1',true)?

Thanks in advance

Snapshots are "safe" (but will result in a roll-forward on restart) IF
AND ONLY IF the log data and database table spaces are all on the same
snapshotted volume.

IF THEY ARE NOT then it will probably work 95% of the time, and the
other 5% it will be unrecoverable. Be very, very careful -- the
snapshot must in fact snapshot ALL of the involved database volumes (log
data included!) at the same instant.

--
Karl Denninger
karl@denninger.net
/The Market Ticker/

#3Magnus Hagander
magnus@hagander.net
In reply to: Karl Denninger (#2)
Re: UFS2 Snapshots and Postgres

On Mon, Jun 25, 2012 at 4:34 PM, Eduardo Morras <nec556@retena.com> wrote:

At 15:16 25/06/2012, you wrote:

On 6/25/2012 7:35 AM, Eduardo Morras wrote:

Hi everyone,

I'm using FreeBSD 9 for Postgres and want to know if these actions are
safe for make a backup of the database:

a) call pg_start_backup('b1')
b) take an UFS2 snapshot of data files
c) call pg_stop_backup()
d) change to the snapshot dir and rsync/dd/dump/transfer it to backup
file server

Is it safe to call pg_start_backup('b1',true)?

Thanks in advance

Snapshots are "safe" (but will result in a roll-forward on restart) IF AND
ONLY IF the log data and database table spaces are all on the same
snapshotted volume.

IF THEY ARE NOT then it will probably work 95% of the time, and the other
5% it will be unrecoverable.  Be very, very careful -- the snapshot must in
fact snapshot ALL of the involved database volumes (log data included!) at
the same instant.

Even if i do a pg_start_backup()? I thought it set db data/ files in a
consistent state and puts in wal files the new transactions and apply them
when call pg_stop_backup().

I must do it other way then :(

No, if you use pg_start_backup() and pg_stpo_backup() (and verify all
their return codes...), *and* you use log archiving using
archive_command, then snapshots are safe even if they are on different
filesystems.

--
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

#4Eduardo Morras
nec556@retena.com
In reply to: Karl Denninger (#2)
Re: UFS2 Snapshots and Postgres

At 15:16 25/06/2012, you wrote:

On 6/25/2012 7:35 AM, Eduardo Morras wrote:

Hi everyone,

I'm using FreeBSD 9 for Postgres and want to know if these actions
are safe for make a backup of the database:

a) call pg_start_backup('b1')
b) take an UFS2 snapshot of data files
c) call pg_stop_backup()
d) change to the snapshot dir and rsync/dd/dump/transfer it to
backup file server

Is it safe to call pg_start_backup('b1',true)?

Thanks in advance

Snapshots are "safe" (but will result in a roll-forward on restart)
IF AND ONLY IF the log data and database table spaces are all on the
same snapshotted volume.

IF THEY ARE NOT then it will probably work 95% of the time, and the
other 5% it will be unrecoverable. Be very, very careful -- the
snapshot must in fact snapshot ALL of the involved database volumes
(log data included!) at the same instant.

Even if i do a pg_start_backup()? I thought it set db data/ files in
a consistent state and puts in wal files the new transactions and
apply them when call pg_stop_backup().

I must do it other way then :(

Thanks

#5Vibhor Kumar
vibhor.kumar@enterprisedb.com
In reply to: Eduardo Morras (#1)
Re: UFS2 Snapshots and Postgres

On Jun 25, 2012, at 10:34 AM, Eduardo Morras wrote:

Thanks in advance

Snapshots are "safe" (but will result in a roll-forward on restart) IF AND ONLY IF the log data and database table spaces are all on the same snapshotted volume.

IF THEY ARE NOT then it will probably work 95% of the time, and the other 5% it will be unrecoverable. Be very, very careful -- the snapshot must in fact snapshot ALL of the involved database volumes (log data included!) at the same instant.

Even if i do a pg_start_backup()? I thought it set db data/ files in a consistent state and puts in wal files the new transactions and apply them when call pg_stop_backup().

I must do it other way then :(

Thanks

If you are doing pg_start_backup(), taking snapshot and pg_stop_backup with archived WAL file backups. Then its safe.

Thanks & Regards,
Vibhor Kumar
EnterpriseDB Corporation
The Enterprise PostgreSQL Company
Blog: http://vibhork.blogspot.com