From 2588853e83e8e11683e92edf5280c72656d7ab07 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Wed, 23 Nov 2016 09:21:14 +0900 Subject: [PATCH] Refactor sample script in repmgrd-node-fencing.md --- docs/repmgrd-node-fencing.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/repmgrd-node-fencing.md b/docs/repmgrd-node-fencing.md index ecfd13c4..4bcb9b05 100644 --- a/docs/repmgrd-node-fencing.md +++ b/docs/repmgrd-node-fencing.md @@ -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"