一、概述
控制 PostgreSQL 服务的工具。
二、语法
shell
--初始化数据库实例
pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]
--启动数据库实例
pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]
--停止数据库实例
pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]
--重启数据库实例
pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] [-o options] [-c]
--重新加载数据库配置文件
pg_ctl reload [-D datadir] [-s]
--查看数据库状态
pg_ctl status [-D datadir]
--备库切换为主库
pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]
--轮换服务器日志文件
pg_ctl logrotate [-D datadir] [-s]
--向一个指定进程发送一个消息
pg_ctl kill signal_name process_id
--注册服务(Windows)
pg_ctl register [-D datadir] [-N servicename] [-U username] [-P password] [-S a[uto] | d[emand] ] [-e source] [-W] [-t seconds] [-s] [-o options]
--移除服务(Windows)
pg_ctl unregister [-N servicename]
init 或 initdb:调用initdb命令。详见initdb。
参数说明:
-c 或 --core-files :生成服务器崩溃产生核心文件。
-D datadir 或 --pgdata=datadir :指定数据库数据文件位置。如果这个选项被忽略,将使用环境变量 PGDATA。
-l filename 或 --log=filename :追加服务器日志输出到 filename。
-m mode 或 --mode=mode :指定关闭模式。mode 可以是 smart、fast 或 immediate,或者这三者之一的第一个字母。如果这个选项被忽略,则 fast 是默认值。
-o options 或 --options=options :指定被直接传递给 postgres 命令的选项。-o 可以被指定多次,所有给定的选项都会被传过去。这些选项应该通常被单引号或双引号包围来确保它们被作为一个组传递。
-o initdb-options 或 --options=initdb-options :指定要直接传递给 initdb 命令的选项。-o 可以被指定多次,所有给定的选项都会被传过去。这些选项应该通常被单引号或双引号包围来确保它们被作为一个组传递。
-p path :指定 postgres 可执行程序的位置。默认情况下,postgres 可执行程序可以从 pg_ctl 相同的目录得到,或者如果没有在那里找到,则在硬写的安装目录中获得。除非你正在做一些不同寻常的事并且得到错误说没有找到 postgres 可执行程序,这个选项不是必需的。在 init 模式中,这个选项类似于指定了initdb可执行程序的位置。
-s 或 --silent :只打印错误,不打印信息性的消息。
-t seconds 或 --timeout=seconds :指定等待一个操作完成时要等待的最大秒数(见选项 -w)。默认为 PGCTLTIMEOUT 环境变量的值,如果该环境变量没有设置则默认为60秒。
-V 或 --version :打印 pg_ctl 版本并退出。
-w 或 --wait :等待操作完成。模式 start、stop、restart、promote 以及 register 支持这个选项,并且对那些模式是默认的。在等待时,pg_ctl 会一遍又一遍地检查服务器的 PID 文件,在两次检查之间会休眠一小段时间。当 PID 文件指示该服务器已经做好准备接受连接时,启动操作被认为完成。当服务器移除 PID 文件时,关闭操作被认为完成。pg_ctl 会基于启动或关闭的成功与否返回一个退出代码。如果操作在超时时间(见选项-t)内未能完成,则 pg_ctl 会以一个非零退出状态退出。但是注意该操作可能会在后台继续进行并且最终取得成功。
-W 或 --no-wait:不等待操作完成。这是选项 -w 的对立面。如果禁用等待,所请求的动作会被触发,但是不会有关于其成功与否的反馈。在这种情况下,可能必须用服务器日志文件或外部监控系统来检查该操作的进度以及成功与否。在以前版本的PostgreSQL中,这是除 stop 模式之外的模式的默认选项。
参数说明(Windows):
-e source :作为一个 Windows 服务运行时,pg_ctl 用来在事件日志中记录日志的事件源的名称。默认是 PostgreSQL。注意这只控制由 pg_ctl 本身发送的消息,一旦开始,服务器将使用 event_source 参数中指定的事件源。如果服务器在启动时很早(在该参数被设置前)就失败,它可能也会使用默认的事件源名称 PostgreSQL 来记录。
-N servicename :要注册的系统服务的名称。这个名称将被用于服务名和显示名。默认 PostgreSQL。
-P password :用于运行该服务的用户的口令。
-S start-type :要注册的系统服务的启动类型。启动类型可以是 auto、demand 或者两者之一的第一个字母。如果这个选项被忽略,则 auto 是默认值。
-U username:用于运行该服务的用户的用户名。对于域用户,使用格式 DOMAIN\username。
三、示例
shell
--启动
pg_ctl start
--要使用端口 5433 启动,并且运行时不使用fsync:
pg_ctl -o "-F -p 5433" start
--停止
pg_ctl stop
pg_ctl stop -m smart
--重启
pg_ctl restart
--如果指定了-o,则会替换任何之前的选项。要使用端口 5433 重启并在重启时禁用fsync:
pg_ctl -o "-F -p 5433" restart
--查看状态
pg_ctl status
pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"
第二行是在重启模式可能被调用的命令行。