On Wed, Sep 21, 2011 at 04:50, Fujii Masao <masao.fu...@gmail.com> wrote: > 2011/9/13 Jun Ishiduka <ishizuka....@po.ntts.co.jp>: >> >> Update patch. >> >> Changes: >> * set 'on' full_page_writes by user (in document) >> * read "FROM: XX" in backup_label (in xlog.c) >> * check status when pg_stop_backup is executed (in xlog.c) > > Thanks for updating the patch. > > Before reviewing the patch, to encourage people to comment and > review the patch, I explain what this patch provides: > > This patch provides the capability to take a base backup during recovery, > i.e., from the standby server. This is very useful feature to offload the > expense of periodic backups from the master. That backup procedure is > similar to that during normal running, but slightly different: > > 1. Execute pg_start_backup on the standby. To execute a query on the > standby, hot standby must be enabled. > > 2. Perform a file system backup on the standby. > > 3. Copy the pg_control file from the cluster directory on the standby to > the backup as follows: > > cp $PGDATA/global/pg_control /mnt/server/backupdir/global
But this is done as part of step 2 already. I assume what this really means is that the pg_control file must be the last file backed up? (Since there are certainly a lot other ways to do the backup than just cp to a mounted directory..) > 4. Execute pg_stop_backup on the standby. > > The backup taken by the above procedure is available for an archive > recovery or standby server. > > If the standby is promoted during a backup, pg_stop_backup() detects > the change of the server status and fails. The data backed up before the > promotion is invalid and not available for recovery. > > Taking a backup from the standby by using pg_basebackup is still not > possible. But we can relax that restriction after applying this patch. I think that this is going to be very important, particularly given the requirements on pt 3 above. (But yes, it certainly doesn't have to be done as part of this patch, but it really should be the plan to have this included in the same version) > To take a base backup during recovery safely, some sort of parameters > must be set properly. Hot standby must be enabled on the standby, i.e., > wal_level and hot_standby must be enabled on the master and the standby, > respectively. FPW (full page writes) is required for a base backup, > so full_page_writes must be enabled on the master. Presumably pg_start_backup() will check this. And we'll somehow track this before pg_stop_backup() as well? (for such evil things such as the user changing FPW from on to off and then back to on again during a backup, will will make it look correct both during start and stop, but incorrect in the middle - pg_stop_backup needs to fail in that case as well) -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers