Postgresql не стартует windows

Невозможно запустить службу PostgreSQL как Windows

У меня было это в моих Windows услугах:

Он никогда не завершает выполнение. Но если бы я сделал это на dos shell:

Обратите внимание, что я только изменил «runservice» на «start», и он работает просто отлично.

11 ответов

Я работал с postgresql, и вдруг это прекратилось. Я остановил обслуживание, но когда я пытаюсь запустить его, никогда не могу этого сделать. service postgresql start FAIL у меня нет резервной копии, а с pg_dump это невозможно. pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f.

Какой самый чистый и надежный способ запустить приложение Windows как службу, не касаясь его кода? Пример использования: версия NorthScale 64-bit Windows memcached работает как универсальное приложение. Я хотел бы вставить его в Службу Windows 2003 или 2008, чтобы я мог start/stop/restart/etc.

Команда runservice может быть выполнена только менеджером службы

для того, чтобы исправить мою localhost windows 7 чтобы запустить сервер как сервис я использовал следующую команду, чтобы запустить данные

Затем проверил состояние на наличие ошибок

если вы получаете ошибку 1063, ее более чем вероятные разрешения, я выполнил следующую команду

затем повторно запустите start/status,, он показал, что все в порядке, но все равно Диспетчер служб не запускал службу

Итак, в Services — >postgresql — >options — >logon я установил вход в систему как локальную системную учетную запись вместо пользователя postgres, и вуаля это сработало

это произошло со мной, потому что я установил свой каталог данных так, чтобы он находился там, куда учетная запись пользователя postgres windows не имела доступа.

Я столкнулся с той же проблемой после перемещения вручную файлов данных базы данных (каталог PG_DATA) без воссоздания всех необходимых разрешений.

Вот как я решил свою проблему:

1. Проверьте права на старый каталог PG_DATA :

2. Проверьте права доступа на каталог PG_DATA :

3. Сравнение результатов 1. и 2.

Найдите различия между пользователями и / или разрешениями, а затем синхронизируйте их.

Nota: мне было проще использовать explorer для шага синхронизации, чем использовать cacls непосредственно из командной строки.

Некоторое время моя БД работает в командном окне, потому что я не знаю, как запустить ее как службу windows. Так как у меня есть загруженная версия файла zip. как я могу зарегистрировать команду pg_ctl как службу windows? Кстати, я использую следующую строку для запуска сервера: D:/Program.

Я установил postgreSQL двоичных файлов в 32-битной операционной системе windows 7; я могу запустить сервер с cmd, но не могу запустить его как службу windows. Это ошибка, которую я получаю, когда пытаюсь запустить службу вручную : The postgreSQL service on local computer started and then stopped.

У меня была эта проблема в Windows году после сбоя системы. Запуск первой команды показал недопустимые данные в C:\Program Files\PostgreSQL\9.1\data\postmaster.pid . Удаление этого файла сделало свое дело. Ссылка.

Если вы изменили pg_hba.conf , возможно, вы пропустили что-то в файле. Например, в этом файле должно быть CIDR после IP. Это должно быть как 192.168.1.100/32

Если вы забыли поставить 32, то сервер не перезагружается.

Исследование журналов запуска может быть ключом к разгадке. Для случая проблемы в pg_hba.conf вы могли бы увидеть что-то вроде этого:

Вам нужно проверить свои лог-файлы и журнал событий windows на предмет какого-то намека на то, в чем заключается проблема. Если там вообще ничего нет, вам нужно разбить что-то вроде Process Monitor и получить stacktrace того, где он висит.

У меня была эта проблема в прошлом, и она заключалась в том, что установщик неправильно настроил разрешения для пользователя, от имени которого должна была работать служба.

Я также столкнулся с этой проблемой с postgresql метанием и ошибкой после попытки инициализировать кластер баз данных. После анализа файлов журнала и запуска сценариев командной строки в течение 4 часов у меня есть решение для всех, кто сталкивается с этой проблемой для версий Windows.

Это не подробное описание того, почему это происходит. Я устанавливал odoo 10, 11, 12 и 13 много раз на бесчисленных клиентских серверах и системах windows, и это первый раз, когда я столкнулся с этой проблемой. Я не могу сказать, потому ли это, что у меня установлен MS VS Enterprise и Android Studio на этой машине или что-то еще. Но ниже приведен простой ответ о том, как это исправить, инициализировать кластер и создать файлы базы данных в папке data.

Откройте папку данных для postgresql. — для установки Odoo обычно это будет «C:\Program Files (x86)\Odoo 13.0\PostgreSQL», если только вы не выбрали другое место при установке.

Удалите любой или все файлы из этой папки — если нет, то вы получите ошибку при запуске initdb.exe

Щелкните правой кнопкой мыши папку данных и откройте ее свойства. Перейдите на вкладку Безопасность, а затем нажмите кнопку Дополнительно внизу.

Вам нужно изменить владельца этой папки на openpgsvc. Нажмите кнопку Изменить, введите openpgsvc и нажмите кнопку ОК. После этого установите флажок ниже, сказав, что вы хотите, чтобы это изменение также повлияло на контейнеры с этим контейнером.

Затем на вкладке разрешения нажмите кнопку добавить внизу. Вам нужно добавить openpgsvc в качестве пользователя и предоставить этому пользователю полные права. Нажмите кнопку Применить и ОК, чтобы закрыть все свойства папки.

Теперь вам нужно открыть cmd.exe-как только он откроется, мы вызовем initdb.exe и передадим ему некоторые значения.

Первый запуск установки и изменить рабочий каталог initdb.exe. Для меня, работающей с 13 на машины windows 10 место это..

«C:\Program Файлов (x86)\Odoo 13.0\PostgreSQL\bin»

  1. Есть одна переменная, которая также должна быть передана, чтобы сделать эту работу здесь-это список. НЕОБХОДИМО ВКЛЮЧИТЬ В ВЫЗОВ initdb.exe

