将大型CSV复制到PostgreSQL后,流复制失败

时间:2019-06-27 14:22:52

标签: postgresql postgresql-9.4 wal

我在Streaming Replication中设置了一个postgreSQL集群,其中有一个主服务器和两个从属服务器。

我创建了一些数据库,然后看到将其复制到从属服务器。 然后,我执行了COPY命令以在master上导入大数据集(3GB)。当COPY命令完成并显示以下消息:COPY 43928933时,我观察到一种奇怪的行为。从csv导入的数据不会复制到从属服务器,流复制也不再起作用。我在没有复制到从属服务器的主节点上创建了一个数据库。

我用

看到一个从站上的日志
tail -f 100 /var/log/postgresql/postgresql-9.4-main.log

我看到了:

  

2019-06-27 14:12:48.919 UTC [13099]日志:从以下位置开始流式传输WAL   主要时间轴1的0/20000000时间2019-06-27 14:12:48.919 UTC   [13099]严重:无法从WAL流接收数据:错误:   请求的WAL段000000010000000000000020已经   删除

     

2019-06-27 14:12:53.931 UTC [13104]日志:开始流式传输    在时间轴1上从主要时间0/20000000处获得WAL的消息2019-06-27 14:12:53.931    UTC [13104]严重:无法从WAL流接收数据:错误:    请求的WAL段000000010000000000000020已经    删除

     

2019-06-27 14:12:58.943 UTC [13113]日志:从以下位置开始流式传输WAL   主要时间轴1的0/20000000时间2019-06-27 14:12:58.943 UTC   [13113]严重:无法从WAL流接收数据:错误:
  请求的WAL段000000010000000000000020已经   删除

有人知道如何解决此问题吗?我不了解这种行为。

1 个答案:

答案 0 :(得分:0)

对于PostgreSQL 9.4,您需要增加wal_keep_segments或使用replication slots,以便主要服务器在从属服务器接收WAL之前不会覆盖它们。