如果要使 TiDB 兼容 MySQL 的 GBK 字符集排序规则,你需要在初次初始化 TiDB 集群时设置 TiDB 配置项new_collations_enabled_on_first_bootstrap 为 true 来开启新的排序规则框架。
开启新的排序规则框架后,如果查看 GBK 字符集对应的排序规则,你可以看到 TiDB GBK 默认排序规则已经切换为 gbk_chinese_ci。
MySQL 处理非法 GBK 字符集时,对读和写操作的处理方式不同。
TiDB 处理非法 GBK 字符集时,对读和写操作的处理方式相同。TiDB 在严格模式下读写非法 GBK 字符都会报错,在非严格模式下,读写非法 GBK 字符都会用 ? 替换。
目前 TiDB 不支持通过 ALTER TABLE 语句将其它字符集类型改成 gbk 或者从 gbk 转成其它字符集类型。
对于 ENUM 和 SET 类型中的二进制字符,TiDB 目前都会将其作为 utf8mb4 字符集处理。
TiCDC 在 v6.1.0 之前不支持同步 charset=GBK 的表。另外,任何版本的 TiCDC 都不支持同步 charset=GBK 的表到 6.1.0 之前的 TiDB 集群。