pg_ctl 是 PostgreSQL数据库自带的实用工具,具有以下功能:
- 初始化PostgreSQL数据库实例
- 启动,停止,重启PostgreSQL数据库服务
- 查看PostgreSQL数据库服务的状态
- 让数据库重新读取配置文件
- 将备库提升为主库
- 给指定的进程发送信号
Usage:
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]
pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl kill SIGNALNAME PID
1. 初始化PostgreSQL数据库实例
pg_ctl init[db] [-s] [-D datadir] [-o options]
实际调用initdb命令进行数据库实例的初始化。
示例:
pg_ctl init -s -D /data/pg
-s 只打印错误和告警信息,不打印提示性信息
-D datadir,指定数据库实例的数据目录
-o options,直接传递给initdb命令的参数
2. 启动PostgreSQL数据库
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
示例:
pg_ctl start -w -D /data/pg
start,启动数据库实例
-w,等待启动完成
-t,等待启动完成等待的秒数,默认60秒
-s,只打印错误和告警信息,不打印提示性信息
-D datadir,指定数据库实例的数据目录
-l,把服务器日志输出附加在filename文件上
-o options,指定传递给postgres程序的选项
-p path,指定postgres程序位置,默认与pg_ctl同一个目录
-c,提高服务器的软限制(ulimit -c),允许数据库实例异常时产生一个coredump文件,以便于问题的排查与分析
3. 停止PostgreSQL数据库
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s|f|i ]
示例:
pg_ctl stop -D /data/pg -m f
-W,不等待数据库停下来就返回
-m,指定停止的模式,可选值s(smart),f(fast),i(immediate)。
4. 重启PostgreSQL数据库
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s|f|i ] [-o options]
示例:
pg_ctl restart -D /data/pg
5. 重新读取配置文件
pg_ctl reload [-s] [-D datadir]
示例:
pg_ctl reload -D /data/pg
在配置文件中改变参数后,需要使用上述命令使参数生效。
6. 查看数据库实例状态
pg_ctl status [-D datadir]
7. 将备库提升为主库
pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
示例:
pg_ctl promote -D /data/pg
8. 给进程发送信号
pg_ctl kill [signal_name] [process_id]
示例:
pg_ctl kill INT 3900