The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Восстановление PostgreSQL после пов..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Восстановление PostgreSQL после пов..."  +/
Сообщение от auto_tips on 09-Июл-10, 16:50 
Бывают случаи, когда файлы журнала транзакций (pg_xlog) могут быть повреждены или случайно удалены.
В таком случае PostgreSQL не сможет работать и просто не запустится с подобной ошибкой:

   Jul 4 11:30:18 database postgres[92997]: [1-1] LOG: database system was interrupted at 2009-07-04 11:24:30 MSD
   Jul 4 11:30:18 database postgres[92997]: [2-1] LOG: could not open file "pg_xlog/000000010000031A00000027"
      (log file 794, segment 39): No such file or directory
   Jul 4 11:30:18 database postgres[92997]: [3-1] LOG: invalid primary checkpoint record
   Jul 4 11:30:18 database postgres[92997]: [4-1] LOG: could not open

Найти поврежденный xlog-файл вряд ли получится, поэтому выход один - очистить информацию в БД об используемых логах.
Для этого есть штатная утилита pg_resetxlog
Но перед ее использованием надо узнать что именно вытирать из БД. Для этого делаем:

   # pg_controldata /var/db/pgsql/| grep "Latest checkpoint"

   Latest checkpoint's REDO location: 31A/27FFF7B8
   Latest checkpoint's UNDO location: 0/0
   Latest checkpoint's TimeLineID: 1
   Latest checkpoint's NextXID: 0/2400998005
   Latest checkpoint's NextOID: 75014368

С этой информации нам интересны последние строчки с (NextXID, NextOID).

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

   # su pgsql

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

   $ pg_resetxlog -o 75014368 -x 2400998005 -f /var/db/pgsql/
Transaction log reset

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

PS: Хочется напомнить, что любые действия по восстановлению данных, требуют сохранения исходных данных
перед любыми действиями над ними. Ну и максмум осторожности :)

URL: http://blog.mironovs.com/2009/07/vosstanovlenie-postgresql-p.../
Обсуждается: http://www.opennet.me/tips/info/2120.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Восстановление PostgreSQL после повреждения файлов XLOG"  +/
Сообщение от Heman email on 09-Июл-10, 16:50 
Спасибо!

Вот ещё способ откудать брать магические цифры
http://www.issociate.de/board/goto/1339668/Re:_[PERFORM...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру