Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Восстановление работы службы PostgreSQL. Восстановление списка баз postgreSQL  [new]
squidw
Member

Откуда:
Сообщений: 1
Исходные:
PostgreSQL 9.6.3-1.1C
Windows Server 2012 R2 Standard
Перестала запускаться служба PostgreSQL.

Лог PG: см вложенный файл.
При проверке журналов Windows обнаружены следующие ошибки в журнале "приложение":
1. Timed out waiting for server startup
2.
< 2017-10-02 10:31:28.985 MSK >FATAL: lock file "postmaster.pid" already exists
< 2017-10-02 10:31:28.985 MSK >HINT: Is another postmaster (PID 2340) running in data directory "D:/PostgreSQL/9.6.3-1.1C/data"?
3.
< 2017-10-02 10:25:58.084 MSK >LOG: redirecting log output to logging collector process
< 2017-10-02 10:25:58.084 MSK >HINT: Future log output will appear in directory "pg_log".
4.
2017-10-02 11:25:34 MSD LOG: loaded library "$libdir/plugins/plugin_debugger.dll"
5.
< 2017-10-02 10:21:29.995 MSK >LOG: database system is shut down
6.
< 2017-10-02 10:21:29.995 MSK >FATAL: could not create any TCP/IP sockets
7.
< 2017-10-02 10:21:29.995 MSK >WARNING: could not create listen socket for "*"
8.
< 2017-10-02 10:21:29.995 MSK >LOG: could not bind IPv4 socket: Only one usage of each socket address (protocol/network address/port) is normally permitted.
< 2017-10-02 10:21:29.995 MSK >HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.

Порядок моих действий:
1) Проверил "netstat –ano" порт был не занят другими приложениями, однако PostgreSQL запускался только в режиме приложения, а не службы. Завершил процессы PostgreSQL в диспетчере устройств и попытался запустить службу, всё равно ошибки.
2) удалил "postmaster.pid".
3) Переустановил PostgreSQL, проверил запуск службы – нормально работает, но у меня целевая “ d:\PostgreSQL\9.6.3-1.1C\data\” а не “c:\Program Files\PostgreSQL\9.6.3-1.1C\data\”.
4) Указал в реестре ImagePath путь до папки “ d:\PostgreSQL\9.6.3-1.1C\data\”. При попытке запустить PostgreSQL как службу те же ошибки.
5) Заменил в папке “ d:\PostgreSQL\9.6.3-1.1C\data\” всё кроме подпапки “bases” из “c:\Program Files\PostgreSQL\9.6.3-1.1C\data\”. Проверил - служба запускается , но в PGadmin у меня теперь только база postgres.

Вопросы:
1) Как подключить существующие базы с диска в PG? Как определить как называется или называлась база в PGadmin поскольку на диске база видна по OID и не понятно что за базу я подключу? Самый огромный косяк PG в отличии от MS базы физически на диске называются OID а не нормальным задаваемым именем. То есть у меня на диске штук так 15 баз и соотвественно тыкать наугад и смотреть что реально я подключил не вариант. Можно ли в файлах из папки "data" что лежит на диске посмотреть как называлась база когда она была видна в PGadmin?
2) Я сохранил полностью папку “ d:\PostgreSQL\9.6.3-1.1C\data\” отдельно в изначальном виде до всех моих
описанных манипуляций, возможно следует откатиться и выполнить другие варианты восстановления службы, либо уже на переустановленном PG восстановить список имен баз в PGadmin и соответствующие им физические каталоги баз?
3) Как в PG делать подключение базы? Опять же в MS это просто отключить/подключить *.mdf и *.ldf в два клика и база снова подключена с диска, а в PG я вижу только возможность создать новую базу?

К сообщению приложен файл (postgresql-Mon.log.txt - 3Kb) cкачать
3 окт 17, 02:41    [20837758]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление работы службы PostgreSQL. Восстановление списка баз postgreSQL  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 306
squidw
5) Заменил в папке “ d:\PostgreSQL\9.6.3-1.1C\data\” всё кроме подпапки “bases” из “c:\Program Files\PostgreSQL\9.6.3-1.1C\data\”. Проверил - служба запускается , но в PGadmin у меня теперь только база postgres.

Не надо так делать. Каталог базы нужен весь и в консистентном виде.

squidw
1) Как подключить существующие базы с диска в PG? Как определить как называется или называлась база в PGadmin поскольку на диске база видна по OID и не понятно что за базу я подключу? Самый огромный косяк PG в отличии от MS базы физически на диске называются OID а не нормальным задаваемым именем. То есть у меня на диске штук так 15 баз и соотвественно тыкать наугад и смотреть что реально я подключил не вариант. Можно ли в файлах из папки "data" что лежит на диске посмотреть как называлась база когда она была видна в PGadmin?

Или вы успешно восстанавливаете целиком кластер или вас вообще не волнует как назывались базы. Потому что без pg_catalog'а оно работать всё равно не будет.

squidw
2) Я сохранил полностью папку “ d:\PostgreSQL\9.6.3-1.1C\data\” отдельно в изначальном виде до всех моих
описанных манипуляций, возможно следует откатиться и выполнить другие варианты восстановления службы, либо уже на переустановленном PG восстановить список имен баз в PGadmin и соответствующие им физические каталоги баз?

Вам не нужны физические каталоги баз.
Ну а если всё совсем плохо - то база же вам всё равно не нужна была, раз не с бекапа восстанавливаете.

squidw
3) Как в PG делать подключение базы? Опять же в MS это просто отключить/подключить *.mdf и *.ldf в два клика и база снова подключена с диска, а в PG я вижу только возможность создать новую базу?

Поясните терминологию "подключение".

squidw
однако PostgreSQL запускался только в режиме приложения

Но запускался? Значит (на копии каталога, конечно) запустите, снимите бекап и штатно выключите. Проверьте, что сокеты никто не держит, проверьте что других запущенных процессов pg нет. Запустите вновь. Наблюдая за логом разумеется.
3 окт 17, 10:31    [20838169]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить