为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】3.0.3(ansible安装)
【问题描述】通过admin check index发现一张表的数据与该表的唯一索引不一致
表结构:
CREATE TABLE biz_user
(
id
bigint(20) NOT NULL,
global_id
bigint(20) NOT NULL,
biz_id
bigint(20) NOT NULL ,
biz_user_id
bigint(20) NOT NULL DEFAULT ‘0’ ,
status
tinyint(2) NOT NULL DEFAULT ‘0’,
ctime
bigint(20) NOT NULL DEFAULT ‘0’ ,
mtime
bigint(20) NOT NULL DEFAULT ‘0’ ,
creator
bigint(20) NOT NULL DEFAULT ‘0’ ,
modifier
bigint(20) NOT NULL DEFAULT ‘0’ ,
PRIMARY KEY ( id
),
UNIQUE KEY uniq_biz_user_id
( biz_user_id
),
KEY gid_biz
( global_id
, biz_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
问题截图:
可以看到,通过biz_user_id字段查询值为 57044843的数据,查不到数据。
通过主键查询,可以查到
通过admin check index校验索引和数据的一致性,报错如下:
ERROR 1105 (HY000) at line 1: table count 55309530 != index(uniq_biz_user_id) count 55309518
索引比数据少了12条数据
发现出现这种情况是由于上了新版本的TIDB和DM,详情见如下链接:
请教这种问题出现的原因及解决方法,重做索引吗?
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。