Postgres Data Dir: «C:\Program Files (x86)\Odoo 13.0\PostgreSQL\data»

Конечный результат с параметром будет выглядеть так для моей установки:

«C:\Program Файлов (x86)\С 13.0\PostgreSQL\bin\initdb.exe» -Д «C:\Program Файлов (x86)\С 13.0\PostgreSQL\data»

  1. Нажмите Enter и дайте ему разорваться. Вывод этой команды должен выглядеть следующим образом. Cmd.exe запуск сценария initdb.exe

Установка PostgreSQL 10 на Windows 7 (да, часы тикают. ). Сначала я попробовал последнюю версию 11, которую полностью не удалось установить. не очень хороший знак для пользователей Windows. В любом случае.

Быстрый ответ: измените учетную запись в панели Windows Services с сетевой на локальную.

Подробности моего дела

Во время установки я создал/выбрал папку данных в папке профиля пользователя, потому что, очевидно, папка, предложенная по умолчанию в папке программы, не будет работать, и если бы она работала, то было бы очень хорошо поместить данные сюда (я не знаю, обычно ли это делается на Unix/Linux,, но для Windows это не разрешено в течение длительного времени).

В конце (при заполнении кластера данных) Я получил сообщение об ошибке:

Не удалось загрузить модули SQL в кластер баз данных

но установку удалось завершить. Я нашел две страницы о предыдущей ошибке, здесь и здесь , но они не имели отношения к моему делу, поэтому я просто запустил pgAdmin и слева «browser» увидел, что сервер не активен.

Я попытался запустить его отсюда (пришлось ввести основной пароль), но он сразу же снова стал неактивным. Поэтому я попытался использовать панель служб Windows, чтобы запустить «postgresql-x64-10», но без радости. Я скопировал команду с этой панели и вставил ее в консоль Windows (cmd.exe), где я, наконец, получил это

Поискав, я нашел этот связанный с этим вопрос и был убежден, что проблема заключается в разрешениях.

Решение работает для моего случая

В панели служб я изменил учетную запись, используемую для запуска службы, с сетевой службы на локальную систему, как это было предложено в комментарии @AlexanderRios.

Попробуйте сделать это на CMD run as Administrator (Добавление ваших параметров зависит от вашей версии)

откройте pgAdmin III, а затем в правой панели найдите сервер, затем просто щелкните правой кнопкой мыши и подключитесь, введите пароль. после подключения зайдите в браузер и обновите ODOO. Проблема решена.

См. изображение, чтобы получить лучшее понимание

Похожие вопросы:

Как запустить отключенную службу windows из командной строки? NET START Service не работает на отключенных сервисах

Я использую PostgreSQL DB в своем приложении, я использовал для создания специальной учетной записи пользователя windows для запуска службы DB. Теперь мне нужно запустить службу PostgreSQL под.

Как мы можем запустить / остановить службу Windows с Java? Например, я хотел бы запустить и остановить службу mysql Windows с Java. Если start/stop возможен, то можно ли узнать, успешно ли запущена.

Я работал с postgresql, и вдруг это прекратилось. Я остановил обслуживание, но когда я пытаюсь запустить его, никогда не могу этого сделать. service postgresql start FAIL у меня нет резервной копии.

Какой самый чистый и надежный способ запустить приложение Windows как службу, не касаясь его кода? Пример использования: версия NorthScale 64-bit Windows memcached работает как универсальное.

Некоторое время моя БД работает в командном окне, потому что я не знаю, как запустить ее как службу windows. Так как у меня есть загруженная версия файла zip. как я могу зарегистрировать команду.

Я установил postgreSQL двоичных файлов в 32-битной операционной системе windows 7; я могу запустить сервер с cmd, но не могу запустить его как службу windows. Это ошибка, которую я получаю, когда.

