ADMIN CLEANUP INDEX

    AdminCleanupStmt

    TableNameList

    假设由于一些原因(例如灾难恢复场景,集群中丢失了部分行数据),数据库中的 tbl 表出现数据和索引不一致现象:

    SELECT 查询的错误信息可以看到,tbl 表中包含 2 条行数据和 3 条索引数据,这意味着行数据与索引数据出现了不一致故障,同时至少有 1 条索引处于悬空状态。此时可以使用 语句删除悬空的索引:

    执行结果示例如下:

    ADMIN CLEANUP - 图3

    注意

    当由于副本丢失导致数据索引出现不一致时:

    • 通常行数据与索引数据都有丢失,此时需要同时使用 ADMIN CLEANUP INDEXADMIN RECOVER INDEX 语句保证行数据与索引数据的一致性。
    • 在执行期间,不会为对应的表或索引记录加锁,TiDB 允许其他的会话同时对表记录进行更新或修改。然而,在此情况下,ADMIN CLEANUP INDEX 可能无法正确处理所有表记录。因此,在执行 ADMIN CLEANUP INDEX 时,请避免同时修改表数据。
    • 若你使用 TiDB 企业版,此时建议联系 PingCAP 支持工程师进行处理。

    语句是 TiDB 对 MySQL 语法的扩展。