diff options
Diffstat (limited to 'pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary')
-rw-r--r-- | pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary b/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary new file mode 100644 index 0000000..e06c810 --- /dev/null +++ b/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary @@ -0,0 +1,95 @@ +#!/bin/bash +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this code except in compliance +# with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. + + +# update a secondary database +set -x + +die() +{ + echo $0: "$@" 1>&2 + echo $0: "$@" + umask 022 + echo $0: "$@" >> /tmp/pgaas-failures + exit 1 +} + +[ -n "$MASTER" ] || die "MASTER is not set" +[ -n "$PGDIR" ] || die "PGDIR is not set" +[ -n "$DBROOT" ] || die "DBROOT is not set" +[ -n "$CFGDIR" ] || die "CFGDIR is not set" + +cd $CFGDIR/main || die "Cannot cd $CFGDIR/main" + +PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$CFGDIR/etc:$PGDIR/bin:$PATH + +umask 077 +TMP=$(mktemp /tmp/tmp.uds1.XXXXXXXXXX) +trap 'rm -f $TMP' 0 1 2 3 15 + +# update postgresql.conf - got new ones +# update pg_hba.conf - got new ones +# set up repmgr.conf - in common + +# replace/update recovery.conf +if [ -f $DBROOT/recovery.conf ];then mv $DBROOT/recovery.conf $DBROOT/recovery.conf.upgraded;fi +$CFGDIR/etc/gen-recovery.conf + +# wait until master DB is active and has repmgr available +max=40 +for s in `seq $max` +do + echo "$s of $max: Asking master $MASTER if repmgr is ready" + pgwget --progress=dot:giga -O$TMP http://$MASTER:8000/hasrepmgr + if [ -s $TMP ] + then + msg=$(cat $TMP) + case $msg in + OK* ) + echo "Master has repmgr ready" + done=yes + break + ;; + * ) + echo "Master does not have repmgr ready, msg=$msg" + ;; + esac + fi + rm -f $TMP + sleep 15 +done +[ "$done" = "yes" ] || die "Master never had repmgr available" + + +$CFGDIR/etc/start-db + +sleep 10 + +# make sure the postgres password is right +$CFGDIR/etc/update-postgres-user + +# register as standby +repmgr -f $CFGDIR/main/repmgr.conf standby register +echo repmgr ret=$? +sleep 10 + +# start repmgrd +# start repmgrd (verbose logging for testing) +umask 07 +repmgrd -f $CFGDIR/main/repmgr.conf -d --verbose +echo repmgrd ret=$? +# start repmgrd (normal logging) +# repmgrd -f $CFGDIR/main/repmgr.conf -d + +chmod 600 recovery.conf |