28 мая 2010 г.

PostgreSQL. Экстремальная реинкарнация данных.

Волею случая (а может быть благодаря хитрым хацкерам), стал я жертвой потери всех логов на сервере.
Наиболее чувствительным к потере оказался сервер postgresqsl - стартовать он в таких условиях категорически отказывался. В существующем кластере попросту испарились каталоги pg_log , pg_clog , pg_xlog. И как это ни странно бэкапов в виде дампов на сервере не велось :) . Слава богам, но сами данные остались не тронутыми. Перво на перво, что пришло в голову - сделать бэкап всего этого дела. Кроме того в сети наткнулся на подобные случаи и восстановил xlog. Осталось дело за малым - восстановить clog. Делается это следующим образом: генерируется файлик соответствующего имени заполненный нуликами с помошью утилиты dd:
dd bs=67108864 count=1 if=/dev/zero of=/database/postgres/pg_clog/0000
где bs - размер файла
of - имя файла лога
Имя файла лога можно посмотреть в логе постгриса при старте - он как раз не стартует из-за его отсутствия।
Вот и всё - сервер стартует !
Да сохранит вас священный бэкап ! :)

Комментариев нет: