处理ddl中关于视图创建的sql,添加过滤器后无法被拦截

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 DM 使用环境】
V5.3.0

【概述】
在源库中,用户使用单独的账号创建视图,在同步过程中,DM执行此sql视图产生异常
【备份和数据迁移策略逻辑】

【尝试解决现象及结果】
问题产生时,已经做过如下处理,并产生对应结果
1、添加sql-pattern过滤,在filter级别下sql-pattern中添加了对所有视图ignore
正则表达式:*CREATE[\s\S]VIEW
完整配置:

结果:异常仍然存在,同步任务继续报错

2、在tidb添加对应账户
image

重启任务

结果:异常仍然存在,同步任务继续报错
【问题】
1、在执行此ddl语句错误阶段是在DM节点处出错还是在DM向tidb执行阶段出错呢?
2、为什么在filter中添加了sql过滤,但是还是无法忽略。

【业务影响】
极大

【附件】
截取出当前数据源所有任务的对应报错日志
bastion.gaiaworkforce.com_2021-12-20_14_19_24.log (30.5 MB)

2 个赞

更新情况,目前在worker所在的服务器已经添加了 sig 的用户,在重启任务后,任务仍然处于报错状态
image

1 个赞



使用你的正则匹配不到

1 个赞

这个我们尝试下,因为在脚本中需要多\进行转义,所以书写成 \\
实际的正则表达式应该是
CREATE[\s\S]*VIEW
这个是可以匹配到的

1 个赞
  1. 意思是配置中,其他的都生效了?只有 create view 无法生效吗?
  2. DM 和集群都是什么版本?(5.3.0吗?麻烦确认下)
  3. 上游是 MySQL 吗?什么版本
  4. 从日志中看报错信息:
  5. 所有的 view 都是类似这种吗?CREATE ALGORITHM=UNDEFINED DEFINER=sig@% SQL SECURITY DEFINER VIEW

1、目前来看其他的都生效了
2、DM全部升级为5.3.0
3、上游为mysql 5.7
5、目前所有产生的报错为: CREATE ALGORITHM=UNDEFINED DEFINER= xxx @ % SQL SECURITY DEFINER VIEW
报错机理应该都是未存在对应用户账号,账号很多,因为这个账号是对应到不同使用者的

  1. 感觉比较像的问题是 https://github.com/pingcap/tidb/issues/22750 的描述,在解析时就会报错,可能 DM 就抛出了异常。但是此问题应该在 5.3.0 修复了。
  2. 请问是否可以给出表结构和创建视图的文本信息,我们验证下,多谢。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。