flink cdc 订阅 oceanbase变更数据,读取非监控范围的库表数据

【 使用环境 】测试环境
【 OB or 其他组件 】oceanbase + flink cdc + StarRocks
【 使用版本 】 OceanBase 4.0 集群,flink-1.16.1 单机, StarRocks3.0集群
flink-cdc(flink-sql-connector-oceanbase-cdc-2.3.0.jar,flink-connector-jdbc-1.16.1.jar)
参考文档:【SOP 系列 18】(4.0 版本)使用 Flink 同步 OceanBase 不同租户之间数据
【问题描述】flink cdc 订阅 oceanbase多库多表的变更数据,flink-oceanbase-cdc 读取到非监控范围的库表数据
【复现路径】问题出现前后相关操作
【问题现象及影响】
source端读取非监控数据,下游需通过额外的过滤算子对脏数据进行清洗

【附件】 以下是oceanbaseSource的参数:qnm_test和qnm_test1是监控的两个库
test是qnm_test库的表; test1是qnm_test1库的表


打印非监控范围的库表,如下:

error1.log (41.3 KB)

还有一个疑问:tableName参数:如果表名前不能加库名(已测试验证),配置多表的情况下, 那底层是会去databaseName中挨个遍历检索嘛?

升级一下 flink cdc, libobcdc 从 4.x 开始对 clog 只能过滤到租户级别了,我们在 flink cdc 2.4.x 更新了这部分的适配,在 connector 本地做了过滤。

databaseName 和 tableName 是逐层遍历的,相关逻辑可以看下这个 getTables 函数:
https://github.com/ververica/flink-cdc-connectors/blob/master/flink-connector-oceanbase-cdc/src/main/java/com/ververica/cdc/connectors/oceanbase/source/OceanBaseConnection.java#L116

1 个赞

谢谢大佬!测试暂时没问题