DM重新部署worker

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

1、根据报错这是两个问题,出现 error 1290 的报错,请先确认是否做过重置密码的操作

2、tidb 中不支持外键约束,具体可以参照兼容性文档:

3、没有拉取 binlog 是指在worker 的 relaylog 没有拉取,还是指拉取了,但是 relay_meta 文件没有更新,拉取动作停滞了?

1:没有做过重置密码的操作 2:realy_meta文件没有更新,mysql-bin.000003 中的日志,realy log 只到下午四点的

realy log 只到下午四点的 ,没有拉取动作

1、下午 4 点前后上游 MySQL 和下游 TiDB 分别做过什么操作?检查下 mysql 的 cnf 配置文件以及 tidb server 的 配置文件中是否有 skip-table-grant 关键字

2、query-status / error 再查看下 task 的状态

1:四点之前上游进行了删除表操作,然后重新建表写入了数据 2:下游用skip语句 做了ddl语句跳过操作,stop任务,再重启任务报了这个错:::下面是我的task配置

3:query-status / error 查询 task状态

1、mysql 的 cnf 和 tidb server 的配置文件方便的话上传下吧

2、dm 过滤了 event drop table,然后你上游把表 drop 了后,上游新建表后,task 此时报错了吗?你处理报错的时候是用的 skip ddl 相关的命令?

3、check-task 看下结果

1:之前可以正常的同步只是重置了一下worker 应该和 mysql 的 cnf 和 tidb server 的配置文件 没有关系 2:在上游没有删除表时task报了一个别的错误,在解决过程中上游把表drop掉,task还是报的原来那个错误,最后stop了task 在start 就这样了

需要提供下完整的 check-task 的信息

这是日志信息 1

1、再次检查下报 error 1290 错误的上游 mysql 权限是否正确,建议在 task 服务器上 ,使用 mysql client 登陆上游 mysql,并 show grants for 确认权限,所需权限参照下述链接,并且在授权完成后,flush privileges 刷新权限

2、tidb 不支持外键约束,将外键约束报错的实例从 task 去掉,再观察一下

1:这是上游数据库的权限 image

2:对于外键表,上游需要对外键表进行同步,该如何操作? 以下方法是否可行 方法:在task中将有外键的表进行过滤,同步完上游表之后;暂停task任务修改task的配置,删除对外键的表进行过滤的规则并更新配置恢复task 任务,手动去下游执行上游表的DDL操作 此方法是否可行

  1. 上游至少需要具备以下权限,请确认一下:
  • REPLICATION SLAVE
  • REPLICATION CLIENT
  • RELOAD
  • SELECT
  1. 同步数据看起来没有问题,请确认一下去掉外键后业务上是否有其他的风险

您好,
这边验证了一下
版本:TiDB v3.0.3、DM v1.0.3
全量同步没问题, Task 任务处于 Syncer 阶段的时,上游数据库创建外键表会报错。

可以使用 Binlog Event 跳过。
1.stop-task taskname 2.添加 Filter - create table 3.下游创建无外键表结构(请确认去掉外键后业务上是否有风险) 4.start-task taskname 这样数据同步没有问题,正确的数据也会写入外键表中。

解决办法: TiDB v3.0.5、DMv1.0.3 外键操作会被忽略,无论是 mydumper 还是 syncer 状态。可考虑实际情况升级使用。

1:版本:TiDB v3.0.3、DM v1.0.3 没问题 在启动任务前,check-task 就会报错,外键问题

您好,没有复现您的问题。请检查下 task 文件\

image

您好:

  1. 更加反馈,开始填写的1.0.2DM,现在版本是升级到1.0.3了吗?
  2. 请帮忙确认下,当前是在启动前check task报错,还是runnning状态task报错?
  3. 请上传完整的check-task 和query-status 结果,多谢