Search Postgresql Archives

Re: Postmaster failing to start on reboot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Title: Re: Postmaster failing to start on reboot
 hi,
 
in the script ithe statement to start and stop postmsater as the root is commented. thats how i saw the script( has been written by some one else)
 
will using 8.0.4 ensure proper starting and stopping of postmsater.
 
what abt the case in which the system is simply rebooted ...with postmsater already running)?
 
(attaching the script) again
 
thanks
regards
Surabhi
#! /bin/sh
# dbxd    Script for starting up the PostgreSQL
#               server in the daemon mode
#
#


# postgreSQL version is:
PGVERSION=8.0

# Name of the script
NAME=dbxd
# Command issued start/stop/restart
action="$1"
# Get SDC configiration
#   . $SDCHOME/.SdCrc
# Set defaults for port and database directory
POSTGRES_LOG="$SDCHOME/nuevo/logfiles/postgreslog"
if [ ! -f $POSTGRES_LOG ]; then
   touch $POSTGRES_LOG
   chown sdc:200 $POSTGRES_LOG
   chmod 777 $POSTGRES_LOG
fi
if [ "`uname`" = "Linux" ]; then
   #DEVMACHINE=`file /export/dbsroot | grep -c directory`
   POSTMASTER=/usr/bin/postmaster
   PGCTL="/usr/bin/pg_ctl -w "
   INITDB=/usr/bin/initdb
   PGDATA=$SdC_IMAGE_POOL/dbx
   PGPORT=5432
else
   echo "Cannot launch POSTGRES , unknown OS"
   echo " [ FAILED ]"
   exit 1
fi
if [ "`uname`" = "Linux" ]; then
   INITD=/etc/rc.d/init.d
   . $INITD/functions
   # Get config.
   . /etc/sysconfig/network
fi
# Check that networking is up.
# Pretty much need it for postmaster.
if [ "`uname`" = "Linux" ]; then
   [ "${NETWORKING}" = "no" ] && exit 0
fi

start(){

        # Check for the PGDATA structure
        if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base ]
        then
        # Check version of existing PGDATA

                INSTPG_VERSION=`cat $PGDATA/PG_VERSION`
                if [ $INSTPG_VERSION != '8.0' -a $INSTPG_VERSION != '8.1' ]
                then
			echo "An old version of the database format was found.\n"
                        exit 1
		fi
	else
	# No existing PGDATA - call initdb
                echo "Initializing database: "
                #chmod 755 /var/lib/pgsql
                if [ ! -d $PGDATA ]
                then
                        mkdir -p $PGDATA
                fi
                chown $SDCUSER:$SDCUSER $PGDATA
                chmod go-rwx $PGDATA
                # Make sure the locale from the initdb is preserved for later startups...
                [ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n $PGDATA/../initdb.i18n
                # Just in case no locale was set, use en_US on Linux
                if [ "`uname`" = "Linux" ]; then
                        [ ! -f /etc/sysconfig/i18n ] && echo "LANG=en_US" > $PGDATA/../initdb.i18n
		fi

                # Initialize the database
                if [ "`uname`" = "Linux" ]; then
                        /bin/sh -c "$INITDB --pgdata=$PGDATA > /dev/null 2>&1" < /dev/null
		fi

                # Modify original postgres settings so that local connection are trusted
                mv $PGDATA/pg_hba.conf $PGDATA/pg_hba.conf.orig
                cat $PGDATA/pg_hba.conf.orig | sed "s/^local.*/local   all    all    trust/" > $PGDATA/pg_hba.conf
                chown $SDCUSER:$SDCUSER $PGDATA/pg_hba.conf
                chmod 600 $PGDATA/pg_hba.conf
                rm $PGDATA/pg_hba.conf.orig

                #Copy the configuration file to the database - TBD
                #cp /export/home/sdc/database_scripts/config/postgresql.conf $PGDATA/
                #chown postgres:postgres $PGDATA/postgresql.conf
                #chmod 600 $PGDATA/postgresql.conf
	fi

        # Check for postmaster already running...
        # note that pg_ctl only looks at the data structures in PGDATA
        # you really do need the pidof()
        if [ "`uname`" = "Linux" ]; then
           pid=`pidof -s postmaster`
        else
           pid=`ps -eaf | grep postmaster | grep -v grep | tail -1 | awk '{print $2}'`
        fi
        if [ $pid ] && $PGCTL status -D $PGDATA > /dev/null 2>&1
        then
                echo "Postmaster already running."
        else
                if [ "`uname`" = "Linux" ]; then
                   #su -l postgres -s /bin/sh -c "$PGCTL -l $POSTGRES_LOG -D $PGDATA -p $POSTMASTER -o '-p ${PGPORT}' start  > /dev/null 2>&1" < /dev/null
		   # Chagne it to take port number - TBD
		   rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
		   rm -f /tmp/.s.PGSQL.${PGPORT}.lock > /dev/null
                   /bin/sh -c "$PGCTL -l $POSTGRES_LOG -D $PGDATA -p $POSTMASTER -o '-p ${PGPORT}' start  > /dev/null 2>&1" < /dev/null
                fi
                sleep 1
                if [ "`uname`" = "Linux" ]; then
                   pid=`pidof -s postmaster`
                else
                   pid=`ps -eaf | grep postmaster | grep -v grep | tail -1 | awk '{print $2}'`
                fi
                if [ $pid ]
                then
                        #echo "success $PSQL_START"
                        echo_success
                else
                        #echo "failure $PSQL_START"
                        echo_failure
                fi

	fi
}

stop(){
        echo "Stopping ${NAME} service: "
        if [ "`uname`" = "Linux" ]; then
           #su -l postgres -s /bin/sh -c "$PGCTL stop -D $PGDATA -s -m fast" > /dev/null 2>&1
           /bin/sh -c "$PGCTL stop -D $PGDATA -s -m fast" > /dev/null 2>&1
        fi
        ret=$?
        if [ $ret -eq 0 ]
        then
                #echo "success"
                echo_success
        else
                echo_failure
                if [ "`uname`" = "Linux" ]; then
                   #su -l postgres -s /bin/sh -c "$PGCTL stop -D $PGDATA -s -m immediate" > /dev/null 2>&1
                   /bin/sh -c "$PGCTL stop -D $PGDATA -s -m immediate" > /dev/null 2>&1
                fi
        fi
        echo
}

case $action in
  start)
        start
        ;;
  stop)
        stop
        ;;
  *)
        echo "Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
        exit 1
esac
exit 0
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux