为了补充其他答案,以下内容适用于CentOS 6和7版本。运行类似以下命令后:
$ initdb -D /path/to/newdb
您需要更改配置文件
postgresql.conf
中的至少
port
配置选项和可能的
listen_addresses
。
与其立即启动这个新实例(在之前的答案中已经解释过),也许你希望新实例在系统启动时自动运行(例如,在关机后)。为了做到这一点,由于CentOS没有
pg_ctl register
选项(仅适用于Windows),您需要创建一个新的服务文件并注册它,以便systemctl或service可以自动启动它。
请按照以下命令获取服务的初始化文件:
[root@machine ~]
Usage: /etc/init.d/postgresql-9.6 {start|stop|status|restart|upgrade|condrestart|try-restart|reload|force-reload|initdb|promote}
[root@machine ~]
[root@machine init.d]
[root@machine init.d]
现在,您可以更改
PGDATA
目录为新实例所在的目录。如果您使用的是早于9.4版本的Postgresql(在本答案发布时不应该这样做),您还需要更改
PGPORT
为新实例正在侦听的值。
新服务的名称由您决定。我通常采用原始服务名称并在末尾添加端口号。
现在,您只需要注册新服务:
[root@machine init.d]
[root@machine init.d]
Iniciando servicios postgresql-9.6_5433: [ OK ]
[root@machine init.d]
Se está ejecutando postgresql-9.6_5433 (pid 120993)...
在CentOS 7中,控制机器上运行的服务不再使用service
命令,而是使用systemctl
命令,相应的命令和路径也有所改变。但是流程基本相同:创建新的服务文件,用新的位置/端口进行编辑,注册并启动服务:
[root@localhost ~]
/etc/systemd/system/multi-user.target.wants/postgresql.service
/usr/lib/systemd/system/postgresql.service
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
postgresql.service enabled
postgresql_5433.service enabled
initdb
命令并将其指向不同的数据目录(并指定不同的端口)。 - user330315initdb
在数据目录中创建配置文件。 - user330315