Anda perlu membuat postgresql.service
khusus file dalam /etc/systemd/system/
, yang menggantikan PGDATA
default variabel lingkungan. File layanan khusus Anda dapat .include
file layanan postgresql default, jadi Anda hanya perlu menambahkan apa yang ingin Anda ubah. Dengan begitu, pemutakhiran masih dapat memodifikasi/memperbaiki? hal-hal di file layanan default, sementara perubahan Anda dipertahankan.
Beginilah cara saya melakukannya di 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
Verifikasi :
ps -ax | grep [p]ostgres
Perbarui:
Daripada membuat file secara manual dan menambahkan baris .include, Anda juga dapat menggunakan cara bawaan systemd:
systemctl edit postgresql.service
Ini akan membuka editor default Anda dan menyimpan perubahan Anda ke /etc/systemd/system/postgresql.service.d/override.conf
Saya pikir "cara CentOS 7" yang paling banyak dilakukan adalah dengan menyalin file layanan:
sudo cp /usr/lib/systemd/system/postgresql-9.6.service /etc/systemd/system/postgresql-9.6.service
Kemudian edit file /etc/systemd/system/postgresql-9.6.service :
# Location of database directory
Environment=PGDATA=/mnt/volume/var/lib/pgsql/9.6/data/
Kemudian jalankan sudo systemctl start postgresql-9.6
dan verifikasi:
# sudo ps -ax | grep postmaster
32100 ? Ss 0:00 /usr/pgsql-9.6/bin/postmaster -D /mnt/volume/var/lib/pgsql/9.6/data/
coba ini:
## Login with postgres user
su - postgres
export PGDATA=/your_path/data
pg_ctl -D $PGDATA start &
Tampaknya masalah sebenarnya adalah mengatur variabel lingkungan, yang saya kerjakan di utas berikut:Variabel lingkungan Centos 7 untuk layanan Postgres Masalahnya adalah variabel PGDATA yang diatur di dalam /etc/systemd/system/postgresql-9.3.service kustom yang seharusnya dibuat dari konten /usr/lib/systemd/system/postgresql-9.3.service yang menggunakan var PGDATA default.