Bug 反馈
【 Bug 的影响】
移除filter_rules后,filter_rules还在生效中,不符合预期。比如说,前期设置了过滤TRUNCATE TABLE的操作,后续想移除这个过滤规则,发现还在生效中
【可能的问题复现步骤】
- 创建一个task,使用过滤规则
filters: # 上游数据库实例匹配的表的 binlog event filter 规则集
filter-rule-1: # 配置名称
schema-pattern: "*" # 库名匹配规则,支持通配符 "*" 和 "?"
table-pattern: "*" # 表名匹配规则,支持通配符 "*" 和 "?"
events: ["truncate table", "drop table", "rename table"] # 匹配哪些 event 类型
action: Ignore # 对与符合匹配规则的 binlog 迁移(Do)还是忽略(Ignore)
block-allow-list: # 定义数据源迁移表的过滤规则,可以定义多个规则。如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
single-rule:
do-tables:
- db-name: "test_db1"
tbl-name: "*"
# ----------- 实例配置 -----------
mysql-instances:
-
source-id: "source-1" # 对应 source.toml 中的 `source-id`
filter-rules: ["filter-rule-1"] # 该上游数据库实例匹配的表的 binlog event filter 规则名称
block-allow-list: "single-rule" # 该上游数据库实例匹配的表的 block-allow-list 过滤规则名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
syncer-config-name: "global" # syncers 配置的名称
- 使用同样的任务名,在配置中删除filter-rules,通过
stop-task
和start-task
修改任务配置
block-allow-list: # 定义数据源迁移表的过滤规则,可以定义多个规则。如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
single-rule:
do-tables:
- db-name: "test_db1"
tbl-name: "*"
# ----------- 实例配置 -----------
mysql-instances:
-
source-id: "source-1" # 对应 source.toml 中的 `source-id`
block-allow-list: "single-rule" # 该上游数据库实例匹配的表的 block-allow-list 过滤规则名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
syncer-config-name: "global" # syncers 配置的名称
- 在上游MySQL执行
TRUNCATE TABLE
操作
【看到的非预期行为】
如图所示,TRUNCATE操作仍旧被过滤掉了
【期望看到的行为】
TRUNCATE操作正常同步到下游
【相关组件及具体版本】
TiDB版本 5.1.2,DM版本v2.0.6