为什么PostgreSQL在逻辑复制中保留WAL文件的时间比必要时间长?如何限制它们?

时间:2019-05-20 19:19:05

标签: postgresql database-replication wal logical-replication

我试图仅在一个表上的两个服务器之间运行PostgreSQL(10.6)逻辑复制。该表具有Id(int2)作为主键。这是有意的,该表充当某些IoT时间序列数据的滚动窗口。在“主”节点上写很费力。整个表格大约包含10分钟的传感器数据。那就是我们想要保留的设计。

主节点和副本节点之间的逻辑复制非常有效,直到网络中断持续超过1小时为止。同时,Master节点上的PostgreSQL正在收集WAL文件,并逐步在表上进行插入/更新。因此,有效的WAL文件甚至可能包含我们不感兴趣的甚至几小时的数据,并且当连接恢复时,它们将永远需要从Master-> Replica逐步重播。基本上是重播数据库表中长时间不存在的记录!

如何设置它以便仅重播相关数据?如果很难做到,有没有办法丢弃比10分钟更旧的WAL文件,以便根本不会发送它们?

我尝试使用postgresql.conf设置。我不确定是否有一个标志可以在复制插槽断开连接的情况下限制WAL文件的存储。

这是表格的样子:

CREATE TABLE iot_ts (id int2 not null, time timestamp(0) not null, value real, primary key(id));

我希望对这种表进行逻辑复制,以便在长时间的Internet中断时恢复速度很快,并且仅包含最新数据。

0 个答案:

没有答案