aboutsummaryrefslogtreecommitdiffstats
path: root/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary
diff options
context:
space:
mode:
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-secondary95
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