LINUX.ORG.RU

Запуск и остановка PostgreSQL без SystemD

 


0

1

В общем у меня была проблема запуска PostgreSQL, которую я решил как было написано тут:

https://www.postgresql.org/docs/9.6/static/server-start.html

/usr/lib/postgresql/9.6/bin/postgres -D /etc/postgresql/9.6/Slave/ >/var/log/postgresql/postgresql-9.6-Slave.log 2>&1 &

Как остановить PostgreSQL, чтобы это было корректно.

Сейчас скрипты systemd не видят работающего сервера и когда я делаю


root@1cfresh:/home/maintainer# systemctl stop postgresql
root@1cfresh:/home/maintainer# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2018-02-17 13:53:06 +05; 1 day 18h ago
 Main PID: 11026 (code=exited, status=0/SUCCESS)

фев 14 09:25:27 1cfresh systemd[1]: Starting PostgreSQL RDBMS...
фев 14 09:25:27 1cfresh systemd[1]: Started PostgreSQL RDBMS.
фев 17 13:53:06 1cfresh systemd[1]: Stopped PostgreSQL RDBMS.
root@1cfresh:/home/maintainer# /etc/init.d/postgresql stop
[ ok ] Stopping postgresql (via systemctl): postgresql.service.
root@1cfresh:/home/maintainer# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2018-02-17 13:53:06 +05; 1 day 18h ago
 Main PID: 11026 (code=exited, status=0/SUCCESS)

фев 14 09:25:27 1cfresh systemd[1]: Starting PostgreSQL RDBMS...
фев 14 09:25:27 1cfresh systemd[1]: Started PostgreSQL RDBMS.
фев 17 13:53:06 1cfresh systemd[1]: Stopped PostgreSQL RDBMS.

Ничего не происходит.

Как корректно потушить PostgreSQL

РЕШЕНИЕ:

postgres@1cfresh:/home/maintainer$ pg_ctlcluster
\Usage: /usr/bin/pg_ctlcluster <version> <cluster> <action>
postgres@1cfresh:/home/maintainer$ pg_ctlcluster 9.6 Slave stop
Warning: stopping the cluster using pg_ctlcluster will mark the systemd unit as failed. Consider using systemctl:
  sudo systemctl stop postgresql@9.6-Slave
pg_ctl: сервер не останавливается
ПОДСКАЗКА: Параметр "-m fast" может сбросить сеансы принудительно,
не дожидаясь, пока они завершатся сами.

postgres@1cfresh:/home/maintainer$ tail -n 30 /var/log/postgresql/postgresql-9.6-Slave.log
2018-02-19 10:56:31.909 +05 [15145] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt27" в базе "ds38_kamin55_psql"
2018-02-19 10:56:31.909 +05 [15145] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt28" в базе "ds38_kamin55_psql"
2018-02-19 10:56:31.909 +05 [15145] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt29" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt13" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt14" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt15" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt16" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt17" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt18" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt19" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt20" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt21" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt22" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt23" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt24" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt25" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt26" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt27" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt28" в базе "ds38_kamin55_psql"
2018-02-19 10:57:31.925 +05 [15161] СООБЩЕНИЕ:  автоочистка: найдена устаревшая врем. таблица "pg_temp_5"."tt29" в базе "ds38_kamin55_psql"
2018-02-19 10:57:49.625 +05 [8551] СООБЩЕНИЕ:  получен запрос на "вежливое" выключение
2018-02-19 10:57:49.625 +05 [8698] СООБЩЕНИЕ:  процесс запуска автоочистки завершается
2018-02-19 11:17:09.006 +05 [15458] dbadmin@ds38_kamin55_psql ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.011 +05 [15459] dbadmin@ds38_kamin55_psql ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.012 +05 [15460] dbadmin@ds38_kamin55_psql ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.016 +05 [8555] СООБЩЕНИЕ:  выключение
2018-02-19 11:17:09.017 +05 [15461] dbadmin@template1 ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.039 +05 [15462] dbadmin@template1 ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.045 +05 [15463] dbadmin@template1 ВАЖНО:  система баз данных останавливается
2018-02-19 11:17:09.081 +05 [8551] СООБЩЕНИЕ:  система БД выключена

Ответ на: комментарий от shooter93

Я хочу остановить сервер запущенный вручную.

А потом да, запускать и останавливать systemd.

Как сервер тормознуть запущенный без скриптов systemd.

Я так понимаю что команды kill это не есть «вежливое» выключение?

Shulman ()

Если верить этому мануалу, то сигналом SIGTERM. Правда, мануал уже пятилетней давности, но вряд ли что-то в этом плане изменилось. На всякий случай можно проверить с тестовой БД, нагрузив её в момент «убийства» запросами на чтение и запись по самые гланды.

aureliano15 ()
Ответ на: комментарий от Shulman

команды kill это не есть «вежливое» выключение?

Сигнал может обрабатываться, игнорироваться или выполнять действие по умолчанию (чаще всего прибивая процесс). Есть сигналы, которые не могут быть проигнорированы или обработаны, например SIGKILL (9). А другие могут обрабатываться, и реакция на них может быть вполне адекватной. А как systemd останавливает процессы? Посылкой тех же сигналов.

aureliano15 ()

рекомендованное управление кластером - pg_ctl (остановка запуск и проч)

не используйте kill, он беден и не возвращает статус. используйте рекомендованную утилиту управления: https://www.postgresql.org/docs/9.5/static/app-pg-ctl.html

vadv ★★ ()
Последнее исправление: vadv (всего исправлений: 1)
Ответ на: комментарий от zgen
root@1cfresh:/home/maintainer# kill -INT `head -1 /var/run/postgresql/.s.PGSQL.5432.lock`
root@1cfresh:/home/maintainer# tail /var/log/postgresql/postgresql-9.6-main.log
2018-02-22 12:07:24.221 +05 [17451] СООБЩЕНИЕ:  система БД была выключена: 2018-02-22 12:07:16 +05
2018-02-22 12:07:24.222 +05 [17451] СООБЩЕНИЕ:  Защита от наложения мультитранзакций сейчас включена
2018-02-22 12:07:24.224 +05 [17455] СООБЩЕНИЕ:  процесс запуска автоочистки создан
2018-02-22 12:07:24.224 +05 [17450] СООБЩЕНИЕ:  система БД готова принимать подключения
2018-02-22 12:07:24.705 +05 [17457] [н/д]@[н/д] СООБЩЕНИЕ:  неполный стартовый пакет
2018-02-22 12:09:51.402 +05 [17450] СООБЩЕНИЕ:  получен запрос на быстрое выключение
2018-02-22 12:09:51.402 +05 [17450] СООБЩЕНИЕ:  прерывание всех активных транзакций
2018-02-22 12:09:51.403 +05 [17455] СООБЩЕНИЕ:  процесс запуска автоочистки завершается
2018-02-22 12:09:51.404 +05 [17452] СООБЩЕНИЕ:  выключение
2018-02-22 12:09:51.413 +05 [17450] СООБЩЕНИЕ:  система БД выключена
Shulman ()