🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pg_ctl是一个用于初始化PostgreSQL数据库集簇,启动、停止或重启PostgreSQL数据库服务器,或者显示一个正在运行服务器的状态的工具。 | 命令格式 | 解释 | | --- | --- | | **pg_ctl init[db]** [-D DATADIR] [-s] [-o OPTIONS] | `init`或`initdb`模式会创建一个新的PostgreSQL数据库集簇,也就是将由一个单一服务器实例管理的数据库集合。这个模式会调用`initdb`命令 | | **pg_ctl start** [-D datadir] [-l filename] [-W] [-t seconds] [-s] <br> [-o options] [-p path] [-c] | `start`模式启动一个新的服务器。该服务器被启动在后台,并且它的标准输出被附加到`/dev/null` | | **pg_ctl stop** [-D datadir] [-m s[mart] \| f[ast] \| i[mmediate]] [-W] <br> [-t seconds] [-s]| `stop`模式关闭运行在指定数据目录中的服务器。 | | **pg_ctl restart** [-D datadir] [-m s[mart] \| f[ast] \| i[mmediate]] [-W] <br> [-t seconds] [-s] [-o options] [-c] | `restart`模式实际上会先执行一个停止操作然后紧接着执行一个启动操作 | | **pg_ctl reload** [-D datadir] [-s] | `reload`模式会向`postgres`服务器进程发送一个SIGHUP信号,使它重新读取配置文件(`postgresql.conf`等) 使配置生效,而无需重启服务器| | **pg_ctl status** [-D datadir] | `status`模式检查一个服务器是否运行在指定的数据目录中。如果有一个服务器正在运行,其PID和用来调用它的命令行选项将被显示。如果服务器没有在运行,pg\_ctl将返回退出状态 3。如果没有指定一个可以访问的数据目录,pg\_ctl将返回退出状态 4。 | | **pg_ctl promote** [-D datadir] [-W] [-t seconds] [-s] | 将备库提升为主库 | | **pg_ctl logrotate** [-D datadir] [-s] | `logrotate`模式轮换服务器日志文件 | | **pg_ctl kill** signal_name process_id | `kill`模式向一个指定进程发送一个信号 | > **option:** >* **-D, --pgdata=DATADIR:** 指定数据库配置文件的文件系统位置。如果这个选项被忽略,将使用环境变量`PGDATA` >* **-s, --silent:** 只打印错误,不打印信息性的消息 >* **-t, --timeout=SECS:** 指定等待一个操作完成时要等待的最大秒数(见选项`-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相反 > * 如果禁用等待,所请求的动作会被触发,但是不会有关于其成功与否的反馈。在这种情况下,可能必须用服务器日志文件或外部监控系统来检查该操作的进度以及成功与否。 > * 在9.4以前版本的PostgreSQL中,这是除`stop`模式之外的模式的默认选项。 >* **-?, --help :** 显示有关pg\_ctl命令行参数的帮助并退出 >* **-c, --core-files:** 在可行的平台上尝试允许服务器崩溃产生核心文件,方法是提升在核心文件上的任何软性资源限制。这通过允许从一个失败的服务器进程中获得一个栈跟踪而有助于调试或诊断问题 >* **-l, --log=FILENAME:** 追加服务器日志输出到*`filename`*。如果该文件不存在,它会被创建。umask被设置成 077,这样默认情况下不允许其他用户访问该日志文件 >* **-o, --options=OPTIONS :** 指定被直接传递给`postgres`命令的选项。`-o`可以被指定多次,这些选项应该通常被单引号或双引号包围来确保它们被作为一个组传递 >* **-p PATH-TO-POSTGRES :** 指定`postgres`可执行程序的位置。默认情况下,`postgres`可执行程序可以从`pg_ctl`相同的目录得到 >* **-m, --mode=MODE:** `mode`可以是`smart`、`fast`或`immediate`,或者这三者之一的第一个字母。如果这个选项被忽略,则`fast`是默认值 > * “Smart”模式不允许新连接,然后等待所有现有的客户端断开连接以及任何在线备份结束 > * “Fast”模式(默认)不会等待客户端断开连接并且将终止进行中的在线备份。所有活动事务都被回滚并且客户端被强制断开连接 > * “Immediate”模式将立刻中止所有服务器进程,而不是做一次干净的关闭,这种选择将导致下一次重启时进行一次崩溃恢复 | 使用实例 | 解释 | | --- | --- | | pg\_ctl promote -D /data/pg | 将备库提升为主库 | | pg_ctl -o "-F -p 5433" restart | 使用端口 5433 重启并在重启时禁用`fsync` |