Sie müssen einen benutzerdefinierten postgresql.service
erstellen Datei in /etc/systemd/system/
, die den Standardwert PGDATA
überschreibt Umgebungsvariable. Ihre benutzerdefinierte Dienstdatei kann .include
die standardmäßige postgresql-Dienstdatei, sodass Sie nur das hinzufügen müssen, was Sie ändern möchten. Auf diese Weise können Upgrades immer noch modifizieren/verbessern? Zeug in der Standarddienstdatei, während Ihre Änderung erhalten bleibt.
So habe ich es gerade in Centos 7 gemacht:
cat <<END >/etc/systemd/system/postgresql.service
.include /lib/systemd/system/postgresql.service
[Service]
Environment=PGDATA=/mnt/postgres/data ## <== SET THIS TO YOUR WANTED $PGDATA
END
systemctl daemon-reload
systemctl restart postgresql.service
Verifizieren :
ps -ax | grep [p]ostgres
Aktualisierung:
Anstatt die Datei manuell zu erstellen und die .include-Zeile hinzuzufügen, können Sie auch die systemd-integrierte Methode verwenden:
systemctl edit postgresql.service
Dies öffnet Ihren Standard-Editor und speichert Ihre Änderungen in /etc/systemd/system/postgresql.service.d/override.conf
Ich denke, der "CentOS 7-Weg" besteht darin, die Servicedatei zu kopieren:
sudo cp /usr/lib/systemd/system/postgresql-9.6.service /etc/systemd/system/postgresql-9.6.service
Bearbeiten Sie dann die Datei /etc/systemd/system/postgresql-9.6.service :
# Location of database directory
Environment=PGDATA=/mnt/volume/var/lib/pgsql/9.6/data/
Starten Sie es dann sudo systemctl start postgresql-9.6
und überprüfen Sie:
# sudo ps -ax | grep postmaster
32100 ? Ss 0:00 /usr/pgsql-9.6/bin/postmaster -D /mnt/volume/var/lib/pgsql/9.6/data/
versuchen Sie Folgendes:
## Login with postgres user
su - postgres
export PGDATA=/your_path/data
pg_ctl -D $PGDATA start &
Es scheint, dass das eigentliche Problem darin bestand, die Umgebungsvariablen festzulegen, die ich im folgenden Thread zum Laufen gebracht habe:Centos 7-Umgebungsvariablen für den Postgres-Dienst Das Problem ist die PGDATA-Variable, die in der benutzerdefinierten /etc/systemd/system/postgresql-9.3 aus dem Inhalt von /usr/lib/systemd/system/postgresql-9.3.service erstellt werden, der die Standard-PGDATA-Variable verwendet.