Unsupported modify charset from binary to utf8此类问题如何过度?

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本
NAME           STATUS   ROLES    AGE    VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                               KERNEL-VERSION         CONTAINER-RUNTIME
172.31.90.50   Ready    <none>   142d   v1.14.1   172.31.90.50   <none>        Red Hat Enterprise Linux 8.0 (Ootpa)   4.18.0-80.el8.x86_64   docker://18.6.2
172.31.90.53   Ready    <none>   120d   v1.14.1   172.31.90.53   <none>        Red Hat Enterprise Linux 8.0 (Ootpa)   4.18.0-80.el8.x86_64   docker://18.6.2
172.31.90.56   Ready    <none>   120d   v1.14.1   172.31.90.56   <none>        Red Hat Enterprise Linux 8.0 (Ootpa)   4.18.0-80.el8.x86_64   docker://18.6.2
  • TiDB 版本】 5.7.25-TiDB-v3.0.1 MySQL Community Server (Apache License 2.0)
  • 磁盘型号】 普通机械盘
  • 集群节点分布
haodai-pd-0                         1/1     Running   1          3d20h   10.21.56.214   172.31.90.56    <none>           <none>
haodai-pd-1                         1/1     Running   0          3d20h   10.11.10.64    172.31.90.53    <none>           <none>
haodai-pd-2                         1/1     Running   0          3d20h   10.11.15.97    172.31.90.50    <none>           <none>
haodai-tidb-0                       2/2     Running   0          3d20h   10.11.15.100   172.31.90.50    <none>           <none>
haodai-tidb-1                       2/2     Running   0          3d20h   10.21.56.217   172.31.90.56    <none>           <none>
haodai-tikv-0                       1/1     Running   0          3d20h   10.11.15.99    172.31.90.50    <none>           <none>
haodai-tikv-1                       1/1     Running   0          3d20h   10.21.56.216   172.31.90.56    <none>           <none>
haodai-tikv-2                       1/1     Running   0          3d20h   10.11.10.66    172.31.90.53    <none>           <none>
  • 数据量 & region 数量 & 副本数】 500G 1850 3
  • 问题描述(我做了什么)】 上游是oracle MySQL,使用pt-osc改表时下游的dm报错, 报错信息如下
[code=10006:class=database:scope=downstream:level=high] execute statement failed: ALTER TABLE `database`.`_tablename_new` CHANGE COLUMN `y_sign` `virtual_phone` VARCHAR(15) NOT NULL DEFAULT '' COMMENT '关联的虚拟号': Error 1105: unsupported modify charset from binary to utf8
github.com/pingcap/dm/pkg/terror.(*Error).Delegate
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/terror/terror.go:267
github.com/pingcap/dm/pkg/baseconn.(*BaseConn).ExecuteSQLWithIgnoreError
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/baseconn/conn.go:179
github.com/pingcap/dm/syncer.(*Conn).executeSQLWithIgnore.func2
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/syncer/db.go:178
github.com/pingcap/dm/pkg/retry.(*FiniteRetryStrategy).Apply
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/retry/strategy.go:71
github.com/pingcap/dm/pkg/baseconn.(*BaseConn).ApplyRetryStrategy
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/baseconn/conn.go:200
github.com/pingcap/dm/syncer.(*Conn).executeSQLWithIgnore
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/syncer/db.go:173
github.com/pingcap/dm/syncer.(*Syncer).sync
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/syncer/syncer.go:932
github.com/pingcap/dm/syncer.(*Syncer).Run.func3
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/syncer/syncer.go:1068
runtime.goexit
	/usr/local/go/src/runtime/asm_amd64.s:1337
  • 关键词】 DM OSC DDL 兼容性

OSC改表的过程应该可以通过写表映射, 事件过滤可以实现, 有无现成的?

不行, 写规则只能把OSC的过程简化, 但还是不支持binary到varchar的改表

目前不支持字段数字类型转字符类型,可以过滤这个语句,在下游手动建表

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