为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:4.0.1
- 【问题描述】:从2.1.13版本binlog以mysql的方式同步至下游4.0.1版本,在同步应用过程中出错了,但是在重新配置initial_commit_ts之后还是无法跳过,下游一直还是报之前的同步出错的问题,这种问题该怎么处理或跳过呢
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
您好,根据您这边提供的描述,麻烦确认下 上游 TiDB 的版本、TiDB-Binlog 的版本。
另外同步出错可以详细描述下么? 比如拿下详细日志。
https://docs.pingcap.com/zh/tidb/stable/tidb-binlog-faq#同步时出现上游数据库支持但是下游数据库执行会出错的-ddl应该怎么办
error 1067: Invalid default 这种报错猜测是上下游 sql_mode 不一致,建议将上下游 sql_mode 修改为一致然后再同步。
另外如果后面遇到不支持的 ddl 操作,可以参考下面步骤进行修复。
上次咨询过不是sql mode的问题,现在是日志里没有ignore-ts的日志所以无法跳过
您这边可以确认下上下游 sql_mode 是否一致。手动将建表语句插入到下游看下是否成功。先确认下 sql_mode 吧。
都说不是sqlmode的问题,前面我有咨询过,现在就想问下怎么去跳过,4.0.1版本没有ignore-ts提示的日志,也就是无法确认报错的具体ts位点,麻烦告知下怎么去跳过就好了
datetime(3) 改成 datetime 即可
现在是配置binlog type为tidb同步到下游的数据库报错,这个没法改日志内容吧
或者参考下这个帖子
没太理解你的意思,
就是这个建表语句已经是在binlog里面了,不是手动执行报错可以更改创建语句的
跳过下这个 pos 点,下游创建下新的表结构
我是跳不过,print之后的日志然后设置了之后下游还是报错
如果此类 sql 较多,建议更改上游环境,重新导入。
如果不方便,在可以保证上游没有新的 ddl 执行的情况下可以将下游提前创建此表结构,binlog 忽略所有 ddl 操作,将数据同步上。
https://docs.pingcap.com/zh/tidb/stable/tidb-binlog-faq#什么是-checkpoint
看了下 Drainer的配置文件只有忽略库,表的同步设置,没有过滤ddl的设置选择
明白了,谢谢。
Drainer确实没有忽略ddl的选项是吗?你刚才说的可以跳过指定的错误
可以试试这个参数,这个是确认是否 DDL statement 同步的。