pgagroal failover
pgagroal can failover a PostgreSQL instance if the clients can't write to it.
In pgagroal.conf define
failover = on
failover_script = /path/to/myscript.sh
The script will be run as the same user as the pgagroal process so proper permissions
(access and execution) must be in place.
The following information is passed to the script as parameters
- Old primary host
- Old primary port
- New primary host
- New primary port
so a script could look like
#!/bin/bash
OLD_PRIMARY_HOST=$1
OLD_PRIMARY_PORT=$2
NEW_PRIMARY_HOST=$3
NEW_PRIMARY_PORT=$4
ssh -tt -o StrictHostKeyChecking=no postgres@${NEW_PRIMARY_HOST} pg_ctl promote -D /mnt/pgdata
if [ $? -ne 0 ]; then
exit 1
fi
exit 0
The script is assumed successful if it has an exit code of 0. Otherwise both servers will be
recorded as failed.