From: | Tom Arthurs <tarthurs(at)jobflash(dot)com> |
---|---|
To: | Kenji Morishige <kenjim(at)juniper(dot)net> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: Warm-Backup configuration question |
Date: | 2007-08-24 01:54:32 |
Message-ID: | 46CE3A58.3050407@jobflash.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
You need to make the script wait forever for the next archive file, or
return 1 only if you want to complete the recovery. Here's a stub of
what we do:
#!/usr/bin/ksh
set -e
# Where copy.sh fetches WALs from
ARCHDIR=/data3/archive_log
# Name of log file that copy.sh writes to
copy_log=copy.log
# Name of stop file that copy looks for to signal "go live"
copy_stop=copy.stop
# How many seconds sleep between copy iterations
seconds=15
# Expected size of WAL file
size=16777216
src=$1
dest=$2
base=$(basename $src)
exec >>$copy_log
exec 2>&1
echo $base
case $base in
*.history)
echo "\tignored"
exit 1
;;
*.backup)
size=+0
;;
esac
while :; do
if [ -f $copy_stop ]; then
echo "\tstop file"
rm $copy_stop
exit 1
fi
if [ -f "$src" ]; then
if [ "$(find $src -size ${size}c)" ]; then
echo "\tfound"
cp $src $dest
exit 0
else
echo "\ttoo small"
fi
fi
echo "\tsleeping $seconds"
sleep $seconds
done
Kenji Morishige wrote:
> I've got 2 identical servers configured exactly the same way, except for some
> minor differences for the WAL logging directories. I have both machines set up
> as a NFS server and client, so that the WAL archive gets written out to the
> local filesystem of the backup machine depending on which role the machine is
> currently configured for.
>
> I've been able to get the backup server syncronized by using the recover.conf
> file as described in the documenation, but I can't seem to write a generic shell
> script that will keep the warm-backup in a continously syncronizing mode. It
> always stops and renames the recover.conf to recover.done.
>
> I've tried to write an alternate restore command as follows:
>
> #!/usr/local/bin/bash
> if [ -e /export/raid/pgsql/recovery.stop ]; then
> exit 1
> fi
> if [ -e $1 ]; then
> `/bin/cp $1 $2`
> fi
> sleep 5
> exit 0
>
> The documenation says that it should return 0 only if it is successfull. My
> understanding is that the recovery script should continuously try to copy the
> archived data to the WAL directory so that the WARM-BACKUP server can
> syncronize. I'd like to have the WARM-BACKUP always be only a few minutes
> behind in syncronization from the PRIMARY without human intervention. I can
> write a cronjob to clean out the WAL archive directory accordingly.
>
> I would be extremely gratefull for any assistance from anyone with a similar
> configuration. I must be confused by how the restore_command is supposed to
> work.
>
> Sincerely,
> Kenji
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2007-08-24 01:58:11 | Re: tar, but not gnu tar |
Previous Message | Andreas | 2007-08-24 01:45:27 | Re: run postgres.exe as a Windows Administrative account |