mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
Refactor sample script in repmgrd-node-fencing.md
This commit is contained in:
@@ -91,50 +91,52 @@ The actual script is as follows; adjust the configurable items as appropriate:
|
||||
|
||||
# Configurable items
|
||||
PGBOUNCER_HOSTS="node1 node2 node3"
|
||||
PGBOUNCER_DATABASE_INI="/etc/pgbouncer.database.ini"
|
||||
PGBOUNCER_DATABASE="appdb"
|
||||
PGBOUNCER_PORT=6432
|
||||
|
||||
REPMGR_DB="repmgr"
|
||||
REPMGR_USER="repmgr"
|
||||
REPMGR_SCHEMA="repmgr_test"
|
||||
PGBOUNCER_CONFIG="/etc/pgbouncer.ini"
|
||||
PGBOUNCER_INI_TEMPLATE="/var/lib/postgres/repmgr/pgbouncer.ini.template"
|
||||
PGBOUNCER_DATABASE="appdb"
|
||||
|
||||
# 1. Pause running pgbouncer instances
|
||||
for HOST in $PGBOUNCER_HOSTS
|
||||
do
|
||||
psql -t -c "pause" -h $HOST -p $PORT -U postgres pgbouncer
|
||||
psql -t -c "pause" -h $HOST -p $PGBOUNCER_PORT -U postgres pgbouncer
|
||||
done
|
||||
|
||||
|
||||
# 2. Promote this node from standby to master
|
||||
|
||||
repmgr standby promote -f /etc/repmgr.conf
|
||||
|
||||
|
||||
# 3. Reconfigure pgbouncer instances
|
||||
|
||||
PGBOUNCER_INI_NEW="/tmp/pgbouncer.ini.new"
|
||||
PGBOUNCER_DATABASE_INI_NEW="/tmp/pgbouncer.database.ini"
|
||||
|
||||
for HOST in $PGBOUNCER_HOSTS
|
||||
do
|
||||
# Recreate the pgbouncer config file
|
||||
echo -e "[databases]\n" > $PGBOUNCER_INI_NEW
|
||||
echo -e "[databases]\n" > $PGBOUNCER_DATABASE_INI_NEW
|
||||
|
||||
psql -d $REPMGR_DB -U $REPMGR_USER -t -A \
|
||||
-c "SELECT '$PGBOUNCER_DATABASE= ' || conninfo || ' application_name=pgbouncer_$HOST' \
|
||||
-c "SELECT '${PGBOUNCER_DATABASE}-rw= ' || conninfo || ' application_name=pgbouncer_${HOST}' \
|
||||
FROM ${REPMGR_SCHEMA}.repl_nodes \
|
||||
WHERE active = TRUE AND type='master'" >> $PGBOUNCER_DATABASE_INI_NEW
|
||||
|
||||
psql -d $REPMGR_DB -U $REPMGR_USER -t -A \
|
||||
-c "SELECT '${PGBOUNCER_DATABASE}-ro= ' || conninfo || ' application_name=pgbouncer_${HOST}' \
|
||||
FROM $REPMGR_SCHEMA.repl_nodes \
|
||||
WHERE active = TRUE AND type='master'" >> $PGBOUNCER_INI_NEW
|
||||
WHERE node_name='${HOST}'" >> $PGBOUNCER_DATABASE_INI_NEW
|
||||
|
||||
cat $PGBOUNCER_INI_TEMPLATE >> $PGBOUNCER_INI_NEW
|
||||
rsync $PGBOUNCER_DATABASE_INI_NEW $HOST:$PGBOUNCER_DATABASE_INI
|
||||
|
||||
rsync $PGBOUNCER_INI_NEW $HOST:$PGBOUNCER_CONFIG
|
||||
|
||||
psql -tc "reload" -h $HOST -U postgres pgbouncer
|
||||
psql -tc "resume" -h $HOST -U postgres pgbouncer
|
||||
psql -tc "reload" -h $HOST -p $PGBOUNCER_PORT -U postgres pgbouncer
|
||||
psql -tc "resume" -h $HOST -p $PGBOUNCER_PORT -U postgres pgbouncer
|
||||
|
||||
done
|
||||
|
||||
# Clean up generated file
|
||||
rm $PGBOUNCER_INI_NEW
|
||||
rm $PGBOUNCER_DATABASE_INI_NEW
|
||||
|
||||
echo "Reconfiguration of pgbouncer complete"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user