Я пытаюсь запустить свое приложение Windows services, но получаю следующую ошибку Не удается запустить службу из командной строки или отладчика. Служба Windows должна быть сначала установлена (с.

Я создал проект службы Windows в сообществе Visual Studio 2015 на своем ноутбуке Windows 10 (обновленном с Windows 7 и полностью обновленном), но мне не удалось успешно запустить свою службу.

Читайте также:  Как отменить восстановление системы windows 10 во время восстановления

Можно ли запустить/остановить службу windows через какую-то другую службу windows или ту же службу windows? У меня есть служба windows, работающая на нескольких PCs, так как я хочу обновлять эту.

Выселение. Приватизация. Перепланировка. Затопление. Ипотека. ИЖС

Postgresql не запускается. Не запускается служба PostgreSql. Что делать? Параметры, специфичные для Windows

Запуск и завершение PostgreSQL

В этом разделе описаны два способа запуска и завершения серверного процесса PostgreSQL. Первый способ основан на применении управляющей программы pg_ctl, которая должна одинаково работать на всех компьютерах независимо от операционной системы. Предполагается, что сценарий должен выполняться системным пользователем (то есть пользователем, которому принадлежит каталог данных), которому разрешено выполнение серверного процесса postmaster.

Во втором варианте применяется сценарий SysV, находящийся в подкаталоге contrib/start-scripts основного каталога PostgreSQL. Установка сценария SysV описана в главе 2. По умолчанию сценарий называется linux, поскольку он предназначен для запуска из стартового сценария Linux, хотя в инструкциях по установке он переименовывается в сценарий postgresql в каталоге запуска служб (например, /etc/rc.d/init.d).

Самое принципиальное различие между программой pg_ctl и сценарием SysV заключается в том, что программа pg_ctl выполняется пользователем, запускающим серверный процесс postmaster (например, postgres), а сценарий SysV должен запускаться пользователем root.

Сценарий службы не является специфическим для Linux. Он совместим с большинством систем, использующих стартовые сценарии SysV. Тем не менее, если вы не работаете в системе Linux, возможно, лучше выбрать pg_ctl.

В поставку PostgreSQL входит приложение pg_ctl, предназначенное для решения общих задач управления. В частности, оно позволяет запускать, завершать, перезапускать и получать информацию о состоянии PostgreSQL.

При запуске pg_ctl с ключом — -help выводится следующее описание:

pg_ctl start [-w] [-D каталог] [-s] [-1 файл] [-о «параметры»]

pg_ctl stop [-W] [-0 каталог] [-s] [-m режим_завершения]

pg_ctl restart [-w] [-D каталог] [-s] [-m режим_завершения] [-о «параметры»]

pg_ctl status [-D каталог]

Ключи приложения pg_ctl описаны ниже.

  • — w. Приложение pg_ctl ож] [дает завершения операции перед возвратом в режим командной строки. Параметр используется с операциями start или restart; по умолчанию приложение передает команду процессу postmaster и немедленно завершается.
  • -W. Приложение pg_ctl не ожидает завершения операции перед возвратом в режим командной строки. Параметр используется только с операцией stop; по умолчанию приложение передает команду процессу postmaster и ожидает ее выполнения перед завершением.
  • -D каталог. Каталог, содержащий файлы базы данных. Данный ключ не обязателен, поскольку информация может храниться в переменной среды PGDATA. Если переменная не существует, флаг -D является обязательным.
  • -s. Подавление вывода pg_ctl, кроме системных ошибок. Если флаг не задан, сведения о действиях с базой данных (или запуске/завершении в зависимости от выбранной операции) выводятся на экране пользователя, выполнившего команду.
  • -1 файл. Имя файла, в который записываются сведения об операциях с базой данных. Параметр используется только с операцией start.
  • -m режим_завершения. Режим завершения postmaster (конечно, этот параметр доступен только для операций stop и restart):
    • smart — перед завершением процесс postmaster ожидает отключения всех клиентов;
    • fast — процесс postmaster завершается, не ожидая отключения клиентов;
    • immediate — процесс postmaster прекращает работу еще быстрее, чем в режиме fast, без выполнения стандартных завершающих процедур, при следующем запуске база данных запускается в режиме восстановления (recovery) и проверяет целостность системы.
  • -о «параметры». Заданная строка параметров, заключенная в кавычки, напрямую передается процессу postmaster (например, флаг — i для активизации поддержки TCP/IP). Полный список флагов приведен в подразделе «Прямое обращение к postmaster» этого раздела.

Многие параметры конфигурации postmaster задаются в файле postgresql.conf, находящемся в каталоге данных PostgreSQL (например, /usr/local/pgsql/data). Эти параметры управляют более сложными техническими аспектами работы PostgreSQL. He изменяйте их, если не уверены в правильности своих действий.

Запуск PostgreSQL в приложении pg_ctl

Чтобы запустить серверный процесс PostgreSQL postmaster, передайте pg_ctl ключ start. Помните, что приложение pg_ctl должно запускаться пользователем postgres (или другим пользователем, которому принадлежит каталог данных PostgreSQL).

В листинге 9.1 приведен пример запуска postmaster с каталогом данных /usr/ local/pgsql/data. СУБД успешно запускается, выдает время последнего завершения работы базы данных и отладочную информацию, после чего пользователь postgres возвращается к приглашению командного интерпретатора.

Листинг 9.1. Запуск PostgreSQL в приложении pg_ctl

$ pg_ctl -D /usr/1oca!/pgsql/data start

DEBUG: database system was shut down at 2001-09-17 08:06:34 POT

DEBUG: Checkpoint record at (0. 1000524052)

DEBUG: Redo record at (0. 1000524052): Undo record at (0. 0): Shutdown TRUE

Завершение PostgreSQL в приложении pg_ctl

Серверный процесс PostgreSQL postmaster можно остановить той же программой pg_ctl, которой он был запущен. Приложение pg_ctl проверяет Наличие работающего процесса postmaster, и если команда stop была выдана владельцем работающего процесса (например, пользователем postgres), сервер PostgreSQL прекращает работу.

Существуют три режима завершения серверного процесса PostgreSQL: интеллектуальный (smart), ускоренный (fast) и немедленный (immediate). Режим завершения задается ключом -т при вызове pg_ctl.

В интеллектуальном режиме (используемом по умолчанию) PostgreSQL перед завершением ждет, пока все клиенты отключатся от сервера. В ускоренном режиме PostgreSQL просто начинает стандартную процедуру завершения, не проверяя состояние клиентских подключений. В немедленном режиме стандартная процедура завершения пропускается, и при последующем перезапуске система должна пройти через режим восстановления.

Никогда не завершайте процесс postmaster командой kill -9 (kill -KILL), что приводит к потере или порче данных.

В листинге 9.2 сценарий pg_ctl завершает процесс postmaster в ускоренном режиме. Процесс postmaster прекращает работу, не дожидаясь отключения клиентов.

Листинг 9.2. Завершение PostgreSQL в приложении pg_ctl

$ pg_ctl -D /usr/local/pgsql/data stop -m fast

Fast Shutdown request at Mon Sep 17 09:23:39 2001 DEBUG: shutting down

waiting for postmaster to shut down.

DEBUG: database system is shut down

Завершение в режиме smart эквивалентно команде kil I -TERM для процесса postmaster. Режим fast эквивалентен команде kill -INT, а аналогом режима immediate является команда kill -QUIT.

Перезапуск PostgreSQL в приложении pg_ctl

Последовательные вызовы pg_ctl с операциями stop и start можно заметить одним вызовом с операцией restart. В команде также может присутствовать флаг -т, определяющий режим завершения.

Параметры, использованные при последнем запуске PostgreSQL, хранятся во временном файле postmaster.opts в каталоге данных PostgreSQL (переменная PGDATA). Файл используется при вызове pg_ctl с аргументом restart и обеспечивает сохранение предыдущих настроек при перезапуске. Не размещайте собственные параметры конфигурации в файле postmaster.opts, поскольку они будут стерты при запуске pg_ctl с аргументом start.

В листинге 9.3 приведен пример перезапуска сервера базы данных booktown пользователем postgres.

Листинг 9.3. Перезапуск PostgreSQL в приложении pg_ctl

$ pg_ctl -D /usr/1oca!/pgsql/data restart

Smart Shutdown request at Mon Sep 17 08:33:51 2001

DEBUG: shutting down

waiting for postmaster to shut down. DEBUG: database system is shut down

postmaster successfully shut down

postmaster successfully started

DEBUG: database system was shut down at 2001-09-17 08:33:53 PDT

DEBUG: Checkpoint record at (0. 1000524116)

DEBUG: Redo record at (0. 1000524116): Undo record at (0. 0): Shutdown TRUE

DEBUG: NextTransactionld: 815832: NextOid: 3628113

DEBUG: database system is in production state

$ pg_ctl -D /usr/local/pgsql/data status

pg_ctl: postmaster is running (pid: 11575)

Command line was:

/usr/local/pgsql/bin/postmaster «-D» «/usr/local/pgsql/data»

Использование переменной PGDATA заметно сокращает объем команды. Если вы всегда работаете с одним каталогом данных, присвойте значение переменной PGDATA (например, в файле /etc/profile, как рекомендовалось в главе 2), и вам не придется использовать ключ -D.

Это сообщение предназначено прежде всего для меня лично и для нашей службы поддержки, т.к. проблема подобная описанной ниже происходит с завидной периодичностью и нужно помнить основные шаги по ее решению.

Итак, история начинается с того, что мне 30 декабря в 11-30 звонят с сообщением о том, что у одного из наших клиентов не запускается наша система, поскольку не может подключиться к базе данных (в качестве СУБД у нас используется PostgreSql версии 8.1). Люди объясняют это тем, что час назад вырубило свет и компьютер вырубился некорректно, а после включения – все перестало работать:)

