一、pg_ctl工具
1、pg_ctl 介绍
pg_ctl是PostgreSQL中初始化数据目录,启动、停止、重启、重加载数据库服务,或者查看数据库服务状态的工具,相比service或systemctl的管理方式,pg_ctl提供了丰富的控制选项,执行pg_ctl命令需要操作系统用户使用su命令切换到postgres用户。
2、pg_ctl语法
注意:在pg_ctl管理工具内部封装了对pg_ctl命令的调用

3、pg_ctl可选参数
pg_ctl管理工具的参数说明如表12-3所示。表12-3 pg_ctl管理工具参数说明。

pg_ctl常用操作模式
(1)init模式:初始化一个新的PostgreSQL数据库集群。
initdb -D $PGDATA -W -U postgres
(2)start模式:启动一个数据库服务器。该服务器进程被启动在后台,并且它的标准输入被挂接到/dev/null目录中。pg_ctl的标准输出应该被重定向到一个文件,否则服务器进程将把它输出到控制终端中。
实例代码如下:


(3)stop模式:关闭指定数据目录中正在运行的数据库服务。对于“-m”选项来说,有以下两种不同的关闭方法。

● fast模式(默认):表示不会等待客户端断开连接,并且将终止进行中的在线备份,所有活动的事务都被回滚并且客户端被强制断开连接,然后关闭数据库服务。
● immediate模式:表示立刻中止所有数据库服务进程,而不是做一次干净的关闭;下次一次重启的时候需要做实例恢复。
● smart模式需要等待所有会话断开后关闭;在发起该命令后将不再允许新的会话连接进来,需要等待较长时间。
(4)restart模式:实际上是在执行start操作之前执行一次stop操作。它用于使pg_ctl命令行选项及配置文件选项重启数据库后生效。
(5)reload模式:简单地向服务器进程发送一个SIGHUP信号,从而重新读取它的配置文件(postgresql.conf文件、pg_hba.conf文件等),以实现无须重启数据库而重新加载配置文件配置项的目的。
(6)status模式:用于检查指定的数据目录是否有数据库服务在运行。如果有一个数据库服务正在运行,则会显示PID和用来调用它的命令行选项。

(7)promote模式:表示将运行在指定数据目录中的备机服务器提升为master模式,开始支持读写操作。
(8)kill模式:允许向一个指定进程发送一个消息。这对没有kill命令的Windows特别有价值。使用“–help”查看受支持的信号名称列表。kill模式使用语法格式如下:

其中,SIGNALNAME是要发送的信号名称,当前允许的信号名称包括ABRT、HUP、INT、QUIT、TERM、USR1、USR2;PID是PostgreSQL数据库进程的ID。4.pg_ctl使用方法实例下面实例说明这些模式的使用方法:





