Java中的Aurora Postgres逻辑复制

0

【以下的问题经过翻译处理】 我的目标是在运行在JVM上的系统中流式传输Postgres WAL。我正在使用Aurora RDS Postgres。

如果我尝试运行以下内容:

    PGReplicationStream stream =
        pgConnection.getReplicationAPI()
            .replicationStream()
            .logical()
            .withSlotName("test_slot")
            .withStartPosition(lsn)
            .start();

我会收到以下错误:

; (err) ERROR: syntax error at or near "START_REPLICATION"
; (err)   Position: 1

Postgres记录了以下命令:

:ERROR:  syntax error at or near "START_REPLICATION" at character 1
:STATEMENT:  START_REPLICATION SLOT test_slot LOGICAL 0/40DCC70;

这看起来就像jdbc驱动程序正在尝试写入的命令。 (如此处所示:https://github.com/pgjdbc/pgjdbc/blob/f61fbfe7b72ccf2ca0ac2e2c366230fdb93260e5/pgjdbc/src/main/java/org/postgresql/core/v3/replication/V3ReplicationProtocol.java#L91-L96)

START_REPLICATION似乎是Postgres支持的命令。 Aurora RDS不支持吗?如果是这样,有没有其他方法来实现这一点?

profile picture
专家
已提问 8 个月前47 查看次数
1 回答
0

【以下的回答经过翻译处理】 问题在于我使用了错误的“connection”。我使用了HikariCP,认为我可以从中取一个连接。

但是,你需要做的是创建一个特定的“ replication”连接。例如:

    属性属性 =新属性();
    PGProperty.USER.set(props,“用户”);
    PGProperty.PASSWORD.set(props,“密码”);
    PGProperty.ASSUME_MIN_SERVER_VERSION.set(props,“9.4”);
    PGProperty.REPLICATION.set(props,“数据库”);
    PGProperty.PREFER_QUERY_MODE.set(props,“简单”);

    连接con = DriverManager.getConnection(url,props);

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则