Хорошие пользователи нашей системы знают, где находится кнопка пуск и знают, что в системе не двое часиков “одни с цифрами, а другие песочные”. Поэтому единственное, что удалось сделать по телефону, так это попытаться руками запустить службу СУБД, результат – служба таки не запускается. Пришлось пробрасывать на тот компьютер интернет (на компьютерах, где установлена наша система интернета быть не должно) для возможности удаленного подключения.

После подключения к удаленному компьютеру я попытался запустить службу и получил следующее сообщение: “Служба PostgreSql Database Server 8.1” на “Локальный компьютер” была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если им нечего делать, например, служба журналов и оповещений производительности”. Мда…

Проблема в том, что на тот момент это была единственная доступная информация… Логи PostgreSql пусты, записей в них никаких, в системных логах – тоже пустота.

Отладка служб – процесс не простой, поэтому многие разработчики предусматривают механизмы запуска приложения-службы, как обыкновенного консольного приложения с помощью ключей командной строки. И PostgreSql в этом плане – не исключение; для запуска нужно использовать следующую команду (Hint: эту команду можно запустить только из под неадминистративного пользователя системы, правда, если вы об этом забудете, то PostgreSql очень быстро вам об этом напомнит):

Запускаем, и смотрим на сообщение об ошибке. В моем случае это сообщение звучало примерно так:

FATAL — bogus data in lock file «postmaster.pid»

Безусловно, мне повезло, проблема оказалась поправимой. Почему-то указанный файл оказался пустым, и мне понадобилось скопировать его содержимое из рабочего экземпляра СУБД, что не составило особого труда.

Мораль этого сообщения в том, что если база легла, или произошли какие-то другие проблемы с системой, то прежде чем переустанавливать СУБД (или систему целиком) и терять при этом все данные, нужно хотя бы попытаться выяснить в чем проблема, возможно, есть все шансы, что вам удастся восстановить работоспособность не такими радикальными способами.

Читайте также:  Что такое windows ultimate extras

З.Ы. Всех с наступающим Новым Годом и пожелания того, чтобы ваши системы были стабильными и надежными и не портили ваш сон, но даже если какие-то проблемы и возникали, то у вас всегда были наготове варианты, как с этой ситуацией справиться.

pg_ctl init [ -s ] [ -D datadir ] [ -o initdb-options ]

pg_ctl start [ -w ] [ -t секунды ] [ -s ] [ -D datadir ] [ -l имя_файла ] [ -o параметры ] [ -p path ] [ -c ]

pg_ctl stop [ -W ] [ -t секунды ] [ -s ] [ -D datadir ] [ -m s | f | i ]

pg_ctl restart [ -w ] [ -t секунды ] [ -s ] [ -D datadir ] [ -c ] [ -m s | f | i ] [ -o параметры ]

pg_ctl reload [ -s ] [ -D datadir ]

pg_ctl status [ -D datadir ]

pg_ctl promote [ -s ] [ -D datadir ]

pg_ctl kill signal_name process_id

pg_ctl register [ -N servicename ] [ -U имя_пользователя ] [ -P пароль ] [ -D datadir ] [ -S a | d ] [ -w ] [ -t секунды ] [ -s ] [ -o параметры ]

pg_ctl unregister [ -N servicename ]

