Deadlock condition

Восстановление базы Postgres, без дампа

Не так давно я пересел с линукса (Debian) на Microsoft (Windows 7), не спрашивайте зачем, так уж получилось на чу-чуть, потом пересяду обратно, вот, и там мне надо было установить БД PostgreSQL  8.3. Как положено скачал, установил, создал и начал работать, но  в один прекрасный утренний день включаю ПК, а там фатал эррор и на те черный экран, ну, я думаю понятное дело windows :)
Включаю открываю свой любимый IDE начинаю компилировать - connection refused...
Что за дела думаю, может сервер не завелся захожу в службы включаю Posgres server.. НЕТ, и я тут буквально вскипел, проект горит, дампа нету, ничего, не смертельно захожу в каталог вижу папку data, все ОК)

Ну и-с начнем, по умолчанию инсталяционный пакет базы устанавливается в каталог C:\Program Files\PostgreSQL 8.3 , если заглянем внутрь увидим для нас ценную папку data .  Что там находиться, перечислю основные папки и файлы:
1. папка base - в нем базы хранятся в зашифрованном виде, если откроем его то увидим папки с числовыми названиями как, 50034, 11510, 1, и т.д. их не надо трогать, а то небось попортите.
2. папка global - тут уже интереснее, в нем мы можем открыть  файл pg_database, что он из себя представляет:


"template1" 1 1663 379
"template0" 11510 1663 379
"postgres" 11511 1663 379
"test1" 16384 1663 379
"test2" 20319 1663 379

первый блок название базы, второй блог его OID (он соответствует с названиями папок в каталоге base ), третий блок шаблон не знаю (возможно id owner) и т.д, не суть важно, главное второй блок.
Файл pg_auth  - тут хранятся пароли для доступа с md5 шифрованием.

И самое главное при переносе папок в другой каталог PostgreSQL разных версии надо  учитывать права доступа папок, при установке базы в ОС windows он создает учетную запись с название postgres, и права доступа папок устанавливает под именем postgres.

P.S Если после все операции служба не запускается попробуйте следующее:
Найдите в списке служб PostgreSQL 8.3 (версии могут отличатся, у меня 8.3 версия)
Свойство->Вход в Систему->С системной учетной записью,  для начало пользователя postgres надо добавить в группу Администраторы, быстрее это делается через команду lusrmgr.msc (Run -> lusrmgr.msc), перезагрузка системы и должно получиться (надеюсь).

Совет:  Делайте почаще резервные копии базы, или создайте автобэкап!





Comments