↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

pg_ctl

pg_ctl — 启动、停止和重启 postmaster

大纲

pg_ctl [-w] [-D datadir][-p path] [-o "options"] start
pg_ctl [-w] [-D datadir] [-m [s[mart]|f[ast]|i[mmediate]]] stop
pg_ctl [-w] [-D datadir] [-m [s[mart]|f[ast]|i[mmediate]]
    [-o "options"] restart
pg_ctl [-D datadir] 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 并让它们中止。在这种情况下,下次启动时将需要进行数据库恢复。

start

启动 postmaster。

stop

关闭 postmaster。

restart

重启 postmaster,执行一个停止/启动序列。

status

显示 postmaster 的当前状态。

输出

pg_ctl: postmaster is state (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'
    

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.