Postgresql restart: linux mint — How to restart Postgresql

Содержание

PostgreSQL : Документация: 9.6: pg_ctl : Компания Postgres Professional

RU

EN

RU EN

pg_ctl

pg_ctl — инициализировать, запустить, остановить или управлять сервером PostgreSQL

Синтаксис

pg_ctl init[db] [-s] [-D каталог_данных] [-o параметры-initdb]

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

pg_ctl stop [-W] [-t секунды] [-s] [-D каталог_данных] [-m s[mart] | f[ast] | i[mmediate] ]

pg_ctl restart [-w] [-t секунды] [-s] [-D каталог_данных] [-c] [-m s[mart] | f[ast] | i[mmediate] ] [-o параметры]

pg_ctl reload [-s] [-D каталог_данных]

pg_ctl status [-D каталог_данных]

pg_ctl promote [-s] [-D каталог_данных]

pg_ctl kill имя_сигнала ид_процесса

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

pg_ctl unregister [-N имя_службы]

Описание

pg_ctl — это утилита для начальной инициализации, запуска, остановки, повторного запуска и управления кластером баз данных PostgreSQL (postgres). Сервер можно стартовать в ручном режиме, но pg_ctl реализует задачи направления вывода в журнал и отсоединения от терминала и группы процессов, а также предоставляет удобный интерфейс остановки кластера.

Для инициализации нового кластера PostgreSQL используются режимы init или initdb. Кластер — это коллекция баз данных под управлением единого сервера. По факту вызывается команда initdb. За подробностями обратитесь к initdb.

Сервер запускается в режиме 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.

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

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

Параметры

-c
--core-file

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

-D каталог_данных
--pgdata каталог_данных

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

-l имя_файла
--log имя_файла

Направляет вывод сообщений сервера в файл имя_файла. Файл создаётся, если он ещё не существует. При этом устанавливается umask 077, что предотвращает доступ других пользователей к этому файлу.

-m режим
--mode режим

Задаёт режим остановки кластера. Значением режим может быть smart, fast или immediate, либо первая буква этих вариантов. По умолчанию выбирается режим fast.

-o параметры

Указывает флаги, которые будут переданы непосредственно программе postgres; несколько параметров складываются вместе.

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

-o параметры-initdb

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

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

-p путь

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

В режиме init этот параметр аналогичным образом задаёт размещение исполняемого файла initdb.

-s
--silent

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

-t
--timeout

Максимальное время (в секундах) ожидания запуска или остановки сервера. По умолчанию принимается значение переменной среды PGCTLTIMEOUT или, если оно не задано, 60 секунд.

-V
--version

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

-w

Ждать завершения запуска или остановки. Это вариант по умолчанию при остановке, но не при запуске. Ожидая запуска, pg_ctl постоянно пытается подключиться к серверу. Ожидая остановки, pg_ctl ждёт, пока сервер не удалит свой файл PID. Этот параметр позволяет ввести парольную фразу SSL при запуске. pg_ctl возвращает код завершения, сообщающий об успехе запуска или остановки.

-W

Не ждать завершения запуска или остановки. Это вариант по умолчанию для режимов запуска и перезапуска.

-?
--help

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

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

-e source

Имя источника событий, с которым pg_ctl будет записывать в системный журнал события при запуске в виде службы Windows. Имя по умолчанию — PostgreSQL. Заметьте, что это влияет только на сообщения, которые выдаёт сам pg_ctl; как только сервер запустится, он будет использовать источник событий, заданный в event_source. Если произойдёт ошибка при запуске сервера на ранней стадии, он также выдаст сообщение с источником по умолчанию PostgreSQL.

-N имя_службы

Имя регистрируемой системной службы. Оно станет и собственно именем службы, и отображаемым именем.

-P пароль

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

-S тип-запуска

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

-U имя_пользователя

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

Переменные окружения

PGCTLTIMEOUT

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

PGDATA

Размещение каталога хранения данных по умолчанию.

