ssh -T ${SSH_OPTIONS} ${POSTGRESQL_STARTUP_USER}@${NEW_MAIN_NODE_HOST} ${PGHOME}/bin/pg_ctl -D ${NEW_MAIN_NODE_PGDATA} -w promote
if [ $? -ne 0 ]; then
- echo ERROR: failover.sh: end: failover failed
+ echo ERROR: failover.sh: promote failed
exit 1
fi
-echo failover.sh: end: new_main_node_id=$NEW_MAIN_NODE_ID on ${NEW_MAIN_NODE_HOST} is promoted to a primary
+echo failover.sh: end: new_main_node_id=$NEW_MAIN_NODE_ID on ${NEW_MAIN_NODE_HOST} was successfully promoted to primary
exit 0
set -o xtrace
-MAIN_NODE_PGDATA="$1"
-DEST_NODE_HOST="$2"
-DEST_NODE_PGDATA="$3"
-MAIN_NODE_PORT="$4"
-DEST_NODE_ID="$5"
-DEST_NODE_PORT="$6"
-MAIN_NODE_HOST="$7"
+MAIN_NODE_PGDATA="$1" # main node dabatase cluster path
+DEST_NODE_HOST="$2" # hostname of the DB node to be recovered
+DEST_NODE_PGDATA="$3" # database cluster path of the DB node to be recovered
+MAIN_NODE_PORT="$4" # main node port number
+DEST_NODE_ID="$5" # node id of the DB node to be recovered
+DEST_NODE_PORT="$6" # port number of the DB node to be recovered
+MAIN_NODE_HOST="$7" # main node hostname
PGHOME=/usr/pgsql-15
ARCHIVEDIR=/var/lib/pgsql/archivedir
set -o xtrace
-MAIN_NODE_PGDATA="$1" # main dabatase cluster
-DEST_NODE_HOST="$2" # hostname of the DB node to be recovered
-DEST_NODE_PGDATA="$3" # database cluster of the DB node to be recovered
-MAIN_NODE_PORT="$4" # PostgreSQL port number
+MAIN_NODE_PGDATA="$1" # main node dabatase cluster path
+DEST_NODE_HOST="$2" # hostname of the DB node to be recovered
+DEST_NODE_PGDATA="$3" # database cluster path of the DB node to be recovered
+MAIN_NODE_PORT="$4" # main node port number
+DEST_NODE_ID="$5" # node id of the DB node to be recovered
+DEST_NODE_PORT="$6" # port number of the DB node to be recovered
+MAIN_NODE_HOST="$7" # main node hostname
+
PGHOME=/usr/pgsql-15
ARCHIVEDIR=/var/lib/pgsql/archivedir # archive log directory
SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/${SSH_KEY_FILE}"
# Force to flush current value of sequences to xlog
-${PGHOME}/bin/psql -p $PORT -t -c 'SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn' template1|
+${PGHOME}/bin/psql -h $MAIN_NODE_HOST -p $MAIN_NODE_PORT -t -c 'SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn' template1|
while read i
do
if [ "$i" != "" ]; then
- psql -p $PORT -c "SELECT setval(oid, nextval(oid)) FROM pg_class WHERE relkind = 'S'" $i
+ psql -h $MAIN_NODE_HOST -p $MAIN_NODE_PORT -c "SELECT setval(oid, nextval(oid)) FROM pg_class WHERE relkind = 'S'" $i
fi
done
-psql -p $PORT -c "SELECT pgpool_switch_xlog('$ARCHIVEDIR')" template1
+if [ $? -ne 0 ]; then
+ echo ERROR: recovery_2nd_stage: failed.
+ exit 1
+fi
+
+psql -h $MAIN_NODE_HOST -p $MAIN_NODE_PORT -c "SELECT pgpool_switch_xlog('$ARCHIVEDIR')" template1
+
+if [ $? -ne 0 ]; then
+ echo ERROR: recovery_2nd_stage: pgpool_switch_xlog failed.
+ exit 1
+fi
# start target server as a streaming replication standby server
ssh -T ${SSH_OPTIONS} ${POSTGRESQL_STARTUP_USER}@$DEST_NODE_HOST "
$PGHOME/bin/pg_ctl -l /dev/null -w -D $DEST_NODE_PGDATA promote
"
+
+if [ $? -ne 0 ]; then
+ echo ERROR: recovery_2nd_stage: promote failed.
+ exit 1
+fi
+
+echo recovery_2nd_stage: end: recovery_2nd_stage is completed successfully
+exit 0