Сервер запускается в режиме start . Процесс работает в фоновом режиме, а стандартный ввод связывается с /dev/null (или nul под управлением Windows). По умолчанию в Unix-подобных системах вывод и ошибки сервера пишутся в устройство стандартного вывода (не ошибок) pg_ctl . Вывод pg_ctl следует перенаправить в файл или процесс, например, приложение ротации журналов rotatelogs ; в ином случае, postgres будет писать вывод в управляющий терминал (в фоновом режиме) и останется в группе процессов оболочки. В Windows вывод и ошибки сервера по умолчанию перенаправляются в терминал. Это поведение можно изменить и направить вывод сервера в файл, добавив ключ -l . Мы рекомендуем использовать ключ -l или перенаправлять вывод.

Чтобы остановить сервер, используется stop . Остановить можно в трёх режимах, задаваемых флагом -m . По умолчанию используется режим «Smart» , который ожидает завершения всех активных клиентских соединений и удалённых процессов резервирования. Если сервер работает в режиме горячего резервирования, то восстановление и потоковая репликация будут остановлены, как только все клиентские сессии завершаться. Режим «Fast» не ожидает закрытия клиентских сессий и прерывает удалённые процессы резервирования. Все активные транзакции откатываются, а клиенты принудительно отсоединяются, после чего сервер останавливается. Режим «Immediate» незамедлительно прерывает все процессы и останавливает сервер, что приводит на следующем старте к необходимости восстановления после сбоя.

Для остановки с последующим стартом сервера используется restart . При этом доступны флаги команды postgres . restart может не отработать, если при старте сервера в командной строке был указан относительный путь к каталогу хранения данных.

Чтобы перечитать конфигурацию (postgresql.conf , pg_hba.conf и т. д.), используется reload , при этом процесс postgres получает системный сигнал SIGHUP . Это позволяет применить изменения без полного рестарта сервера.

Чтобы проверить статус кластера, используется status . Если кластер запущен, то будет выведен PID процесса, а также команда с использованными при запуске аргументами. Если кластер остановлен, то процесс вернёт статус завершения 3. Если не указан каталог хранения данных, то процесс вернёт статус завершения 4.

Чтобы перевести резервный сервер в режим основного, используется promote . При этом сервер прекращает работу в режиме восстановления и начинает работать в режиме чтения-записи.

Чтобы послать сигнал процессу, используется kill . Это особенно применимо в среде Microsoft Windows , которая не имеет в оснастке команды kill . Чтобы посмотреть список доступных сигналов, обратитесь к справке —help .

Для регистрации в качестве системной службы под управлением Microsoft Windows , используется register . Флаг -S устанавливает режим запуска службы, либо «auto» (на старте ОС), либо «demand» (по запросу).

Чтобы удалить зарегистрированную службу в Microsoft Windows , используется unregister .

Параметры

На платформах, где это поддерживается, сервер будет пытаться фиксировать снимки памяти при авариях. Это позволяет диагностировать и предотвращать потенциальные проблемы в будущем. -D datadir
—pgdata datadir

Указывает размещение конфигурационных файлов кластера. Если не указано, используется значение переменной окружения PGDATA . -l имя_файла
—log имя_файла

Выводит данные журнала в filename . Файл создаётся, если он ещё не существует. При этом umask выставляется в 077, что предотвращает доступ других пользователей к этому файлу. -m режим
—mode режим

Устанавливает режим остановки кластера. mode принимает значения smart , fast , или immediate , либо по первой букве каждого из доступных значений, например, s . Если флаг опущен, то используется smart . -o параметры

Указывает флаги, которые будут переданы в postgres .

Значение необходимо обрамлять одинарными или двойными кавычками, чтобы гарантировать целостность группы. -o initdb-options

Указывает флаги, которые будут переданы в initdb .

Значение необходимо обрамлять одинарными или двойными кавычками, чтобы гарантировать целостность группы. -p path

Указывает размещение приложения postgres . По умолчанию используется тот же путь, по которому находится pg_ctl , либо, если это не удалось, то берётся путь инсталляции. Применять этот параметр чаще всего необходимости нет, кроме нестандартных ситуаций.

init принимает параметры аналогично initdb . -s
—silent

Выводить лишь ошибки, без сообщений информационного характера. -t
—timeout

Максимальное время (в секундах) ожидания запуска или остановки сервера. По умолчанию это 60 секунд. -V
—version

Выводит версию pg_ctl и прерывает выполнение. -w

Ожидает завершения запуска или остановки. Это является режимом по умолчанию для операций остановки, но не запуска. На этапе запуска pg_ctl непрерывно пытается подключиться к серверу. На этапе остановки pg_ctl проверяет наличие PID файла. Этот параметр позволяет установить ввод контрольного слова для SSL на старте сервера. pg_ctl возвращает код завершения, основываясь на результате операций запуска или остановки. -W

Игнорировать ожидание завершения запуска или остановки сервера. Это поведение используется по умолчанию для режимов запуска и повторного запуска. -?
—help

Вывести справку по команде pg_ctl и прервать выполнение.

Параметры, специфичные для Windows

Имя регистрируемой системной службы. Оно используется в качестве системного и отображаемого значения. -P пароль

Пароль пользователя, стартующего службу. -S тип запуска

Тип запуска системной службы. Может принимать значения: auto , или demand , либо быть представлен первой буквой названия каждого приведённого значения. По умолчанию используется auto . -U имя_пользователя

Имя пользователя, от имени которого будут запущена служба. Для доменных пользователей необходимо использовать нотацию DOMAIN\username .

Вопрос: Не стартует служба PostgreSQL

Windows Server 2012
PostgreSQL Database Server 9.4.2-1.1C(x64)
На сервере с середины апреля крутились 2 базы 1С
Файл postgresql.conf был отредактирован по рекомендациям с сайта 1с сообразно характеристикам сервера.

Со слов админа, вчера штатно выключили, потом включили.
Служба не стартует, в логах вот что:

