dm同步遇到字符集Unsupported collation

【 TiDB 使用环境】测试
【遇到的问题:问题现象及影响】

{
  "error_msg": "[code=34019:class=load-unit:scope=internal:level=high], Message: , RawCause: [Lightning:Restore:ErrCreateSchema]create schema failed, table: `lt_daily`.`c_hand_result`, stmt: restore table schema: run create schema job failed: Error 1273 (HY000): Unsupported collation when new collation is enabled: 'utf8mb4_unicode_520_ci'.\n",
  "load_status": {
    "finished_bytes": 0,
    "meta_binlog": "(binlog.000089, 766182856)",
    "meta_binlog_gtid": "b11465d1-eb14-11ee-ae3c-00163e04b628:1-170984,bec8b76c-8ec7-40c2-99cf-10a031863b31:1-33287810",
    "progress": "0.00 %",
    "total_bytes": 0
  },
  "name": "multi-db-task",
  "source_name": "multi-db",
  "stage": "Paused",
  "unit": "Load",
  "unresolved_ddl_lock_id": "",
  "worker_name": "dm-10.221.0.1-8263"
}

dm初始同步体验中就遇到数据字符集不支持,上游mysql的字符集是 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci

这种问题应该很初级吧,让我这初次体验tidb的user 确实有点惊讶。

tidb 没支持 utf8mb4_unicode_520_ci 这个 collation

utf8mb4_unicode_520_ci 这个排序不支持,看上游可以改不

上游mysql我建表的时候都会把这两个设置字符集的参数删掉。最多留一个charset=utf8mb4 collate绝对不加,不知道加了会不会出现什么意外。之前也出现过。只能删掉重新建表去掉这个参数重新同步

这种字符集不兼容的话,只能修改MySQL了,或者再挂一个mysql slave,修改字符集再dm 同步

这个 utf8mb4_unicode_520_ci 不支持

这个是正解

不需要实时增量迁移的化,换个工具;实时的化看下上游能不能做个转换

mysql 默认 COLLATE 也是 utf8mb4_general_ci。上游的 utf8mb4_unicode_520_ci 貌似TIDB 不支持。参考:https://docs.pingcap.com/zh/tidb/stable/character-set-and-collation

tidb默认字符集是utf8mb4_bin,估计和你的mysql不兼容