Re: Wal archive way behind in streaming replication

From: bricklen <bricklen(at)gmail(dot)com>
To: John Scalia <jayknowsunix(at)gmail(dot)com>
Cc: "pgsql-admin(at)postgresql(dot)org" <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Wal archive way behind in streaming replication
Date: 2014-06-27 21:35:00
Message-ID: CAGrpgQ-22XE1fE8FUvc3aifMhgOWDh0tkquO5OagLuk5cwjdgA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

I haven't been following this thread, but FWIW, here is a simple bash
script I use to rebuild a hot standby when I'm testing.
It assumes that the master is correctly set up for replication, that the
port is 5432. and that the replication user is named "replication".
Runs on CentOS, haven't tried it on any other distro.

This is a script I call /root/recreate_standby.sh, and gets run as root.
This is optional, if you run it as postgres. remove the "sudo su - postgres
-c" sections.

Watch out for word-wrapping from the email client.
------------

#!/bin/bash

## This script runs on the standby.
## Executed as root, else remove the "sudo - postgres -c" commands.
## Assumes you have a valid recovery.conf saved at
## $PGDATA/../recovery.conf.bkp

export PGDATA=/path/to/data/dir ## Must be set correctly
export PGPORT=5432
export MASTER=192.168.x.x ## IP or host entry for the master
Postgresql server
export PGBIN=/usr/pgsql-9.3/bin

service postgresql-9.3 stop -m immediate

if [ $? != 0 ]; then
service postgresql-9.3 start
echo "Could not shut down PostgreSQL. Aborting."
exit 1
fi

rm -rf $PGDATA

if [ $? != 0 ]; then
echo "Could not remove the PostgreSQL $PGDATA dir. Aborting."
exit 1
fi

## If the replication role is not set to "trust" in the master's
## pg_hba.conf file, the password will need to be passed into the command
below,
## and "--no-password" will need to be removed or revised to be "--password"
su - postgres -c "$PGBIN/pg_basebackup --pgdata=$PGDATA --host=$MASTER
--port=$PGPORT --username=replication --no-password --xlog-method=stream
--format=plain --progress --verbose"

su - postgres -c "cp -p $PGDATA/../recovery.conf.bkp $PGDATA/recovery.conf"

service postgresql-9.3 start

su - postgres -c "$PGBIN/pg_isready -U postgres -p $PGPORT -t2"

while [ $? != 0 ]; do
echo "Sleep 1 second, check if slave is up yet. If not, sleep again."
sleep 1;
su - postgres -c "$PGBIN/pg_isready -U postgres -p $PGPORT -t2"
done

su - postgres -c "$PGBIN/psql -d postgres -U postgres -qXc 'select
pg_is_in_recovery() as is_pg_in_recovery'"

exit 0

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Michael Paquier 2014-06-29 12:28:36 Re: [pgadmin-support] Best backup strategy for production systems
Previous Message Scott Ribe 2014-06-27 18:54:52 Re: Advice for PG-SQL Enterprise deployment