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

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-24 9:15:01

Добрый день.

Утром обнаружилось что 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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-24 9:28:21

Вот более детальный лог

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

>/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.

PYO
сержант
Сообщения: 185
Зарегистрирован: 2011-08-18 12:46:45

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

Непрочитанное сообщение PYO » 2012-10-24 9:50:57

Вот такая фигня есть - может поможет. Бэкап директории с базой обязателен.

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

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-24 10:19:55

Спасибо, вроде помогло ... http://wruslan.rubyclub.com.ua/blogs/tag/pg_resetxlog

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

PYO
сержант
Сообщения: 185
Зарегистрирован: 2011-08-18 12:46:45

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

Непрочитанное сообщение PYO » 2012-10-24 10:57:01

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

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-24 12:39:39

Продолжаю ...
После удаления логов сервер запустился и около часа нагружал процессор до 100%.
Видимо что то пересчитывал и т.д.

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

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

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

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

Аватара пользователя
skeletor
майор
Сообщения: 2501
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

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

Непрочитанное сообщение skeletor » 2012-10-24 12:50:12

Как делаете перезагрузку? Какой командой?
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-24 12:55:28

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

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

Аватара пользователя
skeletor
майор
Сообщения: 2501
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

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

Непрочитанное сообщение skeletor » 2012-10-24 13:05:36

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

Посмотрите лучше логи, когда идёт останов базы, нет ли ошибок при этом.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

snorlov
подполковник
Сообщения: 3815
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

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

Непрочитанное сообщение snorlov » 2012-10-24 13:17:44

kharkov_max писал(а):

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

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

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

rcshutdown_timeout=

Аватара пользователя
skeletor
майор
Сообщения: 2501
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

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

Непрочитанное сообщение skeletor » 2012-10-24 13:27:41

Неправильный подход, сегодня это 10 минут, а завтра - 15. Можно конечно написать 100500 секунд, но ИМХО, это неправильно.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

snorlov
подполковник
Сообщения: 3815
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

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

Непрочитанное сообщение snorlov » 2012-10-25 8:27:46

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

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2012-10-29 9:31:46

Вообщем я не джедай ...

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

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

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2013-09-03 10:01:04

Не хочу создавать новую тему т.к. смысл опять тот же.

Вообщем подвис сервер (хост), пришлось жестко выключить.
После запуска, вроде все поднялось, но 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 после подобных проблем...
Не вариант опять базы из бекапов поднимать, хочется научится поломанное восстанавливать ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2013-09-03 10:25:32

Вообщем по своей

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2013-09-03 10:28:33

Вообщем по своей проблеме нашел ответ тут

При ошибках в логах транзакций сервер 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
Вроде сервер поднялся ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2013-09-03 11:01:54

Мда, сервер запустился, процесс 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 что то доделает?

Аватара пользователя
kharkov_max
капитан
Сообщения: 1810
Зарегистрирован: 2008-10-03 14:56:40

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

Непрочитанное сообщение kharkov_max » 2013-09-03 11:12:57

Блин, не внимательно читал статью ...
Все, PGSQL теперь не помнит, что у него были когда-то логи транзакций и
спокойно запустится, начав создавать их по-новой.

poprygun
проходил мимо
Сообщения: 1
Зарегистрирован: 2019-12-10 13:41:02

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

Непрочитанное сообщение poprygun » 2019-12-10 13:42:11

Тормозим службу (если есть), срубаем процесс postgres (скорее всего есть).
Выполняем

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

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