Azure PostgreSQL弹性服务器pg_dump备份失败求助
问题描述
运行Azure PostgreSQL弹性服务器,执行pg_dump备份数据库时失败,使用的命令如下:
pg_dump -b -Z0 -F t --host=hidden --username=hidden --dbname=temp --file=backup.tar
报错信息:
pg_dump: error: error reading large object 350828: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.
排查原因及解决方案
- 大对象损坏:报错明确指向大对象ID 350828,优先检查该对象是否损坏。执行
SELECT lo_get(350828);测试读取,若同样报错,说明对象损坏,需从有效备份恢复该对象,或删除后重建。 - 连接超时触发:Azure PostgreSQL弹性服务器有默认连接超时配置,长时间备份大对象可能触发超时。检查服务器
idle_in_transaction_session_timeout参数,或Azure门户中的连接超时设置,适当调大后重试。 - 服务器资源耗尽:备份期间CPU、内存或磁盘IO过载会导致PostgreSQL进程异常终止。查看Azure门户的监控指标(CPU使用率、内存压力、磁盘IOPS),确认是否有资源瓶颈。可临时升级服务器规格,或在低峰期执行备份。
- 网络连接不稳定:客户端与Azure服务器间的网络中断会导致连接意外关闭。建议在同区域Azure VM内执行备份,降低网络延迟;或使用
pg_dump --no-sync参数(风险可控时使用)减少磁盘同步等待,缩短备份时长。 - 版本不兼容:你参考的是PostgreSQL 7.2的文档,而Azure PostgreSQL版本通常远高于此,版本不匹配可能导致大对象处理逻辑异常。确保
pg_dump版本与服务器版本一致(用pg_dump --version和SELECT version();分别确认客户端和服务器版本)。 - Azure服务端限制:Azure PostgreSQL弹性服务器对备份任务的时长或数据量可能有隐性限制。尝试拆分备份:先不带
-b参数备份非大对象数据,再单独用pg_dump -b -F t --dbname=temp --file=lo_backup.tar备份大对象,以此定位问题。
内容的提问来源于stack exchange,提问作者Sajith Dilshan Jamal
相关产品推荐
相关产品推荐

