在我当前的服务器上,我安装了两个版本的 postgresql,postgresql-9.1 和 postgresql-9.2
我从 postgresql 网站的源代码安装了它们。
tar.gz 文件夹提供安装文件以及可用于运行它的启动脚本。我从每个 postgresql 安装中复制了这些启动脚本,如下所示
/etc/rc.d/init.d/postgresql91
/etc/rc.d/init.d/postgresql92
这样我就可以
service postgresql91 start
或者
service postgresql92 start
并独立使用它们
但是,我尝试在 systemd linux(Fedora 22 服务器)上执行同样的事情,并且 init.d 文件夹中出现一条警告,告诉我它已发生更改。
我将如何使用 postgresql 提供的启动脚本来运行数据库?
答案1
这组步骤在 Fedora 22 虚拟机上对我有用。希望它们也对你有用。=) 我选择 9.2 作为第一个要修复的版本。9.1 的工作方式完全相同。
幸运的是,PostgreSQL 源版本中包含的 init 脚本完全符合 LSB 标准,这对于遗留 systemd 集成来说几乎是一个要求。
您的第一步应该是contrib/start-scripts/linux
根据您的特定环境设置正确配置初始化脚本。
完成后,将编辑后的文件复制到/etc/rc.d/init.d/postgresql92
,并执行命令systemctl daemon-reload
强制 systemd 重新读取包含该文件的单元文件和目录。
紧接着,运行命令systemctl enable postgresql92
。完成后,您应该会看到如下消息:
[root@test ~]# systemctl enable postgresql92
postgresql92.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig postgresql92 on
[root@test ~]#
这表明 systemd 确实注册了 init 脚本,并且创建了启动时所需的所有符号链接。
之后,你应该能够使用以下命令启动该服务systemctl start postgresql92
然后使用以下方法检查进程的状态systemctl status postgresql92
它看起来应该是这样的:
[root@test ~]# systemctl status postgresql92
● postgresql92.service - SYSV: PostgreSQL RDBMS
Loaded: loaded (/etc/rc.d/init.d/postgresql92)
Active: active (exited) since Sat 2015-09-05 08:13:34 UTC; 1min 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 16665 ExecStart=/etc/rc.d/init.d/postgresql92 start (code=exited, status=0/SUCCESS)
Sep 05 08:13:34 test systemd[1]: Starting SYSV: PostgreSQL RDBMS...
Sep 05 08:13:34 test su[16666]: (to postgresql) root on none
Sep 05 08:13:34 test systemd[1]: Started SYSV: PostgreSQL RDBMS.
Sep 05 08:13:34 test postgresql92[16665]: Starting PostgreSQL: ok
[root@test ~]#
最后,通过psql
在正在运行的实例上使用进行仔细检查。
[postgresql@test bin]$ ./psql -U postgresql template1
psql (9.2.13)
Type "help" for help.
template1=# SELECT * FROM version();
version
---------------------------------------------------------------------------------------------------------------
PostgreSQL 9.2.13 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4), 64-bit
(1 row)
template1=# \q
[postgresql@test bin]$
这SysVinit 到 systemd 的速查表, 这与 SysV 的兼容性以及 ArchLinux Wiki 的systemd条目应该也能帮助你弄清楚如何更好地控制 systemd。
希望有所帮助。=)