pg_ctl, как и большинство других утилит PostgreSQL, также использует переменные окружения, поддерживаемые libpq (см. Раздел 32.14). Другие переменные сервера описаны в postgres.

Файлы

postmaster.pid

Наличие файла в каталоге хранения данных помогает pg_ctl определить, работает ли сервер в настоящий момент.

postmaster.opts

Если файл существует в каталоге хранения данных, то pg_ctl (при restart) передаст его содержимое в качестве аргументов postgres, если не указаны иные значения в -o. Содержимое файла также отображается при вызове в режиме status.

Примеры

Запуск сервера

Для запуска сервера:

$ pg_ctl start

Для запуска сервера с ожиданием готовности к приёму подключений:

$ pg_ctl -w start

Чтобы запустить сервер с использованием порта 5433 и без fsync, выполните:

$ pg_ctl -o "-F -p 5433" start

Остановка сервера

Для остановки сервера:

$ pg_ctl stop

Параметр -m указывает режим остановки:

$ pg_ctl stop -m fast

Повторный запуск сервера

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

$ pg_ctl restart

Для повторного запуска сервера с ожиданием полной остановки и последующего запуска:

$ pg_ctl -w restart

Для повторного запуска на порту 5433 с выключенным fsync после старта:

$ pg_ctl -o "-F -p 5433" restart

Вывод состояния сервера

Ниже представлен примерный вывод pg_ctl:

$ pg_ctl status

pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

Показанная командная строка будет использоваться в режиме перезапуска.

См. также

initdb, postgres

Sprintbox — PostgreSQL

PostgreSQL — объектно-реляционная система управления базами данных, доступная для работы на различных операционных системах. В данной инструкции мы установим PostgreSQL-сервер на виртуальную машину с ОС семейства Unix.

CentOS/Fedora/RedHat

  • Находим ссылку на RPM-файл нужной версии PostgreSQL для ОС на официальном сайте
  • Подключаем репозиторий:
 yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
  • Устанавливаем PostgreSQL-пакеты вместе с phpPgAdmin:
 yum install postgresql postgresql-server postgresql-contrib
  • Инициализируем базы данных кластера:
 service postgresql initdb
  • Запускаем сервер базы данных:
 service postgresql start

Ubuntu/Debian

  • Выполняем установку пакетов для PostgreSQL:
 apt-get install postgresql postgresql-contrib
  • Перезапускаем сервис базы данных:
 service postgresql restart

Однако в PPA разработчиков PostgreSQL можно найти актуальную версию. Для этого добавьте репозиторий PostgreSQL в системный список источников и добавьте для него ключ:

 sudo sh -c 'echo "deb http://apt. postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
 wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Это позволит при обновлении пакетов получать наиболее актуальные версии.

Установка из исходного кода

Также имеется возможность установить PostegreSQL нужной версии из исходного кода. Для этого достаточно воспользоваться инструкцией, выгрузив перед этим требуемую версию с официального сайта.

Установка phpPgAdmin

Debian/Ubuntu

  • Устанавливаем пакет:
$ apt-get install phppgadmin
  • Разрешаем внешний доступ в файле /etc/apache2/conf-available/phppgadmin.conf, снимая комментирования со строки #Require all granted
  • Чтобы указать конкретный IP-адрес, нужно использовать:

 Require ip X.X.X.X.

где X.X.X.X. — ваш IP-адрес

  • Можно отключить дополнительную защиту при авторизации в файле /etc/phppgadmin/config. inc.php
$conf['extra_login_security']=false
  • Для применения изменений перезагружаем веб-сервер:
service httpd restart

CentOS

  • Устанавливаем репозиторий EPEL:
yum install epel-release
  • Обновляем менеджер пакетов:
$ yum update
  • Устанавливаем phpPgAdmin:
$ yum -y install phpPgAdmin
  • Разрешаем внешний доступ в файле /etc/httpd/conf.d/phpPgAdmin.conf, снимая комментирования со строки #Require all granted
    • Чтобы указать конкретный IP-адрес, нужно использовать Require ip X.X.X.X.

