PostgreSQL starts with the system
The document describe how to configure automatic start PostgreSQL when the system starts.
The ways suitable for systemd on CentOS 7.0 or latest release.
1. Create and configure postgresql.service
# vim /usr/lib/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=remote-fs.target nss-lookup.target
After=network.target sshd.service
After=proc-fs-nfsd.mount
After=network.target local-fs.target
After=nfs-config.service
After=nfs-mountd.service
After=nfs-blkmap.service
After=nfs-client.target
After=nfs-config.service
After=nfs-idmapd.service
After=nfs-idmap.service
After=nfs-lock.service
After=nfslock.service
After=nfs-mountd.service
After=nfs-secure-server.service
After=nfs-secure.service
After=nfs.service
After=nfs-utils.service
[Service]
Type=forking
User=postgres
Group=appuser
Environment=PGPORT=5432
Environment=PGDATA=/data/01/local/pgsql/data
ExecStart=/data/01/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/data/01/local/pqsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/data/01/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=300
[Install]
WantedBy=remote-fs.target
#chmod 644 /usr/lib/systemd/system/postgresql.service
2. Reload systemd and enable postgresql.service
#systemctl daemon-reload
#systemctl enable postgresql.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
#systemctl is-enabled postgresql.service
Enabled
#systemctl start postgresql.service
#systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2018-02-23 22:48:49 KST; 28min ago
Main PID: 2506 (postgres)
CGroup: /system.slice/postgresql.service
├─2506 /data/01/local/pgsql/bin/postgres -D /data/01/local/pgsql/data -p 5432
├─2508 postgres: logger process
├─2510 postgres: checkpointer process
├─2511 postgres: writer process
├─2512 postgres: wal writer process
├─2513 postgres: autovacuum launcher process
└─2514 postgres: stats collector process
Feb 23 22:48:47 ec5d-pbfcompilation-02 systemd[1]: Starting PostgreSQL database server...
Feb 23 22:48:48 ec5d-pbfcompilation-02 pg_ctl[1414]: < 2018-02-23 22:48:48.671 KST >LOG: redirecting log output to logging collector process
Feb 23 22:48:48 ec5d-pbfcompilation-02 pg_ctl[1414]: < 2018-02-23 22:48:48.671 KST >HINT: Future log output will appear in directory "pg_log".
Feb 23 22:48:49 ec5d-pbfcompilation-02 systemd[1]: Started PostgreSQL database server.
Note: CentOS7.x not support /etc/rc.local script file, Detailed description as following:
#cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#這是明智的在系統(tǒng)重啟的時候,去創(chuàng)建一個systemd 服務(wù)或者udev規(guī)則去運行腳本,而不是用/etc/rc.local
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#與先前的系統(tǒng)版本相比較,在系統(tǒng)啟動的時候,由于服務(wù)是并行運行的,所以在其他服務(wù)啟動之后,/etc/rc.local不會運行
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
雖然這里說可以使用chmod +x /etc/rc.local 去執(zhí)行這個腳本,但是筆者在這個文件中添加一行:su - postgres -c ‘pg_ctl start -D /usr/local/pgsql/data’
然后reboot測試了多次,postgres最后都沒有隨系統(tǒng)啟動成功,所以不再推薦(官方也不推薦了)使用/etc/rc.local文件的方式啟動postgres,啟動其他服務(wù)也一樣,最好配置一個systemd服務(wù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。