首批通过分布式安全可靠测评,为关键业务系统打造
CDC 黑白名单
更新时间:2026-04-10 11:58:36
OceanBase 4.x 分离了分区和日志流,一个租户 Unit 内的所有分区事务日志可在一个日志流记录。因此,相对减少了日志流数量,但一条日志流可能包含大量表数据,导致 CDC 需要拉取所有日志流数据。
在 OceanBase 4.x 中,默认的最小数据同步级别是租户级别。然而,对于某些用户来说,租户级别的同步粒度过大,可能导致下游消费压力过大。为了解决这个问题,CDC 在 OceanBase 4.x 中引入了表级别的黑白名单功能,以减少无谓的数据存储。同时,CDC 在 OceanBase 4.x 中还支持无限制的黑白名单配置,允许配置项的大小超过当前的 64KB 限制。
此外,CDC 的黑白名单功能在 OceanBase 4.x 中还支持重命名表(rename table),即可以将一个白名单中的表通过 DDL rename 成黑名单,此时该表不再同步,您无需重新修改黑白名单配置即可生效。
CDC 黑白名单配置项介绍
CDC 兼容 OceanBase 3.x 的黑白名单功能,同步粒度支持租户、库和表。CDC 有以下两个配置项:
| 配置项 | 描述 | 默认值 | 是否支持动态变更 | 备注 |
|---|---|---|---|---|
tb_white_list |
同步的表的白名单 | *.*.* |
否 | 三元组格式:租户名.库名.表名。默认 *.*.* 代表同步整个集群。不同的三元组用 | 分割,单个三元组支持正则匹配。 |
tb_black_list |
同步的表的黑名单 | | | 否 | 格式同上 |
enable_white_black_list |
是否开启黑白名单 | 1 |
否 |
操作示例
以白名单为例:
同步 mytenant1 租户,db1 库的 tb1 表以及 mytenant2 租户,db2 库下的所有表
mytenant1.db1.tb1|mytenant2.db2.*
同步 mytenant1 租户,db1 库的 tb1 表和 tb2 表:
mytenant1.db1.tb1|mytenant1.db1.tb2
同步 mytenant1 租户,db1 库,前缀匹配 tb 的表:
mytenant1.db1.tb*
说明
CDC 支持的正则规则包括:*、?、[seq] 和 [!seq]。
使用方式
CDC 早期版本由于复用了OceanBase 配置,单配置项上限为 64K。现在黑白名单不再受此限制。您可以在 libobcdc.conf 中配置黑白名单。
######### [working_mode] #########
#working_mode=memory
meta_data_refresh_mode=data_dict
#meta_data_refresh_mode=online
######### [synchronous information] #########
tb_white_list=*.*.*
#tb_white_list=sys.oblog*.*|oblog_tt.*.*
tb_black_list=t1.d1.t1
instance_index=0
instance_num=1
使用以下命令启动:
./obcdc_tailf -V -f libobcdc.conf -T $TIMESTAMP
同时 CDC 也支持是否开启黑白名单,配置项为enable_white_black_list,默认值为 1,默认开启。
#libobcdc.conf
enable_white_black_list=0