Files
interactive/RCDB/DB/etc/RcdbFailover
T
2026-08-07 17:38:18 +09:00

82 lines
1.5 KiB
Bash
Executable File

#! /bin/sh
#
# Description: PostgreSQL streaming repliation node failover script
# - promote execute
#
# Author: Solbox Storage dev team
# - storage.sd@solbox.com
## EDIT FROM HERE
# Installation prefix
prefix=/user/db/pgsql
# Data directory
PGDATA="$prefix/data"
# Who to run the postmaster as, usually "postgres". (NOT "root")
PGUSER=pgsql
## STOP EDITING HERE
# PID file
PIDFILE="$PGDATA/postmaster.pid"
# What to use to control command the postmaster
PGCTL="$prefix/bin/pg_ctl"
# Stnadby DB recovery.conf file
STANDBYDBCONF="$PGDATA/recovery.conf"
# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Parse command line parameters.
case $1 in
start)
# DB active and promote => normal
# etc => error
if [ -f $PIDFILE ] ; then
echo -n "Starting PostgreSQL Promote: "
su - $PGUSER -c "$PGCTL promote"
else
echo "Error: PostgreSQL is already stopped."
exit 1
fi
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop --mode=fast"
echo "OK"
;;
status)
# Normal staus => print OK
# - DB active (pid exist )
# - AND Primary mode (recovery.conf not exist)
# Error status
# - etc ( DB not started or Standby mode )
if [ -f $PIDFILE ] ; then
if [ ! -f $STANDBYDBCONF ] ; then
echo "PostgreSQL running as a primary [OK]"
else
echo "PostgreSQL is standby status."
fi
else
echo "PostgreSQL is already stopped."
fi
;;
*)
# Print help
echo "Usage: $0 {start|stop|status}" 1>&2
exit 1
;;
esac
exit 0