千家信息网

Centos 7.x 配置PostgreSQL自启动

发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,PostgreSQL starts with the systemThe document describe how to configure automatic start PostgreSQL w
千家信息网最后更新 2024年11月12日Centos 7.x 配置PostgreSQL自启动

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.

#这是明智的在系统重启的时候,去创建一个systemd 服务或者udev规则去运行脚本,而不是用/etc/rc.local

#

# In contrast to previous versions due to parallel execution during boot

# this script will NOT be run after all other services.

#与先前的系统版本相比较,在系统启动的时候,由于服务是并行运行的,所以在其他服务启动之后,/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 去执行这个脚本,但是笔者在这个文件中添加一行:su - postgres -c 'pg_ctl start -D /usr/local/pgsql/data'

然后reboot测试了多次,postgres最后都没有随系统启动成功,所以不再推荐(官方也不推荐了)使用/etc/rc.local文件的方式启动postgres,启动其他服务也一样,最好配置一个systemd服务。




0