где X.X.X.X. — ваш IP-адрес

  • Можно отключить дополнительную защиту при авторизации в файле /etc/phppgadmin/config.inc.php
  • Перезагружаем веб-сервер:
service httpd restart

Vesta

Помимо установки согласно инструкции для ОС, нужно выполнить дополнительные действия для интеграции с панелью.

  • Включаем поддержку баз данных PgSQL в Vesta:
$ open /usr/local/vesta/conf/vesta.conf and set DB_SYSTEM to 'mysql,pgsql'
  • Регистрируем экземпляр pg в панели управления:
$ v-add-database-host pgsql localhost postgres pgp4sw0rd
$ service httpd restart
  • Устанавливаем пользовательский пароль:
$ su - postgres
$ psql -c "ALTER USER postgres WITH PASSWORD 'pgp4sw0rd'" 
$ exit

Изменение версии

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

ISPManager

  • Для изменения основной версии PostgreSQL необходимо воспользоваться инструкцией

На операционных системах без установленной панели управления

  • Вначале необходимо установить новую версию PostgreSQL, руководствуясь инструкцией из пункта «Установка PostgreSQL»
  • Если установка происходит из исходного кода, то необходимо производить её в другой каталог, изменив стандартный порт (его значение 5432) с помощью дополнительных ключей —with-pgport=НОМЕР и —prefix=ПРЕФИКС
  • Запустив параллельно оба сервера, старый и новый, с разными портами, можно будет перенести данные с помощью следующей команды
pg_dumpall -p 5432 | psql -d postgres -p 5433

Сброс пароля суперпользователя

  • Первым делом необходимо найти файл pg_hba. conf любой доступной утилитой.
  • Создаем резервную копию данного файла:
cp pg_hba.conf pg_hba.conf-backup
  • Указываем в файле pg_hba.conf следующую строку:
local  all   all   trust
  • Перезагружаем PostgreSQL:
sudo /etc/init.d/postgresql restart

Если у сервер не перезагружается, выдавая следующую ошибку: local connections are not supported by this build , то необходимо заменить строчку, начинающуюся с local на

host  all   all  127.0.0.1/32  trust
  • Теперь  доступно подключение к серверу PostgreSQL под любым пользователем:
psql -U postgres
  • Задаём новый пароль для нужного пользователя:
ALTER USER user_name with password 'password';
  • Восстанавливаем исходный файл pg_hba.conf:
cp pg_hba.conf-backup pg_hba.conf
  • Перезагружаем сервер PostgreSQL:
sudo /etc/init.d/postgresql restart

Настройка PostgreSQL

Найти конфигурационный файл postgresql. conf можно командой:

ps aux | grep postgres | grep -- -D

Внешнее подключение к базе данных

  • В файле postgresql.confизменяем значение listen_addresses
    • «*» для любых адресов или IP для конкретного источника
listen_addresses = '*'
  • В файле pg_hba.conf (лежит в там же, что и postgresql.conf) добавляем строчку с параметрами
    • host — подключаемся через SSL
    • all — разрешаем подключение ко всем базам
    • postgreadmin — имя пользователя, которому разрешаем подключение
    • 0.0.0.0/0 — маска сети с которой можно подключаться
    • md5 — способ шифрования пароля
host  all  postgreadmin  0.0.0.0/0  md5
  • Создаем пользователя postgreadmin в postgresql, через которого будет происходить подключение с помощью . Используемые опции команды createuser:
    • -s — добавить пользователю права суперпользователя
    • -r — разрешить пользователю создавать других пользователей
    • -d — разрешает пользователю создавать базы данных
    • -P — добавить к пользователю пароль
> createuser -s -r -d -P postgreadmin
# ввести пароль
> exit
  • Перезагружаем postqresql:
$ service postgresql restart

Кодировка

Узнать кодировку

  • На стороне сервера:
 psql -l
  • Получить текущую клиентскую кодировку:
