postgreSQL的pg_ctl常用命令

pg_ctl命令使用

常用命令

pg_ctl是一个初始化、启动、停止、控制PostgreSQL服务器的命令行工具

- 1.初始化

pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]

初始化数据库,详见initdb命令

- 2.启动数据库

pg_ctl start    [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]

# 最简形式
pg_ctl start -D /pgdata/16/main

# 带日志重定向、等待端口就绪
pg_ctl start -D /pgdata/16/main \
             -l /pgdata/16/main/pg_log/startup.log \
             -w -t 60            # 最多等 60 s

- 3.停止数据库

pg_ctl stop     [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]

# 默认 smart(等所有会话退出)
pg_ctl stop  -D /pgdata/16/main

# 常用 immediate(直接 kill,下次启动需 WAL 恢复)
pg_ctl stop  -D /pgdata/16/main -m immediate

模式说明:
smart → 等所有连接断开(默认)
fast → 主动断开会话,立即 checkpoint
immediate → 不 checkpoint,需恢复

- 4.重启

pg_ctl restart  [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c]

# 先 smart-stop 再 start
pg_ctl restart -D /pgdata/16/main -m smart -w

- 5.重新加载配置文件

pg_ctl reload   [-D DATADIR] [-s]

pg_ctl reload -D /pgdata/16/main

- 6.查看实例状态(status)

pg_ctl status   [-D DATADIR]

pg_ctl status -D /pgdata/16/main

- 7.通知数据库结束standby并开始读写

pg_ctl promote  [-D DATADIR] [-W] [-t SECS] [-s]

pg_ctl promote  -D /pgdata/16/main

- 8.向进程发送消息。在没有kill命令的windows上使用

pg_ctl kill     SIGNALNAME PID

- 9.注册和注销服务

pg_ctl register | unregister

linux 下:
# 注册(需 root)
sudo pg_ctl register -D /pgdata/16/main \
                     -N postgresql-16 \
                     -S auto \
                     -w -t 60

# 注销
sudo pg_ctl unregister -N postgresql-16

注册后可用 systemctl start postgresql-16。

- 10.进入单用户模式

# 连接 postgres 数据库,仅本地、单会话
pg_ctl start -D /pgdata/16/main -o "--single -F" -l /dev/null

- 11.带环境变量启动

# 临时修改端口、共享内存
PGPORT=5433 \
PGSHAREDPreFS=1GB \
pg_ctl start -D /pgdata/16/main -o "-c shared_buffers=256MB -c port=5433"

命令速查表

目的 命令
启动 pg_ctl start -D $PGDATA [-l logfile] [-w]
停止 pg_ctl stop -D $PGDATA [-m smart/fast/immediate]
重载 pg_ctl reload -D $PGDATA
重启 pg_ctl restart -D $PGDATA [-m smart]
状态 pg_ctl status -D $PGDATA
单用户 pg_ctl start -D $PGDATA -o "--single"
注册服务 pg_ctl register -D $PGDATA -N svcname

参数说明

-D DATADIR 数据库所在目录
-W 不等待操作完成
-s  仅打印错误
-t SECS 等待操作(参阅选项-w)完成的最大秒数
-l FILENAME 追加服务器日志输出到filename
-m SHUTDOWN-MODE 关闭模式:smart、 fast或immediate

-- Smart:等待所有客户端断开连接以及任何在线备份结束。
-- Fast:(默认)所有活动事务都被回滚并且客户端被强制断开连接,然后服务器被关闭。
-- Immediate:将立刻中止所有服务器进程,而不是做一次干净的关闭。

SIGNALNAME:ABRT HUP INT KILL QUIT TERM USR1 USR2
posted @ 2026-05-12 15:50  数据库小白(专注)  阅读(89)  评论(0)    收藏  举报