2016-05-06 10:05:40 GMT LOG: database system was interrupted; last known up at 2016-05-06 09:59:33 GMT
2016-05-06 10:05:40 GMT LOG: database system was not properly shut down; automatic recovery in progress
2016-05-06 10:05:40 GMT LOG: record with zero length at 6/C7F6AAA8
2016-05-06 10:05:40 GMT LOG: redo is not required
2016-05-06 10:05:40 GMT FATAL: could not access status of transaction 1262199
2016-05-06 10:05:40 GMT DETAIL: Could not open file «pg_clog/0001»: No such file or directory.
2016-05-06 10:05:40 GMT LOG: startup process (PID 24696) exited with exit code 1
2016-05-06 10:05:40 GMT

Служба работает под пользователем USR1CV8, права у него на папку Data полные
Архивы есть недельной давности.

тогда базы у вас нет.

Вопрос: postgresql — после переноса каталога data служба не запускается

Доброе время суток. Имеется вышеуказанная СУБД, каталог данных установлен по пути: /var/lib/pgsql/9.3/data
Нужно перенести каталог данных в расположение /postgre_dbs/data . Мои действия:
1. Останавливаю PostGreSQL
2. Копирую папку data со всеми подпапками, и записями прав на папки и файлы (cp -p -R) в /postgre_dbs
3. В файле /var/lib/pgsql/9.3/data пишу строку:
data_directory = «/postgre_dbs/data/»
4. Пробую запустить службу postgresql — получаю FAILED
5. смотрю pgstartup.log — там строки:
ВАЖНО: файл блокировки «postmaster.pid» уже существует
ПОДСКАЗКА: Другой экземпляр postmaster (PID 1633) работает с каталогом данных «/postgre_dbs/data»?

В чем причина проблемы, как ее решить?

Вы идете четко по плану опытных товарищей:

Как запускается служба PostgreSQL?
Знает ли она, что БД находится в другом каталоге?

Вопрос: Не стартует служба postgree

2016-04-27 13:28:46 IRKT LOG: database system was interrupted; last known up at 2016-04-27 13:16:51 IRKT
2016-04-27 13:28:46 IRKT LOG: invalid primary checkpoint record
2016-04-27 13:28:46 IRKT LOG: invalid secondary checkpoint link in control file
2016-04-27 13:28:46 IRKT PANIC: could not locate a valid checkpoint record
2016-04-27 13:28:46 IRKT LOG: startup process (PID 8912) exited with exit code 3
2016-04-27 13:28:46 IRKT LOG: aborting startup due to startup process failure

Из поисков в интернете попробовал выполнить pg_controldata

pg_control version number: 942
Catalog version number: 201409291
Database system identifier: 6254454928233336196
Database cluster state: in production
pg_control last modified: 27.04.2016 9:04:41
Latest checkpoint location: DC/223641B8
Prior checkpoint location: DC/1F301DA8
Latest checkpoint»s REDO location: DC/213D1950
Latest checkpoint»s REDO WAL file: 00000001000000DC00000021
Latest checkpoint»s TimeLineID: 1
Latest checkpoint»s PrevTimeLineID: 1
Latest checkpoint»s full_page_writes: on
Latest checkpoint»s NextXID: 0/2148384
Latest checkpoint»s NextOID: 4123902
Latest checkpoint»s NextMultiXactId: 1
Latest checkpoint»s NextMultiOffset: 0
Latest checkpoint»s oldestXID: 668
Latest checkpoint»s oldestXID»s DB: 1
Latest checkpoint»s oldestActiveXID: 0
Latest checkpoint»s oldestMultiXid: 1
Latest checkpoint»s oldestMulti»s DB: 16402
Time of latest checkpoint: 27.04.2016 9:04:31
Fake LSN counter for unlogged rels: 0/1
Minimum recovery ending location: 0/0
Min recovery ending loc»s timeline: 0
Backup start location: 0/0
Backup end location: 0/0
End-of-backup record required: no
Current wal_level setting: minimal
Current wal_log_hints setting: off
Current max_connections setting: 200
Current max_worker_processes setting: 8
Current max_prepared_xacts setting: 0
Current max_locks_per_xact setting: 64
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1996
Size of a large-object chunk: 2048
Date/time type storage: 64-bit integers
Float4 argument passing: by value
Float8 argument passing: by reference
Data page checksum version: 0

PostgreSQL\9.4.2-1.1C\bin>pg_resetxlog -o 4123902 -x 2148384 -f e:\pql
pg_resetxlog: could not create pg_control file: File exists

Как устранить проблему с pg_resetxlog: could not create pg_control file: File exists?

Попробуйте добавить ключ
-P disable system indexes
(но скорее всего у вас не только этот индекс слетел).

Читайте также:  Errors after including windows h

Если у вас нет ни реплики ни backup — я бы сказал что шансов восстановить базу у вас около 0.
Восстановить так чтобы 1C заработал — еще меньше.

PS: а как вы такого добились и какое значение fsync было в конфиге?

Вопрос: portable postgresql doesn»t listen

Выполняю запуск портативного postgre.
Каталог — копия работающего postgresql 9.3
ОС — Windows 7
На компьютере был установлен сервер postgresql 9.3, но в момент запуска poratble postgresql процесс был остановлен, процессы postgress в диспетчере задач windows завершены

Для запуска в каталог postgresql добавлен командный файл:
ECHO ON for %%i in (*.bat) do SET CD=%%

dpi REM Устанавливаем переменные окружения для запуска PostgreSQL SET PATH=»%CD%bin» ;%PATH% SET PGDATA=%CD%data SET PGDATABASE=postgres SET PGUSER=postgres SET PGPORT=5439 SET PGLOCALEDIR=%CD%share \locale REM %CD%bin\initdb -U postgres -A trust %CD%bin\pg_ctl -D %CD%data -l logfile start ECHO pause %CD%\bin\pg_ctl -D %CD%data stop

