Страница 1 из 1

Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 9:15:01
kharkov_max
Добрый день.

Утром обнаружилось что postgresql не работает, попытки запустить заканчиваются так:

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

pg_ctl: could not start server
Examine the log output.
В логе такое

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

> cat ./messages | grep postgresql
Oct 24 09:08:32 gateway postgres[8181]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:33 gateway postgres[8182]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:34 gateway postgres[8183]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:35 gateway postgres[8184]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:36 gateway postgres[8185]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:37 gateway postgres[8186]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:38 gateway postgres[8187]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:39 gateway postgres[8188]: [1-1] FATAL:  the database system is starting up
Oct 24 09:08:39 gateway postgres[8180]: [7-1] FATAL:  failed to re-find parent key in index "40361" for split pages 14342/14395
При чем сервер коатковременно запускается 2-3 сек и падает.
Быстрое гугление подсказало что сервер упал окончательно и нужно восстанавливать из резервной копии, но пока это не вариант.
Ночью не происходило ни каких чп, т.е. сервер не выключался и не перезагружался.
Так же ночью отработали бекапы баз данных.

Есть подозрение что данную проблему можно решить без переустановки сервера и restore database.
Прошу Вашей помощи ...

PS

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

> pkg_info | grep postgre
postgresql-client-9.2.1 PostgreSQL database (client)
postgresql-server-9.2.1 The most advanced open-source database available anywhere

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 9:28:21
kharkov_max
Вот более детальный лог

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

>/usr/local/etc/rc.d/postgresql start
LOG:  database system was interrupted while in recovery at 2012-10-24 09:24:10 EEST
HINT:  This probably means that some data is corrupted and you will have to use the last backup for recovery.
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  redo starts at 5/5D4C8138
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
FATAL:  the database system is starting up
LOG:  record with zero length at 5/9D13B8B0
LOG:  redo done at 5/9D13B880
LOG:  last completed transaction was at log time 2012-10-24 05:17:37.98006+03
FATAL:  failed to re-find parent key in index "40361" for split pages 14342/14395
LOG:  startup process (PID 8781) exited with exit code 1
LOG:  aborting startup due to startup process failure
pg_ctl: could not start server
Examine the log output.

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 9:50:57
PYO
Вот такая фигня есть - может поможет. Бэкап директории с базой обязателен.

http://www.postgresql.org/docs/9.2/stat ... txlog.html

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 10:19:55
kharkov_max
Спасибо, вроде помогло ... http://wruslan.rubyclub.com.ua/blogs/tag/pg_resetxlog

Теперь вопрос, а почему так произошло ?
Как выявить причину?

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 10:57:01
PYO
kharkov_max писал(а):Теперь вопрос, а почему так произошло ?
Как выявить причину?
Логи смотреть 2012-10-24 05:17:37.

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 12:39:39
kharkov_max
Продолжаю ...
После удаления логов сервер запустился и около часа нагружал процессор до 100%.
Видимо что то пересчитывал и т.д.

В это время все базы нормально работали ...
Как только нагрузка вернулась на свое место, я для теста сделал перезагрузку хоста.
PostgreSQL опять не поднялся с той же ошибкой ...

Пока опять удалил логи и все запустил но есть 100% уверенность что при следующей перезагрузке ситуация повторится...
Проблем с железом нет 100%, дисковая система в зеркале gmirror и говорит что все в порядке.
С ОЗУ тоже все нормально, с остальными сервисами проблем нет - ни чего не вылетает и т.д. ...
Т.е. это какя то логическая ошибка самого postgres а

Как можно полечить сервис ?
Может какие настройки в конфиге поправить или базу отчекать и т.д. ...

Можно конечно сделать бекап баз и все переустановить, но как то это не по джедайски ...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 12:50:12
skeletor
Как делаете перезагрузку? Какой командой?

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 12:55:28
kharkov_max

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

shutdown -r now
Даже если использовать reboot ранее это проблем не вызывало ...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 13:05:36
skeletor
В том-то и проблема, что reboot использовать на нагруженных сервера (и не только на нагруженных) нельзя, так как он не ждёт, пока полностью завершаться процессы. Большая база данных может останавливаться и 5 и 10 минут, а Reboot даст ей 30 секунд, а потом убъёт по kill -9. И потом при запуске базы будут ошибки. Не раз с таки сталкивался.

Посмотрите лучше логи, когда идёт останов базы, нет ли ошибок при этом.

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 13:17:44
snorlov
kharkov_max писал(а):

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

shutdown -r now
Даже если использовать reboot ранее это проблем не вызывало ...
У меня похожая картина была, но только у меня тормозились виртуальные машинки.
Посмотри за сколько времени у тебя происходит reboot, добавь для верности еще несколько минут, ну и определи переменную в rc.conf

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

