Search Postgresql Archives

postmaster does not come up

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

 



 this is in continuation of the problem i was facing some time back.
 
if i try to start postmaster ...it times out.
what can be the possible cause of it . I also have seen a core file being generated.
 
in case such a thing happens ... what shuld i be doing?
how can i recover my database in such a situation?
 
 
i ll again copy paste the script i am using for starting up and shutting down postmaster
 
#! /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=""
# 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
        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
                   rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
                   rm -f /tmp/.s.PGSQL.${PGPORT}.lock > /dev/null
                   rm -f $PGDATA/postmaster.pid > /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
           /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
                   /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
 
 
thanks,
reagrds
Surabhi

[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