Бывают случаи, когда файлы журнала транзакций (pg_xlog) могут быть повреждены или случайно удалены. В таком случае PGSQL не сможет работать и просто не запустится с подобной ошибкой:
Найти поврежденный xlog-файл вряд ли получится, поэтому выход один - очистить информацию в БД об используемых логах. Для этого есть штатная утилита pg_resetxlog
Но перед ее использованием надо узнать что именно вытирать из БД. Для этого делаем:
С этой информации нам интересны эти две строчки:
Переходим в пользователя от имени которого выполняется PGSQL (в моем случае, это pgsql)
И теперь сбрасываем логи, указав в параметрах наши цифры из данных pg_control
Все, PGSQL теперь не помнит, что у него были когда-то логи транзакций и спокойно запустится, начав создавать их по-новой.
http://www.mironovs.com/databases/vosstanovlenie-postgresql-posle-povrezhdeniya-fajlov-xlog.html