dm check-task 因为上游字符集设置为utf8mb4_0900_as_cs

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
TiDB v5.3.0 v5.4.0均有相同的问题

【概述】 场景 + 问题概述
dm 初始化进行检查时,因为上游数据库MySQL 表的定义含有utf8mb4_0900_as_cs,dm check时,直接报错。
【备份和数据迁移策略逻辑】

【背景】 做过哪些操作
上游数据库MySQL
create table t1(id int primary key,name varchar(20)) CHARSET=utf8mb4 COLLATE=utf8mb4_0900_as_cs;

【现象】 业务和数据库现象
tiup dmctl --master-addr 10.25..*:8261 check-task ./dm-task.yaml
“name”: “table structure compatibility check”,
“desc”: “check compatibility of table structure”,
“state”: “fail”,
“errors”: [
{
“severity”: “fail”,
“short_error”: “table test.t1 [ddl:1273]Unknown collation: ‘utf8mb4_0900_as_cs’”
}
【问题】 当前遇到的问题
上游数据库MySQL 默认设置utf8mb4_0900_as_cs,有很多的表或字段含有utf8mb4_0900_as_cs属性。 有无办法使dm忽略或跳过这个错误进行下一步?而不是通过ddl–>修改sql–>导初始数据–>增量的方式…
因为上游数据库 database的默认属性如果设置为:alter database test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs; 那么这个错误将会频繁出现

【业务影响】

【TiDB 版本】
v5.3.0, v5.4.0 均有相同的问题
【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

参考下这里
可以手动在目标端创建表

您可以在这里查看我们的修复进度 https://github.com/pingcap/tiflow/issues/4948

想问一下为什么会使用 utf8mb4_0900_as_cs 呢

现有的项目大部分都是之前从Oracle转到MySQL的,对于历史数据,因为Oracle是区分大小写的,业务逻辑也是按照区分大小写设计的,所以迁移到MySQL时,为了照顾历史数据和减少迁移工作量,在DB级别设置了utf8mb4_0900_as_cs。

1 个赞

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