Musíte vytvořit vlastní postgresql.service
soubor v /etc/systemd/system/
, který přepíše výchozí PGDATA
proměnná prostředí. Váš soubor vlastní služby může .include
výchozí soubor služby postgresql, takže stačí přidat pouze to, co chcete změnit. Upgrady tak mohou stále upravovat/vylepšovat? soubory ve výchozím souboru služby, zatímco vaše změna zůstane zachována.
Takto jsem to právě udělal v Centos 7:
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
Ověřte :
ps -ax | grep [p]ostgres
Aktualizace:
Spíše než ruční vytváření souboru a přidávání řádku .include můžete také použít vestavěný způsob systemd:
systemctl edit postgresql.service
Tím se otevře váš výchozí editor a změny se uloží do /etc/systemd/system/postgresql.service.d/override.conf
Myslím, že "nejvíce "způsobem CentOS 7" je zkopírovat soubor služby:
sudo cp /usr/lib/systemd/system/postgresql-9.6.service /etc/systemd/system/postgresql-9.6.service
Poté upravte soubor /etc/systemd/system/postgresql-9.6.service :
# Location of database directory
Environment=PGDATA=/mnt/volume/var/lib/pgsql/9.6/data/
Poté jej spusťte sudo systemctl start postgresql-9.6
a ověřte:
# sudo ps -ax | grep postmaster
32100 ? Ss 0:00 /usr/pgsql-9.6/bin/postmaster -D /mnt/volume/var/lib/pgsql/9.6/data/
zkuste toto:
## Login with postgres user
su - postgres
export PGDATA=/your_path/data
pg_ctl -D $PGDATA start &
Zdá se, že skutečným problémem bylo nastavení proměnných prostředí, se kterým jsem pracoval v následujícím vláknu:Proměnné prostředí Centos 7 pro službu Postgres Problémem je proměnná PGDATA nastavená uvnitř vlastní /etc/systemd/system/postgresql-9.3.service, která by měla být vytvořen z obsahu /usr/lib/systemd/system/postgresql-9.3.service, který používá výchozí PGDATA var.