问题描述:
集群从8节点扩至16节点,扩容后出现一个报错(主副分片不一致),可以正常创建与原库一样的表,但在表中插入数据就会报主备分片不一致的报错
报错信息:
ERROR 1705(HY000):gcluster DML error (IP:5050)(GBA-02AD-0005)Failed to query in gnode;
DETAIL: (GBA-01EX-700) Ggase general error: (gns_host:IP) source table and destination table are not same: src: ( is_lookup: 0 nulls_mode: 0,internal_size :168,display_size 56 -- type 1, precision :224 scale: 0 is_lookup: 0, nulls_mode )
解决方案:
备份数据重新建库
问题分析:
经查明问题出现在某一个库新建表将报错无法insert select,而在其它库正常,最终定为发现异常库的字符集在原集群节点和新集群节点的gn层字符集不一样
下图为扩容前该库的字符集为:gb188030
下图为扩容后该库的字符集为:utf8
由于创建该库时特意指定为gb18030,但是集群扩容后在新节点的gn层默认为集群的默认字符集UTF8,最终造成不可逆的错误,最终通过备份数据重建该库解决。