rcshutdown_timeout=

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-24 13:27:41
skeletor
Неправильный подход, сегодня это 10 минут, а завтра - 15. Можно конечно написать 100500 секунд, но ИМХО, это неправильно.

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-25 8:27:46
snorlov
skeletor писал(а):Неправильный подход, сегодня это 10 минут, а завтра - 15. Можно конечно написать 100500 секунд, но ИМХО, это неправильно.
Тогда надо править /etc/rc.shutdown либо сам shutdown переписываать...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2012-10-29 9:31:46
kharkov_max
Вообщем я не джедай ...

Нужные базы еще при падении восстановил на другой сервер, а "ненужные" мучал восстанавливал.
В результате 2х дневных ковыряний, забил и восстановил все из актуальных (целых) бекапов ...

А по поводу reboot спасибо что напомнили ... учту в будущем.
Но моя проблема с этим ни как не связана ...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2013-09-03 10:01:04
kharkov_max
Не хочу создавать новую тему т.к. смысл опять тот же.

Вообщем подвис сервер (хост), пришлось жестко выключить.
После запуска, вроде все поднялось, но postgre не запускается.

В massages при запуске постгре

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

cat ./messages
Sep  3 09:50:40 gateway postgres[27437]: [1-1] FATAL:  the database system is starting up
Sep  3 09:50:40 gateway postgres[27438]: [1-1] FATAL:  the database system is starting up
Sep  3 09:50:40 gateway postgres[27436]: [7-1] FATAL:  xlog flush request 256/10C0D600 is not satisfied --- flushed only to 56/7A4152A0
Sep  3 09:50:40 gateway postgres[27436]: [7-2] CONTEXT:  writing block 0 of relation base/28970697/30108769_vm
и в консоль

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

/usr/local/etc/rc.d/postgresql start
pg_ctl: could not start server
Examine the log output.
Собственно на всякий случай сразу сделал копию каталога БД, так же есть ночные бекапы.

Что дальше?
Научите поднимать БД postgresql после подобных проблем...
Не вариант опять базы из бекапов поднимать, хочется научится поломанное восстанавливать ...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2013-09-03 10:25:32
kharkov_max
Вообщем по своей

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2013-09-03 10:28:33
kharkov_max
Вообщем по своей проблеме нашел ответ тут

При ошибках в логах транзакций сервер postgresql не запускается.
Т.е. их необходимо почистить т.е. сделать pg_resetxlog.

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

pg_controldata /home/pgsql/data | grep "Latest"
Latest checkpoint location:           3/4000001C
Latest checkpoint's REDO location:    3/4000001C
Latest checkpoint's UNDO location:    3/4000001C
Latest checkpoint's TimeLineID:       1
Latest checkpoint's NextXID:          87283762
Latest checkpoint's NextOID:          517621
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0

Нам нужны строчки с NextXID и NextOID.

Переходим в пользователя от имени которого выполняется PGSQL (в моем случае FreeBSD, это pgsql)

# su pgsql

И теперь сбрасываем логи, указав в параметрах наши цифры из данных pg_control

$ pg_resetxlog -o 517621-x 87283762 -f  /home/pgsql/data/
Transaction log reset
Вроде сервер поднялся ...

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2013-09-03 11:01:54
kharkov_max
Мда, сервер запустился, процесс postgres что то активно дубасит.
Зайти на сервер postgresql не могу

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

su pgsql
$ psql template1
psql: FATAL:  the database system is shutting down
Так же не могу перезапустить постгре

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

/usr/local/etc/rc.d/postgresql restart
pg_ctl: server does not shut down
Что дальше?
Ждать пока postgres что то доделает?

Re: Срочно нужна помощь, упал posgresql

Добавлено: 2013-09-03 11:12:57
kharkov_max
Блин, не внимательно читал статью ...
Все, PGSQL теперь не помнит, что у него были когда-то логи транзакций и
спокойно запустится, начав создавать их по-новой.

Срочно нужна помощь, упал posgresql

Добавлено: 2019-12-10 13:42:11
poprygun
Тормозим службу (если есть), срубаем процесс postgres (скорее всего есть).
Выполняем

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

pg_resetxlog.exe -D ../Data -f
Суть в том, что в xLog у него остались данные, которые он считает незафикшенными.
И усиленно пытается их зафиксить.
Иногда на это требуются годы..
Комада выше отсекает эти повисшие данные, что позволяет стартонуть сервер с имеющимися в БД данными.
Может потерять часть незафикшенных данных, но БД заработает.