在使用Debezium Postgres连接器捕获Aurora Postgres上的更改数据时,我们看到对于所有INSERT操作,我们都能正确地获得捕获的数据。但是对于UPDATE操作,我们看到我们没有任何before/old数据,只有获取after/new数据。同样对于DELETE操作,我们只填充主键值,其余字段设置为null。
我们在apachecamel中对debezium连接器的配置如下:
String uri = "debezium-postgres:dbz-test-1?" +
"databaseHostName=" + host +
"&databaseUser=" + username +
"&databasePassword=" + password +
"&databasePort=" + port +
"&databaseDbname=" + dbName +
"&slotName=" + dbName +
"&databaseSslMode=require" +
"&databaseServerName=my-server1" +
"&offsetStorageFileName=offset-file-1.dat" +
"&snapshotMode=initial" +
"&pluginName=pgoutput" +
"&eventProcessingFailureHandlingMode=warn" +
"&tombstonesOnDelete=false" +
"&databaseHistoryFileFilename=history-file-1.dat";
我们基本上尝试过的两件事:
- 将
tombstonesOnDelete
显式设置为false。。。但这并没有多大帮助 - 将特定表的REPLICA_IDENTITY设置为值FULL。但在设置此值后,更新会导致复制状态被设置为关闭。基本上,PG逻辑复制失败
有人能帮忙吗?我的要求是在UPDATE和DELETE操作期间获取所有以前/旧的数据。
你赢了吗。如果是的话,请问是怎么解决的。
edit:fix是在postgres表上运行alter命令。更改表表名副本完整