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
EXPERTE
gefragt vor 9 Monaten53 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen