用心打造
VPS知识分享网站

PostgreSQL提示database system is in recovery mode,实例是在恢复还是备库?

本文于 2026-10-23 08:16 更新,部分内容具有时效性,如有失效,请留言

连接PostgreSQL时看到the database system is in recovery mode,说明当前实例尚不能按预期接受这类连接。它可能仍在启动后的WAL恢复,也可能是按设计运行的备库。

先分清实例角色和恢复进度,再决定是否需要操作。直接删除信号文件或强行提升备库可能破坏复制拓扑。

PostgreSQL实例正在恢复并重放数据的示意图

先看启动日志与服务状态

检查systemctl status postgresql以及对应实例日志,记录启动时间、WAL重放、是否达到一致性状态和后续错误。容器部署应读取实际数据库容器日志。

短暂的启动恢复与长时间卡住不是同一故障。恢复持续时间与WAL量、磁盘性能及前次关机状态相关。

确认是不是预期中的备库

官方热备文档说明,备库在归档恢复或standby模式下可在达到一致性状态后提供只读查询;hot_standby需要启用。能连接时执行SELECT pg_is_in_recovery();识别当前角色。

结果为true说明仍处于恢复流程,不代表实例异常。应用写入应指向主库。

检查连接入口和路由

核对应用连接串、代理、负载均衡和DNS是否把请求送到了备库。若只读查询也无法连接,检查热备配置及日志中是否显示还未达到一致性状态。

不要靠反复重启备库解决错误的主备路由。先修正应用的写入入口。

持续无法恢复时处理什么

确认磁盘空间、WAL来源和归档是否可用,检查是否存在复制连接中断或需要的WAL缺失。保留原日志与备份信息,按当前PostgreSQL版本的恢复手册处理。

不要手工删除pg_wal或随意移除standby.signal。这可能导致恢复失败或意外改变实例角色。

在隔离环境验证切换

需要调整主备路由或恢复演练时,可在萤光云或LightNode的独立实例先走完整流程。验收应包括主库可写、备库只读以及复制延迟处于可接受范围。

FAQ

问:pg_is_in_recovery()为true就要执行提升吗?答:不需要。备库返回true是正常现象;只有明确的故障切换方案才应考虑提升。

温馨提示

温馨提示:恢复期间应保留可验证的备份和WAL链;不要在没有拓扑图与回退方案时修改主备角色。

赞(0)
未经允许不得转载;国外VPS测评网 » PostgreSQL提示database system is in recovery mode,实例是在恢复还是备库?
分享到