추가 읽기

추가 읽기

apt-get을 통해 Ubuntu 18.04에 PostgreSQL-11을 설치했으며 다음을 기반으로 했습니다.여기, 포트 5432 및 5433에 2개의 postgreSQL 인스턴스를 설치했습니다.

제 질문은 두 인스턴스 모두에 대해 별도의 시작-중지 스크립트를 가질 수 있느냐는 것입니다. 내 다른 서버는 Centos 7에서 postgresql 9.6을 실행하고 있으므로 몇 가지 시작 스크립트가 있습니다.

postgresql-9.6-instanceA.service postgresql-9.6-instanceB.service postgresql-9.6-instanceC.service postgresql-9.6-instanceD.service postgresql-9.6-instanceE.service

이러한 파일은 환경 내에서만 다릅니다(참고환경부분):

[root@root]# cat /etc/systemd/system/postgresql-9.6-instanceA.service
# It's not recommended to modify this file in-place, because it will be
# overwritten during package upgrades.  If you want to customize, the
# best way is to create a file "/etc/systemd/system/postgresql-9.6.service",
# containing
#       .include /lib/systemd/system/postgresql-9.6.service
#       ...make your changes here...
# For more info about custom unit files, see
# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F

# Note: changing PGDATA will typically require adjusting SELinux
# configuration as well.

# Note: do not use a PGDATA pathname containing spaces, or you will
# break postgresql-setup.
[Unit]
Description=PostgreSQL 9.6 database server
Documentation=https://www.postgresql.org/docs/9.6/static/
After=syslog.target
After=network.target

[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/instanceA/9.6/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-9.6/bin/postgresql96-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-9.6/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

[Install]
WantedBy=multi-user.target

내가 읽은 내용에 따르면여기, 소스코드 설치인 경우 위와 같은 스크립트를 생성할 수 있으므로 systemd 유닛 파일을 추가해 주어야 합니다.

이것은 내 우분투 서버의 systemd 스크립트 내용입니다. postgresql.service내 우분투 18.04의 파일은 다음과 같습니다 . 첫 번째 파일은 /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/postgresql.service비어 있습니다.

root@hostname:~# ls -lah /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/postgresql.service
-rw-r--r-- 1 root root 0 Feb 25 03:50 /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/postgresql.service

두 번째와 세 번째 파일의 내용은 동일합니다.

/etc/systemd/system/multi-user.target.wants/postgresql.service /lib/systemd/system/postgresql.service

# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on

[Install]
WantedBy=multi-user.target

그렇다면 내 우분투 서버에도 이런 일이 일어날까요? 이렇게 하면 편집할 위치나 파일이 확실하지 않기 때문에 두 postgres 인스턴스 모두에 대해 시작-중지-다시 로드-다시 시작 스크립트를 가질 수 있습니다.

답변1

데비안 패키지는 2014년부터 이 작업을 수행해 왔습니다. /etc/postgresql/systemd 단위 생성기는 의 구성 파일을 기반으로 단위를 자동으로 생성하고 활성화합니다.postgresql@instance.service

이에 대한 내용은 시스템의 Readme 파일에 설명되어 있습니다 /usr/share/doc/postgresql-common/. 이 디렉토리와 이 디렉토리에 있는 다른 모든 문서를 읽으십시오.

추가 읽기

답변2

나는 답을 찾았다askubuntu.com 입니다

.servicepostgres를 설치하고 다음 명령을 사용하여 새 인스턴스(이 경우 postgres 클러스터)를 생성한 후 스크립트를 수동으로 지정 해야 한다는 것이 밝혀졌습니다 .

systemctl enable postgresql@<postgresversion>-<clustername>.service

그래서 그것은 될 것입니다 :

systemctl enable postgresql@11-instanceA

관련 정보