PG_DUMP内存出错

时间:2015-06-24 03:25:25

标签: postgresql pg-dump

我正在尝试使用pg_Dump备份数据库产品。

数据库的总大小为1.6 GB。数据库中的一个表是product_image,大小为1GB。

当我在数据库上运行pg_dump时,数据库备份因此错误而失败。

##pg_dump: Dumping the contents of table "product_image" failed: 
PQgetCopyData
() failed.
pg_dump: Error message from server: lost synchronization with server: 
got messag
e type "d", length 6036499
pg_dump: The command was: COPY public.product_image (id, username, 
projectid, session, filename, filetype, filesize, filedata, uploadedon, "timestamp") T

如果我尝试通过排除product_image表来备份数据库,则备份会成功。

我尝试将postgres.conf中的shared_buffer从128MB增加到1.5gb,但问题仍然存在。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的错误,这是由于RedHat for OpenSSL在6月初(2015年)发布了一个错误的补丁。 PostgresSQL邮件列表中有related discussion

如果您使用SSL连接并跨越传输大小阈值(取决于您的PG版本(PG默认为512MB< 9.4)),隧道会尝试重新协商SSL密钥,并且连接会因您发布的错误而死亡。 / p>

对我有用的修复是在postgresql.conf中将ssl_renegotiation_limit设置为0(无限制),然后重新加载。

  

ssl_renegotiation_limit(整数)

     
    

指定在重新协商会话密钥之前,可以通过SSL加密的连接传输多少数据。当可以检查大量流量时,重新协商可以降低攻击者进行密码分析的可能性,但是它也会带来很大的性能损失。发送和接收流量的总和用于检查限制。如果此参数设置为0,则禁用重新协商。默认值为512MB。