> SHOW client_encoding;

Задать кодировку на стороне клиента

  • Клиентская кодировка устанавливается SQL-командой:
> SET CLIENT_ENCODING TO 'value';
  • Также можно использовать стандартный синтаксис SQL SET NAMES
> SET NAMES 'value';

Вернуть кодировку по умолчанию

> RESET client_encoding;

Была ли эта инструкция полезной?

postgres, ubuntu как перезапустить службу при запуске? застрять в кластере после перезагрузки экземпляра

Задавать вопрос

Спросил

Изменено
8 месяцев назад

Просмотрено
236 тысяч раз

87

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

У меня Postgres db 9.1 работает на AWS EC2 , с ubuntu 12.04 .

Я много возился с экземпляром (например, устанавливал все виды postgres X.X, прежде чем остановился на 9.1).

Теперь, после месяца работы над этой базой данных, я обнаружил, что если я перезапущу свой экземпляр postgres , он не загрузится правильно, в его статусе будет указано «Выполнение кластеров». это будет длиться вечно, пока я не перезапущу

 sudo service postgresql
 

с терминала, а потом снова работает.

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

Также любое другое решение, которое могло бы решить эту проблему.

  • Ubuntu
  • Ubuntu-12.04
  • postgresql-9.1

3

В Ubuntu 18.04:

sudo systemctl перезапустить postgresql. service

2

Приведенная ниже команда сработала для меня

sudo service postgresql restart

Я думаю, было бы лучше исправить сам сценарий запуска базы данных. Но в качестве обходного пути вы можете добавить эту строку в /etc/rc.local , который выполняется последним на этапе инициализации.

3

ПРИМЕНЕНИЕ:
введите эту команду один раз, и все готово. Ваша служба запустится автоматически при загрузке

 sudo systemctl enable postgresql
 

DISABLE также существует

Некоторые DOC: freedesktop man systemctl

2

 $ перезапуск службы sudo postgresql
 

для запуска Ubuntu, чтобы каждый раз при загрузке он перезапускал эту службу Postgres при запуске, чтобы вам не приходилось перезапускать ее все время

 sudo update-rc.d postgresql включить
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

macos — Как перезапустить postgresql на OS X?

Спросил

Изменено
9 месяцев назад

Просмотрено
65 тысяч раз

38

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Не могу найти, как перезапустить postgresql в OS X с помощью командной строки, чтобы применить изменения в pg_hba.conf. Я пробовал различные команды из Интернета и документов. Как это сделать правильно?

РЕДАКТИРОВАТЬ: Ответ на попытку найти путь выглядит так:

 TheKotik 73454 0.0 0.0 2619360 804 ?? S 19:20 0:01.57 /Applications/Postgres.app/Contents/Versions/9.6/bin/postgres -D /Users/TheKotik/Library/Application Support/Postgres/var-9.6 -p 5432
 
  • macos
  • postgresql

На всякий случай, если postgres был установлен с помощью homebrew, вы также можете запустить следующую команду:

 brew services перезапустить postgres
 

2

 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log перезапуск
 

/usr/local/var/postgres — это расположение области хранения базы данных, а /usr/local/var/postgres/server. log — мой файл журнала для postgres. Последнее слово перезагрузка здесь является рабочим словом. Вы также можете использовать start для запуска службы.

Расположение области хранения базы данных можно узнать, запустив ps aux | grep постгрес | grep ---D

6

для hba.conf изменения для применения перезапускать не нужно — просто перезагрузите.

запустить выбрать pg_reload_conf() в psql

также:

запустить показать data_directory в psql, чтобы найти каталог данных…

5

Для PostgreSQL 13.4, работающего на macOS Catalina 10.15.7, у меня было другое место для моего файла данных и, следовательно, другая команда.

 sudo -u postgres /Library/PostgreSQL/13/bin/pg_ctl -D /Library/PostgreSQL/13/перезапуск данных
 

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