重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: PostgreSQL关闭数据库服务的三种模式 [打印本页]

作者: jiawang    时间: 2025-7-17 09:01
标题: PostgreSQL关闭数据库服务的三种模式
PostgreSQL 关闭数据库服务支持三种模式,其在行为、适用场景及底层实现上存在显著差异:


一、智能关闭模式(Smart Shutdown)
‌信号机制‌:向主进程发送 SIGTERM 信号13;
‌关闭行为‌:
阻止新客户端连接,但允许现有会话继续工作直至主动断开;
若数据库处于恢复或流复制状态,需等待所有常规会话终止后才停止相关操作13;
‌适用场景‌:需优雅关闭且容忍等待时间的场景,类似 Oracle 的 shutdown normal19;
‌命令示例‌:
pg_ctl stop -m smart


二、快速关闭模式(Fast Shutdown)
‌信号机制‌:向主进程发送 SIGINT 信号,子进程接收 SIGTERM23;
‌关闭行为‌:
立即拒绝新连接,强制中断活跃事务并回滚;
终止所有客户端连接后关闭数据库37;
‌适用场景‌:需快速终止服务但允许事务回滚的场景,类似 Oracle 的 shutdown immediate913;
‌命令示例‌(此为默认模式):
pg_ctl stop -m fast
# 或简写为
pg_ctl stop


三、立即关闭模式(Immediate Shutdown)
‌信号机制‌:向子进程发送 SIGQUIT 信号,若 5 秒未终止则发送 SIGKILL37;
‌关闭行为‌:
直接终止所有进程,跳过关库流程;
重启时需通过 WAL 日志恢复数据一致性38;
‌适用场景‌:数据库异常或紧急停机场景,类似 Oracle 的 shutdown abort913;
‌命令示例‌:
pg_ctl stop -m immediate


综合对比与注意事项
模式        数据安全性        停机速度        恢复需求        推荐场景
智能关闭        高        慢        无需恢复        计划维护、低负载时段
快速关闭        中        中        无需恢复        常规停机、需快速终止
立即关闭        低        极快        需 WAL 日志恢复        紧急故障、不可控中断


‌关键建议‌:生产环境优先选用 fast 模式避免长时阻塞,仅在极端情况下使用 immediate 模式以减少数据风险28。






欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2