LINUX.ORG.RU

PostgreSQL и SystemD

 , ,


0

1

Вот что написали мне по моей ситуации:

При запуске, PostgreSQL обрабатывает еще несколько файлов транзакций и снова останавливается.

root@1cfresh:/home/maintainer# /etc/init.d/postgresql start
[ ok ] Starting postgresql (via systemctl): postgresql.service.
root@1cfresh:/home/maintainer# tail -n 30 /var/log/postgresql/postgresql-9.6-Slave.log
2018-02-14 09:34:08.827 +05 [11385] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:08.974 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000A9" восстановлен из архива
2018-02-14 09:34:09.208 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AA" восстановлен из архива
2018-02-14 09:34:09.334 +05 [11392] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:09.444 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AB" восстановлен из архива
2018-02-14 09:34:09.679 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AC" восстановлен из архива
2018-02-14 09:34:09.841 +05 [11399] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:09.927 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AD" восстановлен из архива
2018-02-14 09:34:10.201 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AE" восстановлен из архива
2018-02-14 09:34:10.350 +05 [11406] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:10.460 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000AF" восстановлен из архива
2018-02-14 09:34:10.526 +05 [11368] СООБЩЕНИЕ:  согласованное состояние восстановления достигнуто по смещению 2/AFFFF930
2018-02-14 09:34:10.716 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B0" восстановлен из архива
2018-02-14 09:34:10.856 +05 [11413] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:11.014 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B1" восстановлен из архива
2018-02-14 09:34:11.318 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B2" восстановлен из архива
2018-02-14 09:34:11.363 +05 [11418] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:11.602 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B3" восстановлен из архива
2018-02-14 09:34:11.870 +05 [11427] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:11.882 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B4" восстановлен из архива
2018-02-14 09:34:12.176 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B5" восстановлен из архива
2018-02-14 09:34:12.377 +05 [11434] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:12.452 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B6" восстановлен из архива
2018-02-14 09:34:12.787 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B7" восстановлен из архива
2018-02-14 09:34:12.884 +05 [11439] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:13.157 +05 [11368] СООБЩЕНИЕ:  файл журнала "0000000100000002000000B8" восстановлен из архива
2018-02-14 09:34:13.390 +05 [11446] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 09:34:13.392 +05 [11367] СООБЩЕНИЕ:  получен запрос на "вежливое" выключение
2018-02-14 09:34:13.399 +05 [11372] СООБЩЕНИЕ:  выключение
2018-02-14 09:34:13.413 +05 [11367] СООБЩЕНИЕ:  система БД выключена

http://www.sql.ru/forum/1225717/postgresql-9-5-ne-zapuskaetsya-avtomaticheski...

http://charlesnagy.info/it/postgresql/postgresql-server-fails-to-start-in-rec...

По ссылкам пишут что это SystemD виноват. А не «вежливые» люди.

Что делать, хелп плиз, я прям уже почти все поборол и споткнулся на финише.

Система Debian 9 последнего разлива, PostgreSQl 9.6.6

Решение:

Запустить PostgreSQL руками, в обход SystemD

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

По ссылкам пишут что это SystemD виноват

grep Exec /lib/systemd/system/postgresql\@.service 
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload


Конечно, кто тут виноват, как не systemd. Он ещё сфинксу нос откусил.

redgremlin ★★★★★ ()
Ответ на: комментарий от redgremlin
root@1cfresh:/home/maintainer# tail -n 30 /var/log/postgresql/postgresql-9.6-Slave.log
2018-02-14 11:50:58.984 +05 [14888] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:50:59.154 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000BE" восстановлен из архива
2018-02-14 11:50:59.390 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000BF" восстановлен из архива
2018-02-14 11:50:59.491 +05 [14895] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:50:59.635 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C0" восстановлен из архива
2018-02-14 11:50:59.874 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C1" восстановлен из архива
2018-02-14 11:50:59.997 +05 [14902] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:00.117 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C2" восстановлен из архива
2018-02-14 11:51:00.375 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C3" восстановлен из архива
2018-02-14 11:51:00.504 +05 [14909] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:00.625 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C4" восстановлен из архива
2018-02-14 11:51:00.878 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C5" восстановлен из архива
2018-02-14 11:51:01.010 +05 [14916] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:01.384 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C6" восстановлен из архива
2018-02-14 11:51:01.517 +05 [14921] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:01.638 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C7" восстановлен из архива
2018-02-14 11:51:01.887 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C8" восстановлен из архива
2018-02-14 11:51:02.024 +05 [14928] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:02.137 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C9" восстановлен из архива
2018-02-14 11:51:02.420 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CA" восстановлен из архива
2018-02-14 11:51:02.531 +05 [14935] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:02.658 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CB" восстановлен из архива
2018-02-14 11:51:02.948 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CC" восстановлен из архива
2018-02-14 11:51:03.037 +05 [14940] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:03.246 +05 [14869] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CD" восстановлен из архива
2018-02-14 11:51:03.382 +05 [14869] СООБЩЕНИЕ:  согласованное состояние восстановления достигнуто по смещению 2/CDFFEE28
2018-02-14 11:51:03.544 +05 [14947] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 11:51:03.546 +05 [14868] СООБЩЕНИЕ:  получен запрос на "вежливое" выключение
2018-02-14 11:51:03.552 +05 [14872] СООБЩЕНИЕ:  выключение
2018-02-14 11:51:03.566 +05 [14868] СООБЩЕНИЕ:  система БД выключена
root@1cfresh:/home/maintainer# cat /etc/postgresql/9.6/Slave/environment
# environment variables for postgres processes
# This file has the same syntax as postgresql.conf:
#  VARIABLE = simple_value
#  VARIABLE2 = 'any value!'
# I. e. you need to enclose any value which does not only consist of letters,
# numbers, and '-', '_', '.' in single quotes. Shell commands are not
# evaluated.
PGCTLTIMEOUT=120

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

