Re: Postmaster failing to start on reboot

From: "surabhi(dot)ahuja" <surabhi(dot)ahuja(at)iiitb(dot)ac(dot)in>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Richard Huxton" <dev(at)archonet(dot)com>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: Postmaster failing to start on reboot
Date: 2005-11-10 08:27:53
Message-ID: 967CFC4343BF2A4DAFACD026D33DC85118EC88@jal.iiitb.ac.in
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

i am using PostgreSQL 8.0.0
and the statrtup script i am using is as follows:


*****
#! /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 [ "`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
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

*****

for starting postmaster i run dbxd start
and for shutting it down i run dbxd stop.

Can you please study it once and suggest if I have missed something.

Please see the highlighted section (in red) . do i also need to remove the pid file also . i mean with the other rm commands do i need to give rm -f $PGDATA /postmaster.pid also?

Thank You,
Regards
Surabhi

________________________________

From: Tom Lane [mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us]
Sent: Wed 11/9/2005 9:23 PM
To: Richard Huxton
Cc: surabhi.ahuja; pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] Postmaster failing to start on reboot

***********************
Your mail has been scanned by InterScan VirusWall.
***********-***********

Richard Huxton <dev(at)archonet(dot)com> writes:
> surabhi.ahuja wrote:
>> So, I try starting postmaster. and it displays the following error
>> message: HINT: If you're sure there are no old server processes
>> still running, remove the shared memory block with the command "ipcr
>> m", or just delete the file
>> "/export/home1/sdc_image_pool/dbx/postmaster.pid".
>>
>> does it means that i will have to delete the postmaster.pid file ..in
>> such a scenarion always?

> No, only when it doesn't close down properly. Check your system logs to
> see what happened.

Also, what PG version is this exactly? More recent versions have better
defenses against being fooled by stale postmaster.pid files. It matters
what postmaster startup script you're using, too.

regards, tom lane

Responses

Browse pgsql-general by date

  From Date Subject
Next Message surabhi.ahuja 2005-11-10 08:28:55 Re: Postmaster failing to start on reboot
Previous Message Devrim GUNDUZ 2005-11-10 08:09:05 Re: [ANNOUNCE] PostgreSQL 8.1.0 RPMs are available for download