postmaster does not come up

From: "surabhi(dot)ahuja" <surabhi(dot)ahuja(at)iiitb(dot)ac(dot)in>
To: <pgsql-general(at)postgresql(dot)org>
Subject: postmaster does not come up
Date: 2005-11-25 04:31:28
Message-ID: 967CFC4343BF2A4DAFACD026D33DC85118EC91@jal.iiitb.ac.in
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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="$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
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

Responses

Browse pgsql-general by date

  From Date Subject
Next Message surabhi.ahuja 2005-11-25 04:40:45 Re: regarding the apostrophe character
Previous Message surabhi.ahuja 2005-11-25 04:22:47 regarding postmaster.pid file