использовать pg_ctlcluster удобно в целях разработки, а совсем не эксплуатации. после такой самодеятельности debian-team: https://github.com/jbq/postgresql-common/blob/master/pg_ctlcluster#L252 нужно обходить стороной эти утилиты

vadv ★★ ()
Ответ на: комментарий от vadv

выковырял из юнита для EL


[Service]
Type=notify

User=postgres
Group=postgres

# Note: avoid inserting whitespace in these Environment= lines, or you may
# break postgresql-setup.

# Location of database directory
Environment=PGDATA=/var/lib/pgsql/10/data/

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStartPre=/usr/pgsql-10/bin/postgresql-10-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-10/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT


# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0



Думаю вам стоит посмотреть в сторону TimeoutSec

vadv ★★ ()
Ответ на: выковырял из юнита для EL от vadv
root@1cfresh:/home/maintainer# cat /lib/systemd/system/postgresql\@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

[Unit]
Description=PostgreSQL Cluster %i
ConditionPathExists=/etc/postgresql/%I/postgresql.conf
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service

[Service]
Type=forking
# @: use "postgresql@%i" as process name
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/var/run/postgresql/%i.pid
SyslogIdentifier=postgresql@%i
# prevent OOM killer from choosing the postmaster (individual backends will
# reset the score to 0)
OOMScoreAdjust=-900
# restarting automatically will prevent "pg_ctlcluster ... stop" from working,
# so we disable it here. Also, the postmaster will restart by itself on most
# problems anyway, so it is questionable if one wants to enable external
# automatic restarts.
#Restart=on-failure
# (This should make pg_ctlcluster stop work, but doesn't:)
#RestartPreventExitStatus=SIGINT SIGTERM

# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0


[Install]
WantedBy=multi-user.target
Shulman ()
Ответ на: комментарий от Shulman

# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0

root@1cfresh:/home/maintainer# tail -n 30 /var/log/postgresql/postgresql-9.6-Slave.log
2018-02-14 13:23:56.958 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000BD" восстановлен из архива
2018-02-14 13:23:57.304 +05 [16765] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:23:57.306 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000BE" восстановлен из архива
2018-02-14 13:23:57.542 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000BF" восстановлен из архива
2018-02-14 13:23:57.791 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C0" восстановлен из архива
2018-02-14 13:23:57.812 +05 [16772] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:23:58.036 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C1" восстановлен из архива
2018-02-14 13:23:58.285 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C2" восстановлен из архива
2018-02-14 13:23:58.319 +05 [16779] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:23:58.539 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C3" восстановлен из архива
2018-02-14 13:23:58.794 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C4" восстановлен из архива
2018-02-14 13:23:58.825 +05 [16786] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:23:59.038 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C5" восстановлен из архива
2018-02-14 13:23:59.285 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C6" восстановлен из архива
2018-02-14 13:23:59.331 +05 [16793] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:23:59.530 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C7" восстановлен из архива
2018-02-14 13:23:59.775 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C8" восстановлен из архива
2018-02-14 13:23:59.838 +05 [16802] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:24:00.023 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000C9" восстановлен из архива
2018-02-14 13:24:00.288 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CA" восстановлен из архива
2018-02-14 13:24:00.344 +05 [16809] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:24:00.542 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CB" восстановлен из архива
2018-02-14 13:24:00.836 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CC" восстановлен из архива
2018-02-14 13:24:00.850 +05 [16814] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:24:01.170 +05 [16743] СООБЩЕНИЕ:  файл журнала "0000000100000002000000CD" восстановлен из архива
2018-02-14 13:24:01.313 +05 [16743] СООБЩЕНИЕ:  согласованное состояние восстановления достигнуто по смещению 2/CDFFEE28
2018-02-14 13:24:01.358 +05 [16821] postgres@postgres ВАЖНО:  система баз данных запускается
2018-02-14 13:24:01.359 +05 [16742] СООБЩЕНИЕ:  получен запрос на "вежливое" выключение
2018-02-14 13:24:01.368 +05 [16747] СООБЩЕНИЕ:  выключение
2018-02-14 13:24:01.383 +05 [16742] СООБЩЕНИЕ:  система БД выключена

Shulman ()