2012-01-27 2 views
1

Это то, что происходит, когда PostgreSQL пытается начать после сбоя питания:Восстановление поврежденной базы данных PostgreSQL

2012-01-27 18:00:44 MSK LOG: database system was interrupted while in recovery at 2012-01-27 18:00:16 MSK 
2012-01-27 18:00:44 MSK HINT: This probably means that some data is corrupted and you will have to use the last backup for recovery. 
2012-01-27 18:00:44 MSK LOG: database system was not properly shut down; automatic recovery in progress 
2012-01-27 18:00:44 MSK LOG: consistent recovery state reached at 17/762C39B8 
2012-01-27 18:00:44 MSK LOG: redo starts at 17/761F6A40 
2012-01-27 18:00:44 MSK FATAL: invalid page header in block 311757 of relation base/26976/27977 
2012-01-27 18:00:44 MSK CONTEXT: xlog redo insert: rel 1663/26976/27977; tid 311757/44 
2012-01-27 18:00:44 MSK LOG: startup process (PID 392) exited with exit code 1 
2012-01-27 18:00:44 MSK LOG: aborting startup due to startup process failure 

Я знаю, я не повезло и есть команда, которую можно использовать для ремонта базы данных в этой ситуации. Не имеет значения, исчезли ли последние несколько часов транзакций, пока база данных станет последовательной.

Просьба сообщить мне, что делать в этой ситуации.

+0

Принадлежит dba.stackexchange.com – Aaron

ответ

3

В зависимости от того, насколько вы готовы отказаться от данных.

Вы можете установить zero_damaged_pages, чтобы в вашем конфигурационном файле postgresql.conf, а затем дать ему попробовать - но будет потери данных. Он может работать или может не работать.

Если вы хотите попробовать это, всегда начать с закрытия базы данных postgres и полной копии ее файловой системы (например, tar). Потому что это может быть наименее сломанная версия. Затем, как только вы его установите, сразу запустите pg_dump, протрите кластер и восстановите дамп. И абсолютно не запускайте новый кластер с zero_damaged_pages по умолчанию, не забудьте выключить его!

А затем настройте резервные копии восстановления Point-In-Time Recovery для нового кластера.

1

Восстановить от последней резервной копии, а затем повторно использовать журналы.

Если у вас нет последней резервной копии и всех журналов с тех пор, вы ввернуты.

+0

У меня нет резервной копии, но я знаю, что это возможно сделать в любом случае. –

Смежные вопросы