PostgreSQL中pg_ctl工具的使用

pg_ctl工具有以下功能:

(1)初始化postgresql数据库实例

(2)启动、终止或重启postgresql数据库服务

(3)查看postgresql数据库服务的状态

(4)让数据库实例重新读取配置文件

(5)允许给一个指定的进程发送信号

(6)在Windows平台下允许为数据库实例注册或取消一个系统服务

## 初始化数据库实例
--语法
pg_ctl init[db] [-s] [-D datadir] [-o options]

--各参数说明
-s:只打印错误和警告信息,不打印提示性信息。
-D datadir:指定数据库实例的数据目录。
-o options:直接传递给initdb命令的参数,具体可见initdb命令的帮助信息。

--命令示例
pg_ctl init -D /home/osdba/pgdata

## 启动数据库
--语法
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-lfilename] [-o options] [-p path] [-c]

--各参数说明
start:启动数据库实例。
-w:等待启动完成。
-t:等待启动完成的等待秒数,默认为60秒。
-s:只打印错误和警告信息,不打印提示性信息。
-D datadir:指定数据库实例的数据目录。
-l:把服务器日志输出附加在filename文件上,如果该文件不存在则自动创建。
-o options:声明要直接传递给postgres的选项,具体可见postgres命令的帮助信息。
-p path:指定postgres可执行文件的位置。默认postgres可执行文件来自与pg_ctl相同的目录,不必使用该选项,除非进行一些特殊的操作,或者产生postgres执行文件找不到的错误。
-c:提高服务器的软限制(ulimit -c),尝试允许数据库实例在发生某些异常时产生一个coredump文件,以便进行问题定位和故障分析。

--命令示例
pg_ctl start -w -D /home/osdba/pgdata

## 停止数据库
--语法
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-ms[mart] | f[ast] | i[mmediate] ]

--各参数说明
-W:不等待数据库停止,就返回命令。
-m:指定停止的模式。
未说明参数的含义与启动数据库命令中的相应参数含义相同。

--命令示例
pg_ctl stop -D /home/osdba/pgdata -m f

## 重启数据库
--语法
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]

--各参数说明
此命令中的参数与启动或停止命令中的相应参数含义相同。

--命令示例
pg_ctl restart -D /home/osdba/pgdata

## 数据库实例重新读取配置文件(pg_hba.conf)
pg_ctl reload [-s] [-D datadir]

pg_ctl reload
或
pg_ctl reload -D /home/osdba/pgdata

## 查询数据库状态
pg_ctl status
或
pg_ctl status -D /home/osdba/pgdata

## 给指定进程发送信号(在Windows平台比较有用,因为没有kill命令)
pg_ctl kill [signal_name] [process_id]

举例说明针对Windows平台下的PostgreSQL数据库的,在使用psql连接到数据库时,运行“select pg_sleep(600)”命令,然后在操作系统的另一个窗口下用“pg_ctl kill”命令中断前一个窗口中正在执行的命令。

## 查询连接对应的后台数据库服务进程号
postgres=# select pg_backend_pid();
pg_backend_pid
----------------
3900
(1 行记录)

## 然后执行以下命令
select pg_sleep(600);

## 向此后台数据库服务进程发送kill信号,取消执行上面的SQL命令
pg_ctl kill INT 3900

## psql会显示以下输出
postgres=# select pg_sleep(600);
ERROR:  canceling statement due to user request

上面的示例说明向进程发送的INT信号把正在执行的SQL命令取消了。

一般都使用函数 pg_cancel_backend(pid int) 来实现上述功能。

## Windows平台注册和取消服务的命令
--语法
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w] [-t seconds] [-o options]
pg_ctl unregister [-N servicename]

--参数说明
-N servicename:要注册的系统服务的名称。此名称将用作服务名和显示s。
-P password:用户启动服务的密码。
-U:用于启动服务的用户名。如果是域用户,需要使用 DOMAIN\username 格式。

--命令示例
删除服务:
pg_ctl unregister -N postgresql-9.2

注册服务:
pg_ctl register -D "C:\Program Files\PostgreSQL\9.2\data"

你可能感兴趣的:(postgresql,数据库,pg_ctl工具)