Обсуждение: Intermittent Startup Failures

Поиск
Список
Период
Сортировка

Intermittent Startup Failures

От
"Debra LaVille"
Дата:
I have users experiencing problems with PostgreSQL failing to start up
consistently when their machines reboot. (The reboot may or may not be a
result of a machine lockup.) No messages have been logged to the
/var/log/messages file other than "startup failed", but executing the
startup script by hand then successfully starts PostgreSQL. I have also seen
the "starup failed" message displayed on reboot, logged to the messages
file, but when I checked, postmaster acually is running and I was able to
start psql. I'm not a script file or Linux guru, but need to get to the
bottom of this problem. Sorry I cannot provide more data, but any
suggestions to help me debug this problem would be appreciated. BTW, I'm
using PostgreSQL 7.1 with Linux 7.0.




Re: Intermittent Startup Failures

От
Ryan Mahoney
Дата:
There may be some errors in the script that's loads postgres at
startup.  Look in the "/etc/rc.d/init/" directory and see if there is an
executable named postgres or something similar.  If so, post the source of
this file to the group so we can take a look.

Good Luck!

-Ryan Mahoney

At 10:22 AM 7/18/01 -0700, Debra LaVille wrote:

>I have users experiencing problems with PostgreSQL failing to start up
>consistently when their machines reboot. (The reboot may or may not be a
>result of a machine lockup.) No messages have been logged to the
>/var/log/messages file other than "startup failed", but executing the
>startup script by hand then successfully starts PostgreSQL. I have also seen
>the "starup failed" message displayed on reboot, logged to the messages
>file, but when I checked, postmaster acually is running and I was able to
>start psql. I'm not a script file or Linux guru, but need to get to the
>bottom of this problem. Sorry I cannot provide more data, but any
>suggestions to help me debug this problem would be appreciated. BTW, I'm
>using PostgreSQL 7.1 with Linux 7.0.
>
>
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 5: Have you checked our extensive FAQ?
>
>http://www.postgresql.org/users-lounge/docs/faq.html
>
>
>
>---
>Incoming mail is certified Virus Free.
>Checked by AVG anti-virus system (http://www.grisoft.com).
>Version: 6.0.251 / Virus Database: 124 - Release Date: 4/26/01

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.251 / Virus Database: 124 - Release Date: 4/26/01

Re: Intermittent Startup Failures

От
Joseph Shraibman
Дата:

Debra LaVille wrote:

<snip>
> suggestions to help me debug this problem would be appreciated. BTW, I'm
> using PostgreSQL 7.1 with Linux 7.0.
>


There is no Linux 7.0.  You probably mean redhat 7.0 which shipped with
a broken glibc.  Upgrade your glibc rpms and see if that changes anything.

Also make sure the startup script is symlinked in the right directory.  You may have in in rc3.d but the machine is
startingup in runlevel 5. 


--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com


RE: Intermittent Startup Failures

От
Debra LaVille
Дата:
I'm using the script file included with the postgresql distribution:

***********************************************************************

# PGVERSION is:
PGVERSION=7.1.2

# Source function library.
INITD=/etc/rc.d/init.d
. $INITD/functions

# Get function listing for cross-distribution logic.
#TYPESET=`typeset -f|grep "declare"`

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 0

[ -f /usr/bin/postmaster ] || exit 0


start(){
    PSQL_START=$"Starting postgresql service: "

    export PGDATA=/var/lib/pgsql/data
    if [ ! -d $PGDATA/base ]
    then
    # Check version of existing PGDATA


    # No existing PGDATA! Initdb it.

            echo -n $"Initializing database: "
                if [ ! -d $PGDATA ]
        then
            mkdir -p $PGDATA
            chown postgres.postgres $PGDATA
        fi
        # 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
        [ ! -f /etc/sysconfig/i18n ] && echo "LANG=en_US" >
$PGDATA/../initdb.i18n
        # Is expanded this early to be used in the command su runs
        echo "export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC
LC_CTYPE LC_TIME" >> $PGDATA/../initdb.i18n
        # Initialize the database
        su -l postgres -s /bin/sh -c "/usr/bin/initdb
--pgdata=/var/lib/pgsql/data > /dev/null 2>&1" < /dev/null
        [ -f $PGDATA/PG_VERSION ] && echo_success
        [ ! -f $PGDATA/PG_VERSION ] && echo_failure
        echo
     fi

    # Check for postmaster already running...
    pid=`pidof -s postmaster`
    if [ $pid ]
    then
        echo $"Postmaster already running."
    else
        #all systems go -- remove any stale lock files
        rm -f /tmp/.s.PGSQL.* > /dev/null
        echo -n "$PSQL_START"
        su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl  -D $PGDATA -p
/usr/bin/postmaster start  > /dev/null 2>&1" < /dev/null
         sleep 1
         pid=`pidof -s postmaster`
         if [ $pid ]
        then
            echo "  [ OK ]"
            touch /var/lock/subsys/postgresql
            echo $pid > /var/run/postmaster.pid
            echo
        else
            echo " [ FAILED ]"
            echo
        fi
    fi
}

stop(){
    echo -n $"Stopping postgresql service: "
    # Check for older PGDATA location.
        export PGDATA=/var/lib/pgsql/data

    su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl stop -D $PGDATA -s -m
fast" > /dev/null 2>&1
        ret=$? # This will always be 0, as the return code doesn't
propagate... Fix that some day.
        if [ $ret -eq 0 ]; then
        echo_success
        else
            echo_failure
        fi
    echo
    rm -f /var/run/postmaster.pid
    rm -f /var/lock/subsys/postgresql
}

restart(){
    stop
    start
}

condrestart(){
    [ -e /var/lock/subsys/postgresql ] && restart || :
}


# This script is slightly unusual in that the name of the daemon
(postmaster)
# is not the same as the name of the subsystem (postgresql)

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status postmaster
    ;;
  restart)
    restart
    ;;
  condrestart)
    condrestart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart}"
    exit 1
