Имя: Пароль:
IT
Админ
PostgeSQL не стартует: pg_resetxlog: could not create pg_control file: File exists
,
0 zalexey
 
28.10.17
15:57
У клиента не стартует PostgeSQL. Как объяснет админ: отвалился шлейф системного диска, сервак отрубился. После перезапуска служба не стартует.

Пару раз такое было, когда они сервак перезагружали во время работы. Тогда помогали команды:
pg_controldata "E:\PG_SQL_DATA"
pg_resetxlog.exe -o 17008016 -x 19349186 -f "E:\PG_SQL_DATA"

сейчас после второй команды лог не очищается, а валится ошибка:
pg_resetxlog: could not create pg_control file: File exists

Что сделать можно? Пробовал удалять pg_control - только хуже становится.
1 rphosts
 
28.10.17
16:10
Как вообще на сервере могло произойти событие "отвалился шлейф системного диска"? У сервера корпус вообще в сборе или админа рожа просит кирпича?

Диск на ошибки проверяли? прав у учетки от которой запускается постгри хватает?
База поди на системном диске?

Бэкапов я так понимаю нет?
2 zalexey
 
28.10.17
16:28
"Сервер" под столом...

Права проверял, пробовал принудительно на всяк.случай обновить.

База на отдельном диске, не системном.

Бекапы естественно древние (месяц).
3 zalexey
 
28.10.17
16:30
Если pg_control  удалить, то при запуске pg_resetxlog.exe ругается, что не найден pg_control... а если они есть то ругается, что файл уже существует. что за бред? :)
4 rphosts
 
28.10.17
16:44
а если подсунуть этот файл пустой?
5 rphosts
 
28.10.17
16:45
ошибки на диске проверили (разумеется после выполнения полной копии каталога постгр хотя-бы)?
6 rphosts
 
28.10.17
16:51
да,надеюсь копии все каталогов до начала экспериментов сделали?
7 rphosts
 
28.10.17
16:51
8 zalexey
 
28.10.17
17:01
(5) ошибок нет.
Копии каталогов да сделали до начала манипуляций.
(7) спотыкаемая на запуске: postgres --single
запускаем от юзера постгри (не админа) появляется и сразу пропадает черное окно, вроде без сообщений.
9 rphosts
 
28.10.17
17:02
(8) ну запусти от админа
10 rphosts
 
28.10.17
17:05
>появляется и сразу пропадает черное окно, вроде без сообщений.

есть эвент вьювер и есть логи постгри
11 zalexey
 
28.10.17
17:06
(9) от админа он как раз не должен запускаться
Execution of PostgreSQL by a user with administrative permissions is not
permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromises. See the documentation for
more information on how to properly start the server.
12 zalexey
 
28.10.17
18:37
В итоге в --single mode заходит, reindex там выполняется. А как потом сделать dump? Нужно выйти из --single?

Тогда дамп не выполняется - просит запустить сервер, а он не запускается же...
Можно ли выгрузить dump из --single mode?
13 rphosts
 
29.10.17
02:57
(12) а самому попробовать?
14 zalexey
 
29.10.17
09:37
(13) пробовал стандартную команду вводить в single mode, ругается, что не знает такой. Нигде не нашел в каком формате там вводить команду для дампа.
15 rphosts
 
29.10.17
10:32
Спроси у специалистов по постгри, например тут
http://postgresql.ru.net/forum
16 zalexey
 
29.10.17
12:51
Удалось таки зайти в 1С. Методом тыка дали полный доступ ВСЕМ пользователям на папку с данными в итоге лог успешно сбросился и эта ошибка: pg_resetxlog: could not create pg_control file: File exists  ушла!

Хотя выполняли из под админа, и у пользователя постгр права на папку были и админа - почему ему прав на перезапись этого файла видимо не хватала.
17 rphosts
 
29.10.17
13:35
(16) про права написано было в (1)... но теперь уж точно пора настроить бэкап и сделать больно админу
18 craxx
 
29.10.17
13:43
(17) Судя по "отвалился шлейф" - админом ЭТО можно назвать с огромной натяжкой.
19 ansh15
 
29.10.17
15:22
(16) После дампа базы initdb делали?
В документации настоятельно рекомендуют https://postgrespro.ru/docs/postgresql/9.6/app-pgresetxlog.html
"После выполнения этой команды запуск сервера, скорее всего, будет возможен, однако стоит учитывать, что база данных может содержать несогласованные данные из-за транзакций, зафиксированных частично. Вы должны немедленно выгрузить данные, выполнить initdb, а затем восстановить данные. После этого проверьте целостность базы и внесите необходимые исправления."