I gave a lightning talk at Pg Conference: West 08 about a tool that I have developed call PITRTools. PITRTools is a python based log shipping utility. Essentially it wraps itself around standard tools such as rsync, and pg_standby to provide a usable experience. Some of the features is provides are:
Auto initialization of environment
Simple base backups
Monitoring of Master
Arbitrary alerts
Failover
Failover actions
etc...
In all it is by far the simplest and most effective tool for PostgreSQL standby that I have used (of course I wrote it so...).
One of the features recently added to PITRTools is multi-slave support. The way it works is like this:
Archiver checks for logs in local queue
if found
archiver attempts to sends (queued) logs to slave N
if success
archiver sends new archive to slave N
if success
continue
if fail
archive local
if success
continue
if fail
bail out really loudly (FATAL)
exit 1
if fail
archive local
if success
continue
if fail
bail out really loudly (FATAL)
exit 1
if not found
Archiver sends log to Slave N
if success
continue
if fail
archive local (queue)
if success
continue
if fail
bail out really loudly (FATAL)
continue
if fail
queue
exit 1
exit 0
One of the key requirements of PITRTools was no extra support. It requires no extra Python modules just Python >= 2.5 AND Python <= 2.6. No it is not 3.0 safe, but will be soon enough. Give it a whirl and let us know what you think, its BSD licensed.
To get PITRTools you can check it out like so:
svn co https://projects.commandprompt.com/public/pitrtools/repo pitrtools