esac

exit 0
****************************************************************************
***



-----Original Message-----
From: Ryan Mahoney [mailto:ryan@paymentalliance.net]
Sent: Wednesday, July 18, 2001 12:43 PM
To: Debra LaVille; pgsql-general@postgresql.org
Subject: Re: Intermittent Startup Failures


There may be some errors in the script that's loads postgres at
startup.  Look in the "/etc/rc.d/init/" directory and see if there is an
executable named postgres or something similar.  If so, post the source of
this file to the group so we can take a look.

Good Luck!

-Ryan Mahoney

At 10:22 AM 7/18/01 -0700, Debra LaVille wrote:

>I have users experiencing problems with PostgreSQL failing to start up
>consistently when their machines reboot. (The reboot may or may not be a
>result of a machine lockup.) No messages have been logged to the
>/var/log/messages file other than "startup failed", but executing the
>startup script by hand then successfully starts PostgreSQL. I have also
seen
>the "starup failed" message displayed on reboot, logged to the messages
>file, but when I checked, postmaster acually is running and I was able to
>start psql. I'm not a script file or Linux guru, but need to get to the
>bottom of this problem. Sorry I cannot provide more data, but any
>suggestions to help me debug this problem would be appreciated. BTW, I'm
>using PostgreSQL 7.1 with Linux 7.0.
>
>
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 5: Have you checked our extensive FAQ?
>
>http://www.postgresql.org/users-lounge/docs/faq.html
>
>
>
>---
>Incoming mail is certified Virus Free.
>Checked by AVG anti-virus system (http://www.grisoft.com).
>Version: 6.0.251 / Virus Database: 124 - Release Date: 4/26/01

Re: RE: Intermittent Startup Failures

От
Tom Lane
Дата:
Debra LaVille <debra.laville@digeo.com> writes:
> I'm using the script file included with the postgresql distribution:

Hmm, is this from an RPM?  It's certainly not part of what *I* consider
the Postgres distribution ...

>         #all systems go -- remove any stale lock files
>         rm -f /tmp/.s.PGSQL.* > /dev/null
>         echo -n "$PSQL_START"
>         su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl  -D $PGDATA -p
> /usr/bin/postmaster start  > /dev/null 2>&1" < /dev/null
>          sleep 1
>          pid=`pidof -s postmaster`
>          if [ $pid ]
>         then
>             echo "  [ OK ]"
>             touch /var/lock/subsys/postgresql
>             echo $pid > /var/run/postmaster.pid
>             echo
>         else
>             echo " [ FAILED ]"
>             echo
>         fi

Since this thing is sending the postmaster's stderr output to /dev/null,
it's impossible to tell what's going wrong.  Change the su line to be
something like

su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl  -D $PGDATA -p /usr/bin/postmaster start  >> /some/handy/logfile 2>&1" <
/dev/null

and then let us know what you see in /some/handy/logfile after you get a
failure.

            regards, tom lane