OTRS/PostgreSQL/VACUUM

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
spartak
OTRS Новобранец
Сообщения: 56
Зарегистрирован: 12 апр 2011, 17:51
Откуда: UA, Kiev
Контактная информация:

OTRS/PostgreSQL/VACUUM

Сообщение spartak » 20 ноя 2013, 14:44

Добрый день.

Столкнулся с проблемой.
Backend ERROR: OTRS-CGI-10 Perl: 5.8.8 OS: linux Time: Wed Nov 20 08:18:10 2013 Message: FATAL: database is not accepting commands to avoid wraparound data loss in database "template1" HINT: Stop the postmaster and use a standalone backend to vacuum database "template1".
Traceback (3036): Module: Kernel::System::DB::new (v1.127.2.2) Line: 181 Module: Kernel::System::Web::InterfaceCustomer::Run (v1.56.2.5) Line: 141 Module: /opt/otrs/bin/cgi-bin/customer.pl (v1.43.2.1) Line: 46



Помогло выполнение to vacuum database для существующих бд.
1) удаление всех процессов, связаны с postgres
2) sudo su postgres
bash-3.2$
postgres -D /var/lib/pgsql/data/ -O postgres
postgres -D /var/lib/pgsql/data/ -O otrs
postgres -D /var/lib/pgsql/data/ -O template1

и для каждой бд -- > vacuum ;
4) в конце перезагрузка


На данный момент, vacuum и бекап бд выполняется по крону каждое утро:

Код: Выделить всё

#!/bin/bash
logfile="/.snapshots/pgbackup/pgsql.log"
backup_dir="/.snapshots/pgbackup"
touch $logfile
databases=`psql -h localhost -U postgres -q -c "\l" | sed -n 4,/\eof/p | grep -v rows\) | grep -v template0 | grep -v template1 | awk {'print $1'}`

echo "Starting backup of databases " >> $logfile
for i in $databases; do
        dateinfo=`date '+%Y-%m-%d %H:%M:%S'`
        timeslot=`date '+%Y%m%d%H%M'`
        /usr/bin/vacuumdb -z -h localhost -U postgres $i >/dev/null 2>&1
        /usr/bin/pg_dump -U postgres -i -F c -b $i -h 127.0.0.1 -f $backup_dir/$i-database-$timeslot.backup
        /bin/rm -v $backup_dir/$i-database-latest.backup >/dev/null 2>&1
        /bin/ln -s $backup_dir/$i-database-$timeslot.backup $backup_dir/$i-database-latest.backup >/dev/null 2>&1
        echo "Backup and Vacuum complete on $dateinfo for database: $i " >> $logfile
        /usr/bin/du -h "$backup_dir/$i-database-$timeslot.backup" >> $logfile 2>>$logfile
done
        /usr/bin/du -h "$backup_dir" >> $logfile 2>>$logfile
        /bin/df -h | /bin/grep '/$' >> $logfile 2>>$logfile
echo "Done backup of databases" >> $logfile
в $logfile
WARNING: database "template1" must be vacuumed within 1514161 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".



Поделитесь, пожалуйста, вариантами, что могло вызвать такое?
С уважением,
Сергей
OTRS 3.0, ITSM 3.0.5, CentOS, PostgreSQL

Ответить