PostgreSQL 12备份时出现Connection reset by peer错误求助
解决PostgreSQL 12大数据库备份触发“Connection reset by peer”的问题
错误场景
<pgAdmin 4 - DB:postgres>]>:idleLOG: 无法从客户端接收数据:Connection reset by peer
在同一服务器上备份700GB的PostgreSQL 12数据库时,备份文件到100GB或200GB就出现上述错误,但空闲状态下备份文件能达到400GB。
可行解决方案
1. 排查系统资源瓶颈
- 先查备份目标磁盘空间:用
df -h确认剩余空间足够容纳700GB备份,避免中途空间耗尽导致连接中断。 - 检查用户进程限制:执行
ulimit -a看file size项,要是限制低于700GB,修改/etc/security/limits.conf提升文件大小上限。
2. 弃用pgAdmin,改用原生pg_dump命令
pgAdmin作为GUI工具,长连接稳定性不如原生命令行。直接用下面的命令备份:
pg_dump -U 用户名 -d 数据库名 -Fc -f /备份路径/backup_file.dump
-Fc是自定义格式,高效还支持断点续传;要压缩的话,直接结合gzip:
pg_dump -U 用户名 -d 数据库名 | gzip > /备份路径/backup_file.sql.gz
3. 调优PostgreSQL连接参数
修改postgresql.conf里的参数,优化长连接稳定性:
- 增大
wal_buffers和maintenance_work_mem,给备份分配更多内存; - 调整TCP保活参数,防止系统或防火墙断开连接:
修改完重启PostgreSQL服务生效。tcp_keepalives_idle = 60 tcp_keepalives_interval = 10 tcp_keepalives_count = 10
4. 检查磁盘硬件健康
备份时磁盘IO异常也会导致连接重置:
- 用
smartctl -a /dev/磁盘设备名检查磁盘是否有坏道或IO错误; - 查看系统日志
/var/log/messages或/var/log/syslog,找磁盘相关报错。
5. 拆分备份任务
要是单库备份压力太大,拆分任务降低风险:
- 按schema或者表分组备份,减少单次备份的数据量;
- 备份完成后统一归档,避免单个超大文件的问题。
内容的提问来源于stack exchange,提问作者sayali rane
相关产品推荐
相关产品推荐

