>>情况描述
使用源码包编译安装的postgres数据库,可以通过命令启动和停止,但是使用systemctl查看的时候没有发现postgres.service的服务
>>发生原因:
源码安装时,postgresql数据库并没有像其他软件包一样注册为系统服务
>>如何解决
1.手动创建一个systemd服务文件来管理psql服务
vim /etc/systemd/system/postgresql.service
填入下面的内容
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
ExecStart=/opt/tidb-deploy/pgdir/pgsql/bin/pg_ctl start -D /opt/tidb-data/pgdata -l /opt/tidb-data/pgdata/logfile
ExecStop=/opt/tidb-deploy/pgdir/pgsql/bin/pg_ctl stop -D /opt/tidb-data/pgdata -l /opt/tidb-data/pgdata/logfile
[Install]
WantedBy=multi-user.target
注意: 根据自己安装的数据库目录配置 最后-l的是日志文件可以放在任何地方
2.运行以下命令使systemd加载新的服务文件:
systemctl daemon-reload
3.启停PostgreSQL数据库服务:
现在就可以使用systemctl找到服务名了
这里注意使用服务启停之前,先用pg_ctl stop 停止数据库,在使用命令 ”systemctl start 服务名 ”来启动数据库服务
因为使用pg_ctl start 启动的服务,刚配置完成后使用systemctl stop 服务,有可能后台没有停止,要先用命令停止,之后再用systemctl启停
systemctl stop postgresql
systemctl start postgresql