我的目标是在 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 驱动程序正在尝试编写的命令。 (见这里)
START_REPLICATION 似乎是 Postgres 支持的命令。是极光RDS不支持这个吗?如果是这样,是否有其他方法可以做到这一点?
PostgreSQL 服务器似乎无法识别 START_REPLICATION 命令。
一个可能的原因可能是数据库中未启用提供逻辑解码功能的 pgoutput 扩展。您可以尝试通过在 PostgreSQL 控制台中运行以下命令来启用它:
创建扩展 pgoutput; 我希望这有帮助