Postgresql逻辑复制插槽是否使用wal_keep_segments属性?

问题描述 投票:0回答:2

我正在创建复制插槽,并通过JDBC驱动程序将更改从AWS Postgres RDS流传输到Java进程。

我的复制插槽创建代码如下所示。

final ReplicationSlotInfo replicationSlotInfo = pgConnection.getReplicationAPI()
                    .createReplicationSlot()
                    .logical()
                    .withSlotName(replicationSlotName)
                    .withOutputPlugin("wal2json")
                    .make();

并且我使用以下代码获得复制流。

pgConnection.getReplicationAPI()
                .replicationStream()
                .logical()
                .withSlotName(replicationSlotName)
                .withSlotOption("include-xids", true)
                .withSlotOption("include-timestamp", true)
                .withSlotOption("pretty-print", false)
                .withSlotOption("add-tables", "public.users")
                .withStatusInterval(10, TimeUnit.SECONDS)
                .start()

当复制器Java进程未运行时,WAL大小会增加。这是我用来查找复制滞后的查询。

SELECT
    slot_name,
    pg_size_pretty(pg_xlog_location_diff(pg_current_xlog_location(), restart_lsn)) AS replicationSlotLag,
    active
FROM
    pg_replication_slots;

输出:

slot_name   replicationslotlag  active
data_stream_slot    100 GB  f

此复制滞后已超出RDS磁盘的范围,RDS磁盘将关闭RDS。

我以为wal_keep_segments会处理这个设置为32的问题。但是它没有用。即使没有运行Java复制过程,我是否还需要设置其他属性来避免这种情况。

postgresql jdbc replication logical-replication
2个回答
0
投票

[wal_keep_segments与逻辑解码无关。

使用逻辑解码,您始终必须使用逻辑复制插槽,这是一种标记事务日志(WAL)中位置的数据结构,因此服务器永远不会丢弃逻辑解码可能会破坏的旧WAL段。仍然需要。

这就是为什么如果不使用更改,您的WAL目录就会增加的原因。

wal_keep_segments指定要保留的旧WAL段的数量minimum。它用于流复制,pg_receivewalpg_rewind等目的。


0
投票

wal_keep_segments指定PostgreSQL应在pg_xlog目录中保留的段的[[minimum)数。 PostgreSQL不删除段的原因可能有几个:

    在WAL位置比WAL文件更早的位置有一个复制插槽,您可以使用以下查询检查它:

  • SELECT slot_name, lpad((pg_control_checkpoint()).timeline_id::text, 8, '0') || lpad(split_part(restart_lsn::text, '/', 1), 8, '0') || lpad(substr(split_part(restart_lsn::text, '/', 2), 1, 2), 8, '0') AS wal_file FROM pg_replication_slots;
    1. WAL存档已启用,并且archive_command失败。请检查这种情况下的PostgreSQL日志。

  • 很久没有检查站。
  • © www.soinside.com 2019 - 2024. All rights reserved.