假设关闭模式是否正确smart
,即
pg_ctlcluster 9.6 main stop
不适用于 PostgreSQL 备用服务器,我将始终不得不使用关闭模式fast
(或immediate
):
pg_ctlcluster 9.6 main stop -m fast
我假设是因为以下段落pg_ctl(1)
:
可以使用 -m 选项选择三种不同的关闭方法。“智能”模式等待所有活动客户端断开连接并等待任何在线备份完成。如果服务器处于热备状态,一旦所有客户端断开连接,恢复和流复制将终止。“快速”模式(默认)不等待客户端断开连接并将终止正在进行的在线备份。回滚所有活动事务并强制断开客户端连接,然后关闭服务器。“立即”模式将立即中止所有服务器进程,而不会干净关闭。这将导致在下次重启时运行崩溃恢复。
我有点犹豫,因为到目前为止我一直只在相对紧急的情况下使用fast
(或)。immediate
WAL 接收器既不是活动客户端,也不是在线备份。因此,在 master 上执行的所谓“智能”关闭不会无限期地等待 WAL 接收器自行消失。相反,它会主动断开 WAL 接收器。这几乎是它做的最后一件事——它等待关闭检查点完成,并将包含该检查点记录的 WAL 流式传输到副本,然后断开它。
如果您担心“如果服务器处于热备状态,一旦所有客户端断开连接,恢复和流式复制将终止”,那是在描述当智能关闭针对副本启动时会发生什么,而不是针对主控。master 永远不会“处于热备状态”,即只有 replica 才能处于的状态。