Сервер стартует. Выдаются сообщения:
. F:\Temp\9.3 \bin\pg_ctl -D F:\Temp\9.3 \data -l logfile start Сервер запускается ECHO «Press Enter to Stop PostgreSQL Server» pause

Пытаюсь подключиться к серверу из pgAdmin III
Свойства подключения:
Имя: TempPostgre Хост: localhost Служба: пустая строка Обслуживание DB: postgres Имя пользователя:postgres Пароль:X (Тот, который был для базы-прототипа)

Получаю сообщение:
Server doesn»t listen
The server doesn»t accept conections: connections library reports

При подключении к серверу пробовал в адресе хоста: 10.10.10.121 (ip компьютера в локальной сети). Результат тот же.

Ответ: Проблема была в файле postgresql.conf, который находится в каталоге данных
После установки в этом файле
port = 5439 # (change requires restart)

Вопрос: ошибка 1053 при запуске postgresql

заранее извиняюсь, если тема создана не в том разделе.

win10 x64
postgresql 8.4

автоматически служба не запускается. если принудительно — вылазит ошибка 1053:

антивирус нод32. брандмауэр отключил (хотя служба была в исключениях):

сейчас она в исключениях брандмауэра виндовс:

postgresql использую для работы holdemmanager2. поэтому из-за не запуска postgresql не запускается и holdemmanager2.
помогите пожалуйста. перелопатил уже полсети — ничего не помогает.

при этом в службах постгри не в статусе «running»

Вопрос: Репликация данных PostgreSQL — Windows Server 2008

Есть сервер БД, с которым работают клиенты, и резервный сервер, на который надо настроить репликацию с основной базы данных.
В моём случае используется PostgreSQL 9.2.1, который установлен на обоих серверах

сделал по этой инструкции не работает

при настройке конфигурационных файлов (как указано в статье) и при добавлении файла recovery.conf база перестает стартовать.

Нужна ваша помощь.

если база не стартует — в логах обязательно будет написано почему. нужно начинать с них, прежде чем гадать.

Вопрос: Postgresql 9.5 не запускается автоматически после сбоя питания

Добрый день!
Помогите, пожалуйста, разобраться со следующей проблемой:
На десктопе под Debian 8.2 установлена тестовая БД PostgreSQL (9.5.3). Настройки БД в postgresql.conf — минимальные — listen_adress, port и т.п. Остально по умолчанию. Файл прилагаю.
Достаточно часто отключают электроэнергию, упса нет.

После появления питания СУБД сама не запускается — лог привожу ниже

автор
2016-08-04 19:13:30 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:30 MSK СООБЩЕНИЕ: работа системы БД была прервана; последний момент работы: 2016-08-04 16:15:49 MSK
2016-08-04 19:13:30 MSK [н/д]@[н/д] СООБЩЕНИЕ: неполный стартовый пакет
2016-08-04 19:13:31 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:31 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:32 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:32 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:33 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:33 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:34 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:34 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:35 MSK [email protected] ВАЖНО: система баз данных запускается
2016-08-04 19:13:35 MSK [email protected] ВАЖНО: система баз данных запускается

2016-08-04 19:13:45 MSK СООБЩЕНИЕ: система БД была остановлена нештатно; производится автоматическое восстановление
2016-08-04 19:13:45 MSK СООБЩЕНИЕ: неверная длина записи по смещению 1/9F46638
2016-08-04 19:13:45 MSK СООБЩЕНИЕ: данные REDO не требуются
2016-08-04 19:13:46 MSK СООБЩЕНИЕ: Защита от наложения мультитранзакций сейчас включена
2016-08-04 19:13:46 MSK СООБЩЕНИЕ: выключение
2016-08-04 19:13:46 MSK СООБЩЕНИЕ: система БД выключена

После этого либо запуском вручную либо после перезагрузки компа система стартует нормально.
Как можно обеспечить, чтобы после внештатного выключения в случае успешного восстановления система запускалась автоматически?

К сообщению приложен файл (postgresql.conf — 21Kb)

я подозреваю что настройки systemd виноваты. после какого-то таймаута он выключает базу штатно:

2016-08-04 19:13:35 MSK СООБЩЕНИЕ: получен запрос на «вежливое» выключение

посмотрите, какие настройки в /usr/lib/systemd/system/postgresql-9.5.service файле.

Вопрос: Не стартует PostgreSQL

Добрый день
Выпал Postgresql и больше не запускается, в логах

LOG: could not link file «pg_xlog/xlogtemp.79221» to «pg_xlog/00000001000000000000004F» (initialization of log file 0, segment 79): Operation not permitted

LOG: startup process (PID 79221) exited with exit code 1
LOG: aborting startup due to startup process failure
LOG: loaded library «online_analyze»
LOG: loaded library «plantuner»
LOG: database system was shut down at 2015-04-09 09:11:44 EEST
LOG: could not link file «pg_xlog/xlogtemp.79344» to «pg_xlog/00000001000000000000004F» (initialization of log file 0, segment 79): Operation not permitted
FATAL: could not open file «pg_xlog/00000001000000000000004F» (log file 0, segment 79): No such file or directory
LOG: startup process (PID 79344) exited with exit code 1
LOG: aborting startup due to startup process failure

автор

Зашел в эту папку и действительно нету файла 00000001000000000000004F.

Не могу понять почему так получилось. Работало, а потом хлоп и все, не работает.

Как решить эту проблему, как запустить Постгрес?

Ответ: Dark Smoke,

Наиболее подозрительно смотрится:

автор
«LOG: could not link file «pg_xlog/xlogtemp.79344» to «pg_xlog/00000001000000000000004F» (initialization of log file 0, segment 79): Operation not permitted»

Обычно это следы вмешательства дурного антивируса в работу базы (или с правами у вас что то не так стало но само посебе нетак с правами не становится).
Директория базы должна быть исключена из списка мест куда антивирус может заходить.

