zyq16
(15866702681)
1
背景:旧数据库版本5.0.6(数据库版本从3.0原地升级到4.0再到5.0),数据库表字段设置不区分大小写,并且字段添加唯一索引,
数据通过Lighting导入到v7.5.6版本后,同样的表结构和数据库排序规则,出现了因为字符大小写问题导致唯一索引check 失败的情况
处理:将表中的异常数据查找出来删除,重建唯一索引,check表及索引成功;
问题:其中一个TiDB重启后走唯一索引的查询读不到数据,始终加载不到元数据,尝试重启此TiDB节点和扩容新TiDB节点以及滚动重启PD节点都无法解决。
2 个赞
– 强制分析表,重新生成统计信息 2ANALYZE TABLE your_table_name;
2 个赞
执行 ADMIN RELOAD OPTIMIZER STATISTICS 刷新元数据,再检查 lower_case_table_names 配置一致性,确保索引元数据同步。
2 个赞
suyh1988
(Ti D Ber Cte Vr F8 O)
7
意思是不同的tidb-server查询的数据是不一样的?
执行 ANALYZE TABLE ... WITH 200 TOPN 。这是解决“数据存在但查不到”的最快方法
zyq16
(15866702681)
10
因5.0版本表字段设置的不区分大小写utf8mb4_general_ci,在5.0版本不生效,表设置的区分大小写utf8mb4_bin,
通过Lighting将数据还原到v7.5.6版本后,出现admin check 唯一索引,提示索引数据与表数据不一致问题,
将涉及到唯一索引大小写的数据查出与业务沟通后删除,admin check索引成功,
但是根据唯一索引依然查不到数据,同时也出现同样的SQL在5.0和7.5版本执行计划不一致,
原本走lookup join 10毫秒左右的SQL,7.5版本走了hash join执行30秒左右,通过hint执行计划依然无法改变执行计划,最后重建表上索引问题解决
WalterWj
(王军 - PingCAP)
12
还原是正常退出没问题么?
lightning 有 checksum 的。
或者说是不是因为大小写问题导致有数据重复导致的数据导入异常?