Использование Debian свистящих, Postgresql 9.3Postgres не запускается после удаления pg_xlog файлов
Моя база данных пошли вниз, потому что раздел, в котором он хранит файлы WAL получили полный. Итак, я удалил все внутри ./pg_xlog/
, потому что я не знал, что они (да, невероятно глупо от меня). Теперь сервис Postgres не запускается, хотя проблема, по Syslog:
00000: could not open tablespace directory "pg_tblspc/16386/PG_9.3_201306121": File or directory not found
LOCAL: RelationCacheInitFileRemoveInDir, relcache.c:4895
00000: Primary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6543
00000: Secondary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6547
PANIC: XX000: could not locate a valid checkpoint record
LOCAL: StartupXLOG, xlog.c:5228
Я не совсем уверен в том, что проблема в том, что он не может найти правильный pg_tblspc или полное отсутствие контрольной точки WAL файлы. Фактический путь к тому, где хранятся базы данных, - /dados/PG_9.3_201306121
. Что я могу сделать, чтобы запустить сервис снова?
EDIT1: Хорошо, мне удалось вернуть эту информацию в режиме онлайн. Некоторые базы данных были повреждены. Мне удалось сделать DROPDB
два из них (они даже не могли подключиться к ним без принудительного перезапуска службы). Я попытался сделать это с другой, получившей повреждение, но ошибка снова была связана с xlog. Я пробовал сделать над ним чистое восстановление, но восстановление было неполным. Затем я создал новую базу данных и попытался восстановить старую резервную копию этой базы данных. Это также было неполным.
Теперь я не могу сбросить базы данных и не создавать новые, я всегда получаю ошибку xlog flush request not satisfied
. Я пробовал работать pg_resetxlog
, но, похоже, он ничего не делал. Другое дело, что ошибка показывает cannot write to block 1 of pg_tblspc/16385/PG_9.3_201306121/36596452/11773
, write error may be permanent
.
EDIT2: Часть проблемы выше была с этим 11773 файлом. Я переименовал его в 11773.corrupt, и теперь база данных позволяет мне создавать и снова отбрасывать.
Nonono, не продолжайте использовать его! Создайте резервную копию, закройте ее, переименуйте старый каталог данных, initdb, новый (или используйте обертку вашего пакета, но сначала установите его), а затем восстановите свои дампы в новом экземпляре PostgreSQL. –