Вопрос: Автозапуск PostgreSQL 9.6 в Debian 8

Приветствую вас!
Столкнулся с проблемой старта PostgreSQL 9.6 при загрузке ОС Debian 8.
Автозапуск пытаюсь сделать собственным скриптом написанным в соответствии с официальной документацией по СУБД (пп. 18.3 Запуск сервера БД, стр. 565)

Содержимое файла \etc\init.d\postgresql:
#!/bin/sh -e ### BEGIN INIT INFO # Provides: postgresql # Required-Start: $local_fs $remote_fs $network $time # Required-Stop: $local_fs $remote_fs $network $time # Should-Start: $syslog # Should-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: PostgreSQL RDBMS server ### END INIT INFO PG_PATH=»/usr/lib/postgresql/9.6/bin» PGDATA= PATH=/bin:/usr/bin:/sbin:/usr/sbin DESC=»postgresql daemon» NAME=postgresql DAEMON=/usr/lib/postgresql/9.6 /bin/postgresql PIDFILE=»$PGDATA/postmaster.pid» SCRIPTNAME=/etc/init.d/»$NAME» case «$1» in start) su — postgres -c «$PG_PATH/pg_ctl start -D $PGDATA -l $PGDATA/log_file.txt» exit 0 ;; stop|status) su — postgres -c «$PG_PATH/pg_ctl $1» ;; kill) su — postgres -c «$PG_PATH/pg_ctl stop -m fast» ;; reboot) $0 kill $0 start ;; *) echo «Используйте: $0 » exit 1 ;; esac exit 0
При запуске из консоли скрипт работает корректно
[email protected]:

# /etc/init.d/postgresql start сервер запускается [email protected]:

# /etc/init.d/postgresql status pg_ctl: сервер работает (PID: 759 ) /usr/lib/postgresql/9.6 /bin/postgres «-D» «/var/lib/postgresql/9.6/main» [email protected]:

# /etc/init.d/postgresql stop ожидание завершения работы сервера. готово сервер остановлен [email protected]:

#
На скрипт есть ссылки в:
/etc/rc0.d -> K02postgresql
/etc/rc1.d -> K02postgresql
/etc/rc2.d -> S02postgresql
/etc/rc3.d -> S02postgresql
/etc/rc4.d -> S02postgresql
/etc/rc5.d -> S02postgresql
/etc/rc6.d -> K02postgresql

Пытался разобраться со стандартным скриптом автозапуска PostgeSQL, но не осилил.
Тем более, что в мануале по postgresql рекомендуется делать именно так.
Уже отчаялся искать ответ в Инете. Прошу конкретного совета.

Ответ: Спасибо Ёш!
Повезло, наткнулся на хорошую статью на Хабрахабре

По ней:
1. В /etc/systemd/system/multi-user.target.wants нашел ссылку на unit postgresql.service
2. Переписал его следующим образом
Description=PostgreSQL RDBMS Type=forking PIDFile=/var/lib/postgresql/9.6 /main/postmaster.pid WorkingDirectory=/usr/lib/postgresql/9.6 /bin User=postgres Group=postgres Environment=PGDATA=/var/lib/postgresql/9.6 /main OOMScoreAdjust=-100 ExecStart=/usr/lib/postgresql/9.6 /bin/pg_ctl start -D /var/lib/postgresql/9.6/main -l /var/lib/postgresql/9.6/main/log_file.txt ExecStop=/usr/lib/postgresql/9.6 /bin/pg_ctl stop -m fast ExecReload=/usr/lib/postgresql/9.6 /bin/pg_ctl restart -D /var/lib/postgresql/9.6/main TimeoutSec=60 #Restart=always #ExecStart=/bin/true #ExecReload=/bin/true #RemainAfterExit=on WantedBy=multi-user.target

К стати, здесь используется решение, которое позволяет препятствовать агрессивной работе OOM killer о которой пишется в мануале по postgres. О нем говорится что его невозможно остановить, но оказывается что это возможно, указав OOMScoreAdjust=-1000
OOM killer — механизм уничтожения процессов при нехватке памяти, который был реализован на уровне ядра, начиная с Linux 2.6 и новее.

Ещё возможно раскомментировать строчку #Restart=always.
В таком случае будет отслеживаться наличие указанного PIDFile и при его отсутствии производиться попытка запуска postgresql
Можно считать это аналогом скрипта из моего предшествующего поста, но с реализацией на уровне системы))

После изменения unit-файла postgresql.service поочередно выполнил команды для переустановки и проверки его работы
systemctl disable postgresql.service systemctl enable postgresql.service systemctl -l status postgresql.service systemctl start postgresql.service systemctl stop postgresql.service

При выключении системы сервер корректно останавливается и при старте ОС Debian 8 автоматом загружается.
Убрал костыль, который делал для Cron»а

Если есть недостатки в предложенном решении с радостью выслушаю.

Вопрос: При установке Postgresql 9.4 в Debian 8 (jessie) не создаётся директория /etc/postgresql

Был установлен Postgresql 9.4. ОС Debian 8 (jessie)
В очередной момент горе администратор решил переустановить его.
При этом при удалении пакетов Postgresql и Pgadmin3 удалял что-то вручную.

В результате на сегодняшний день админа нет, а при моих всяческих попытках установить Postgresql не создается директория /etc/postgresql и соответственно конфигурационные файлы которые в ней хранятся.

Подскажите пожалуйста как можно теперь корректно установить Postgresql-сервер.

Использование стандартных методов sudo apt-get —purge remove postgresql и последующая установка sudo apt-get install postgresql не помогает.

Заранее спасибо за ответы!

Ответ:
Устанавливал так.

После удаления postgresql-common с параметром —purge и повторной установки все конфиги были восстановлены.
Прописал пользователей, поправил настройки и все заработало!
Спасибо огромное.

Оцените статью