Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > This is a much simpler fix than people talking about writing their own
> > backup programs.
> 
> Well, it's still not exactly trivial.  The hack that was being proposed
> involved having the admin manually do
> 
>       full_page_writes = ON (ie, edit config file and SIGHUP)
>       pg_start_backup
>       take backup dump
>       pg_stop_backup
>       full_page_writes = OFF (ie, edit config file and SIGHUP)
> 
> with some additions to pg_start_backup/pg_stop_backup to complain if 
> full_page_writes isn't ON.  Aside from being a PITA, this isn't at
> all secure, first for the obvious reason that we're only checking
> full_page_writes at start/stop and not whether it was on for the whole
> interval, and second because SIGHUP is asynchronous.  Backends respond
> to the signal when they feel like it (in practice, upon starting a new
> interactive command) and so it'd be quite possible for a long-running
> query to still be executing with full_page_writes off long after the
> pg_start_backup has occurred.
> 
> If we were to do this, I'd want some more-bulletproof mechanism for
> forcing full_page_writes on during the backup.  We could probably
> keep a "backup in progress" flag in shared memory, and examine that
> along with the GUC variable before deciding to omit a full-page write.
> 
> I seem to recall that there were previous proposals for such a flag,
> which I resisted because I didn't want any macroscopic user-visible
> change in behavior during a backup.  But forcing full-page WAL writes
> is something I could live with as a "backup mode" behavior.

Yes, good point.  The setting has to be seen by all backends at the same
time, so yea, a shared memory variable seems required.

The manual method is clearly a loser.

-- 
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to