How to restart Postgresql
I have PostgreSQL 9.3 and 9.4 installed on my Linux Mint machine. How can I restart PostgreSQL 9.4? A method to restart both versions together is also fine.
17.6k 43 43 gold badges 145 145 silver badges 217 217 bronze badges
asked Jan 21, 2016 at 7:46
Tony Joseph Tony Joseph
1,802 2 2 gold badges 14 14 silver badges 17 17 bronze badges
Have you searched the web? codeproject.com/Articles/898303/…
Jan 21, 2016 at 7:49
I suggest migrating your data to 9.4 and remove the 9.3 installation afterwards.
Jan 21, 2016 at 7:49
@kometen The referenced article doesn’t provide a way to selectively start and stop each and every single instance.
Jan 21, 2016 at 9:44
@JanHenke I wouldn’t suggest anything outside the scope of the question. Anyway, v9.5 is the current stable version.
Jan 21, 2016 at 9:45
@Enzo He said he has both version running in parallel. So I just suggested migrating to the newer of the two, which would also fix the problem, as there would be only one postgresql left.
Jan 21, 2016 at 15:01
8 Answers 8
Try this as root (maybe you can use sudo or su ):
/etc/init.d/postgresql restart
Without any argument the script also gives you a hint on how to restart a specific version
[Uqbar@Feynman ~] /etc/init.d/postgresql Usage: /etc/init.d/postgresql [version . ]
Similarly, in case you have it, you can also use the service tool:
[Uqbar@Feynman ~] service postgresql Usage: /etc/init.d/postgresql [version . ]
Please, pay attention to the optional [version . ] trailing argument. That’s meant to allow you, the user, to act on a specific version, in case you were running multiple ones. So you can restart version X while keeping version Y and Z untouched and running.
Finally, in case you are running systemd, then you can use systemctl like this:
[Uqbar@Feynman ~] systemctl status postgresql ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2017-11-14 12:33:35 CET; 7min ago .
You can replace status with stop , start or restart as well as other actions. Please refer to the documentation for full details. In order to operate on multiple concurrent versions, the syntax is slightly different. For example to stop v12 and reload v13 you can run:
systemctl stop postgresql-12.service systemctl reload postgresql-13.service
Thanks to @Jojo for pointing me to this very one. Finally Keep in mind that root permissions may be needed for non-informative tasks as in the other cases seen earlier.
Как перезапустить postgresql в linux
9. Чтобы добавить соединение с сервером, щелкните значок подключения в верхнем левом углу и заполните следующие поля:
Name: PostgreSQL x.x
Host: localhost
Port: 5432
Service:
Maintenance DB: postgres
Username: postgres
Password:
Store password: Checked
Group: Servers
10. Нажмите кнопку OK .
11. Создание нового пользователя.
Если не используется PgAdmin, можно использовать следующую команду:
sudo psql -U postgres -c «CREATE USER twadmin WITH PASSWORD ‘
b. Выберите Create — Login/Group Role . На вкладке General в поле Name введите наименование роли пользователя PostgreSQL для администрирования PostgreSQL.
c. На вкладке Privileges выберите Yes для опции Can login? .
d. На вкладке Definition в поле Password введите уникальный надежный пароль для PostgreSQL.
e. Нажмите кнопку OK . Запишите наименование роли пользователя и пароль, созданные на этом шаге, для дальнейшего использования.
Конфигурирование базы данных PostgreSQL, расположенной на отдельном сервере, а не на сервере ThingWorx
Этот раздел является необязательным для среды разработки, но должен быть реализован во всех производственных средах.
По умолчанию сервер PostgreSQL устанавливается в заблокированном состоянии. Этот сервер прослушивает подключения только на локальном компьютере. Чтобы приложение ThingWorx стало взаимодействовать с сервером PostgreSQL, необходимо внести в конфигурацию некоторые изменения, чтобы сервер PostgreSQL «научился» прослушивать подключения со стороны других пользователей (пользователь ThingWorx по умолчанию: twadmin) и/или других компьютеров (приложения ThingWorx, установленного на отдельном сервере).
Для выполнения этих шагов необходимо знать, где находится каталог данных PostgreSQL. Для ОС Linux: расположение папки данных или даже файлов конфигурации может изменяться в зависимости от способа распределения и способа установки (установка загружаемых файлов или установка с помощью диспетчера пакетов). В инструкциях для ссылки на это расположение используется путь
Для Ubuntu: при установке через apt-get файлы конфигурации расположены в /etc/postgresql/x.x/main/
Измените файл pg_hba.conf и добавьте в зависимости от нужной конфигурации следующие строки:
Если нужно разрешить соединение со всех адресов IPv4:
host all all 0.0.0.0/0 md5
Если нужно разрешить подключение только с определенного адреса IPv4 (замените < ipAddress >IP-адресом компьютера, осуществляющего подключение):
host all all
Если нужно разрешить подключение со всех адресов IPv6:
host all all ::0/0 md5
Если нужно разрешить подключение только с определенного адреса IPv6 (замените
host all all
Возможна любая другая комбинация, если использовать дополнительные строки разрешений (для отдельных IP-адресов или их диапазонов) или маски подсети, соответствующие компьютерам, которым требуется доступ к базе данных PostgreSQL.
После любого изменения этого файла требуется перезапуск сервиса базы данных.
Дополнительные сведения о конфигурировании файла pg_hba.conf см. на веб-странице документации PostgreSQL .
Активация в PostgreSQL прослушивания всех подключений
На установках PostgreSQL в ОС Linux существует дополнительный шаг конфигурации, необходимый, чтобы сконфигурировать сервер PostgreSQL для прослушивания подключений.
1. В файле postgresql.conf раскомментируйте и обновите строку listen_addresses :
Uncomment the listen_addresses line and change localhost to ‘*’
# Listen on all addresses. Requires restart.
listen_addresses = ‘*’
2. Перезапустите сервер PostgreSQL.
Конфигурирование и выполнение сценария базы данных PostgreSQL
Чтобы настроить базу данных и область таблиц PostgreSQL, необходимо сконфигурировать и выполнить сценарий thingworxPostgresDBSetup.sh .
После ThingWorx 9.3.1 создание папки ThingworxPostgresqlStorage или любые шаги, связанные с -l, больше не требуются, и данные ThingWorx будут сохраняться в расположении Postgresql по умолчанию.
1. Получите сценарий thingworxPostgresDBSetup.sh из пакета загрузки программного обеспечения ThingWorx в папке install . Загрузки ThingWorx доступны на веб-странице PTC Software Downloads (Загрузки программного обеспечения PTC) .
2. Если необходимо, сконфигурируйте сценарий. Используйте опции из приведенной ниже таблицы.
В этом примере используется загрузка версии 9.x.x с сайта PTC. Если необходимо, замените в имени файла версию той, которую вы используете.
$ sudo unzip MED-61111-CD-085_F000_ThingWorx-Platform-Postgres-9-x-x.zip
$ cd install
3. Чтобы настроить базу данных и область таблицы с помощью установки PostgreSQL по умолчанию, в которой имеется база данных PostgreSQL и пользователь с именем PostgreSQL, введите следующий код:
Как перезапустить postgresql в linux
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
Имя источника событий, с которым 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"
Показанная командная строка будет использоваться в режиме перезапуска.
См. также
Пред. | Наверх | След. |
pg_controldata | Начало | pg_resetxlog |
Как мягко перезагрузить postgresql 9.1 в ubuntu 12.04?
Так чтобы не умерли текущие исполняемые запросы и запросы в очереди?
Можно ли сделать service prostgresql reload? Или же это убьет текущие запросы? В mysql оно убивает.
Есть рецепт для 9.0
dasboot.ru/blog/?p=182
но в 9.1 не вижу pg_ctl
- Вопрос задан более трёх лет назад
- 31237 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 4
pg_ctl находится в директории /usr/lib/postgresql/VERSION/bin. Но можно просто сделать reload. По крайней мере для официальных сборок с apt.postgresql.org.
Ответ написан более трёх лет назад
Пума Тайланд @opium Автор вопроса
к сожалению мягкий рестарт для смены прослушиваемого айпи не работает
kill -SIGHUP id родительского процесса
Так можно заставить перечитать свой конфиг большинство unix-сервисов.
Ответ написан более трёх лет назад
Пума Тайланд @opium Автор вопроса
Что то мне подсказывает, что не все так просто для баз данных.
Ну еще можно так: SELECT pg_reload_conf(); . Если хочется не просто 🙂
Пума Тайланд @opium Автор вопроса
Все равно то что мне надо в релоаде конфига не работает.
У меня работает просто sudo service postgresql restart
Ответ написан более трёх лет назад
Пума Тайланд @opium Автор вопроса
И что прямо запросы не прерываются у вас в постгресе при этом? Наверно вы маг.
Я дубина, сорри. Не прочитал вопрос нормально.
In stop mode, the server that is running in the specified data directory is shut down. Three different shutdown methods can be selected with the -m option. «Smart» mode (the default) waits for all active clients to disconnect and any online backup to finish. If the server is in hot standby, recovery and streaming replication will be terminated once all clients have disconnected. «Fast» mode does not wait for clients to disconnect and will terminate an online backup in progress. All active transactions are rolled back and clients are forcibly disconnected, then the server is shut down. «Immediate» mode will abort all server processes immediately, without a clean shutdown. This will lead to a crash-recovery run on the next restart.
Почему вы не видите pg_ctl — лично я не могу сказать.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- PostgreSQL
- +1 ещё
Почему возвращается ошибка realtion "table_name" does not exist?
- 1 подписчик
- 2 часа назад
- 44 просмотра