pg_ctl
pg_ctl — 启动、停止和重启 postmaster
大纲
pg_ctl [-w] [-Ddatadir][-ppath] [-o "options"] start pg_ctl [-w] [-Ddatadir] [-m [s[mart]|f[ast]|i[mmediate]]] stop pg_ctl [-w] [-Ddatadir] [-m [s[mart]|f[ast]|i[mmediate]] [-o "options"] restart pg_ctl [-Ddatadir] status
输入
- -w
等待数据库服务器启动,方式是监视 pid 文件(PGDATA/postmaster.pid)的创建。60 秒后超时。
- -D
datadir 指定这个数据库安装的数据库位置。
- -p
path 指定 postmaster 可执行文件的路径。
- -o "
options" 指定直接传递给 postmaster 的选项。
参数通常用单引号或双引号括起来,以确保它们作为一个整体传递。
- -m
mode 指定关闭模式。
- smart
s smart 模式等待所有客户端退出登录。这是默认值。
- f[ast]
f Fast 模式向后端发送 SIGTERM,这意味着活动中的事务会被回滚。
- immediate
i Immediate 模式向后端发送 SIGUSR1 并让它们中止。在这种情况下,下次启动时将需要进行数据库恢复。
- smart
- start
启动 postmaster。
- stop
关闭 postmaster。
- restart
重启 postmaster,执行一个停止/启动序列。
- status
显示 postmaster 的当前状态。
输出
pg_ctl: postmaster isstate(pid:#)Postmaster 状态。
如果出现错误条件,将显示后端的错误消息。
描述
pg_ctl 是一个用于启动、停止或重启 postmaster 的工具。
用法
启动 postmaster
启动 postmaster:
> pg_ctl start
如果提供了 -w,pg_ctl 将等待数据库服务器启动,方式是监视 pid 文件(PGDATA/postmaster.pid)的创建,最多 60 秒。
调用 postmaster 的参数取自下列来源:
postmaster 的路径:在命令搜索路径中寻找。
数据库目录:
PGDATA环境变量。其他参数:
。PGDATA/postmaster.opts.default
postmaster.opts.default 包含
postmaster 的参数。
注意 postmaster.opts.default 是由
initdb 从
Postgres 安装目录下的
lib/postmaster.opts.default.sample
安装的(lib/postmaster.opts.default.sample
是在安装 Postgres 时从
src/bin/pg_ctl/postmaster.opts.default.sample
复制而来的)。
要覆盖默认参数,你可以使用 -D、-p 和 -o 选项。
一个启动 postmaster 并阻塞到 postmaster 启动为止的例子:
> pg_ctl -w start
要指定 postmaster 二进制文件的路径,试试:
> pg_ctl -p /usr/local/pgsq/bin/postmaster start
对于一个使用端口 5433 并且不带 fsync
运行的 postmaster,使用:
> pg_ctl -o "-o -F -p 5433" start
停止 postmaster
> pg_ctl stop
停止 postmaster。使用 -m 开关可以控制后端如何关闭。-w
等待 postmaster 关闭。-m 指定关闭模式。
重启 postmaster
这几乎等价于先停止
postmaster 再重新启动它,区别只是停止之前使用的参数也会被使用。这是通过把参数保存在
$PGDATA/postmaster.opts 文件中实现的。-w、-D、-m、-fast、-immediate 和
-o
也可以用于重启模式,它们的含义与上面描述的相同。
以最简单的形式重启 postmaster:
> pg_ctl restart
重启 postmaster,等待它关闭并启动:
> pg_ctl -w restart
重启后使用端口 5433 并禁用 fsync:
> pg_ctl -o "-o -F -p 5433" restart
postmaster 状态
从 postmaster 获取状态信息:
> pg_ctl status
下面是 pg_ctl 的一个输出示例:
pg_ctl: postmaster is running (pid: 13718)
options are:
/usr/local/src/pgsql/current/bin/postmaster
-p 5433
-D /usr/local/src/pgsql/current/data
-B 64
-b /usr/local/src/pgsql/current/bin/postgres
-N 32
-o '-F'