Cron DB Bounce causes index problems && Help rotating logs

Поиск
Список
Период
Сортировка
От Chris Hoover
Тема Cron DB Bounce causes index problems && Help rotating logs
Дата
Msg-id MAILSERVERZ9rWjAKYV00000271@mail.astudios.com
обсуждение исходный текст
Ответы Re: Cron DB Bounce causes index problems && Help rotating logs
Список pgsql-admin
Hi all,

We are having an issue here trying to automate our db log rotations.  We were using the Apache rotatelogs program and
wethought it was working fine.  However, when we had a server crash and had to recover and roll forward using the
postgresqllogs (we are logging all sql), we discovered that some of the sql records in the log were being over written.
This has caused us to go back to just having postgresql log directly to the drives.  (The problem with rotatelogs
lookedlike this "[2005-01-14 08:00:01] [123]  LOG: query: select * fr[2005-01-14 08:00:01] ....") 

Anyway, we are now manually rotating the logs.  We tried to rotate the logs via a simple script and cron, but we ended
upcausing strange index issues.  The data would be in the tables and would show if a table scan was forced.  But many
tableswould not show the data if an index scan (esp. if the primary key was used) was used.  We also had issues with
systemallowing records to be inserted that violated the primary key. 

Manually logging into the servers and running the same script from the shell prompt works fine and does not cause any
indexissues. 

Any ideas on what is going on here?  We do not have any postgresql related environmental variables set in the shell.
Dowe need to execute a db bounce via cron with a "special" call from cron? 

Also, has anyone else seen the rotatelogs issue?

Is there a better way to rotate the logs w/o bouncing the db every night?  Due to recovery requirements, we must have
thesql logged to the postgresql log.  These logs grow to between 2 and 5 GB every day.  Running for more than 2 days
withoutrotating the logs tends to cause a noticable slowdown to our users. 

Any help would be appreciated.

Chris

P.S.

Here is the cron line:
01 20 * * * /pgsql/tmp/bin/rotate_logs.sh 50001

Here is the rotate_log.sh script:

source ~postgres/etc/dba.profile

PORT=$1

LOGPATH=${LOG_PATH}/${PORT}/pg_log

echo "`date` - `hostname` - log rotation started" | mail -s "`hostname` rotation" $DBAPAGER

## shutdown the database
${POSTGRES_BIN}/pg_ctl -D ${DB_PATH}/${PORT} -m fast stop > ~postgres/db_${PORT}_stop.log 2>&1

STOPPED=`cat ~postgres/db_${PORT}_stop.log | grep "postmaster successfully shut down" | wc -l`
if [ $STOPPED != 1 ]
then
  echo "POSTGRES DID NOT STOP" | mail -s "`hostname` stop fail" $DBAPAGER
  exit
fi

sleep 150

mv $LOGPATH/postgres.log $LOGPATH/postgres.log.`date +%m%d%y%H%M`

sleep 150

${POSTGRES_BIN}/pg_ctl -D ${DB_PATH}/${PORT} -l ${LOGPATH}/postgres.log start > ~postgres/db_${PORT}_start.log 2>&1
STARTED=`grep "successfully start" ~postgres/db_${PORT}_start.log | wc -l `
if [ $STARTED != 1 ]
then
  echo "POSTGRES DID NOT START" | mail -s "`hostname` start fail" $DBAPAGER
fi

echo "`date` - `hostname` - log rotation finished" | mail -s "`hostname` rotation" $DBAPAGER


Here is the dba.profile file:
DBAPAGER=<my pager number>

POSTGRES=/pgsql/

POSTGRES_BIN=${POSTGRES}/bin

DB_PATH=/data

LOG_PATH=/data



В списке pgsql-admin по дате отправления:

Предыдущее
От: Dick Davies
Дата:
Сообщение: Re: pam
Следующее
От: "Goulet, Dick"
Дата:
Сообщение: Re: Installing PostgreSQL as "postgress" versus "root"