WAL recovery question - 0000001.history

From: "Andy Shellam" <andy(dot)shellam(at)mailnetwork(dot)co(dot)uk>
To: <pgsql-admin(at)postgresql(dot)org>
Subject: WAL recovery question - 0000001.history
Date: 2006-04-28 15:23:01
Message-ID: 20060428152301.007F011F602A@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

I've developed and am now testing a new "rolling-WAL" script, and have
noticed something a little peculiar with Postgres 8.1.3.

Basically I've taken a dump of my live database directory (between
pg_start_backup and pg_stop_backup) calls - shipped this to my standby, set
up a recovery.conf file (which calls the rolling-WAL script). This script
is designed to wait until the log file arrives, or a flag file is set to
return code 1 to postgres.

However as soon as the recovery starts, the script is waiting for a file
called 00000001.history, which will never arrive because it was never
generated on the live box since the base backup was taken.

So, what I did, was to touch this file (i.e. so it existed, but was empty) -
at which point my script recovered it, then PG ignored it and asked for the
correct backup files, as shown in the log below.

Note I intend to make this script public once testing has been carried out -
if anyone is interested in testing, please let me know. The "DEBUG" lines
have been generated by my script, not Postgresql.

--- START LOG OUTPUT ---

2006-04-28 16:07:33 BST LOG: database system was interrupted at 2006-04-19
10:48:50 BST
2006-04-28 16:07:33 BST LOG: starting archive recovery
2006-04-28 16:07:33 BST LOG: restore_command =
"/mndata/scripts/wal_log_recovery.sh /mndata/archive/xlog_transfer/%f %p"
DEBUG: Recovering /mndata/archive/xlog_transfer/00000001.history to
pg_xlog/RECOVERYHISTORY
DEBUG: WAL log /mndata/archive/xlog_transfer/00000001.history does not exist
DEBUG: Checking for flag file at /tmp/recoverdb.flag
DEBUG: Flag file does not exist
DEBUG: 30s to wait before next check

--- > I touched the 00000001.history file here < ---

DEBUG: Source file /mndata/archive/xlog_transfer/00000001.history exists
DEBUG: copy command returned: 0
DEBUG: Returning code 0 to PostgreSQL
2006-04-28 16:10:03 BST LOG: restored log file "00000001.history" from
archive
DEBUG: Recovering
/mndata/archive/xlog_transfer/000000010000000900000009.009FF34C.backup to
pg_xlog/RECOVERYHISTORY
DEBUG: WAL log
/mndata/archive/xlog_transfer/000000010000000900000009.009FF34C.backup does
not exist
DEBUG: Checking for flag file at /tmp/recoverdb.flag
DEBUG: Flag file does not exist
DEBUG: 30s to wait before next check

--- END LOGOUTPUT ---

There was an error during recovering this file:
000000010000000900000009.009FF34C.backup (as for some reason copy returns 0
even when the file has failed to be moved - I'll have to build this check in
myself.) So PG carried on looking for 000000010000000900000009 instead.

Does Postgres not use the *.history and *.backup files during the recovery -
so it's not going to be harmful to the recovery if these files are empty?

Thanks

Andy

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Scott Marlowe 2006-04-28 15:24:16 Re: New system recommendations
Previous Message Hogan, James F. Jr. 2006-04-28 15:05:21 Re: Trouble installing pltcl language