首批通过分布式安全可靠测评,为关键业务系统打造
索引构建失败,如何确定失败原因?
更新时间:2024-01-22 01:56
本文介绍索引创建失败之后,如何进行错误原因的排查以及如何解决。
首先根据 oceanbase.__all_table 表中的 index_type 字段判断索引的类型。其中字段值和索引类型如下。
| 索引类型 | 含义 |
|---|---|
| INDEX_TYPE_NORMAL_LOCAL | 局部普通索引 |
| INDEX_TYPE_UNIQUE_LOCAL | 局部唯一索引 |
| INDEX_TYPE_NORMAL_GLOBAL | 全局普通索引 |
| INDEX_TYPE_UNIQUE_GLOBAL | 全局唯一索引 |
| INDEX_TYPE_PRIMARY | 主键 |
| INDEX_TYPE_DOMAIN_CTXCAT | 全文索引 |
| INDEX_TYPE_NORMAL_GLOBAL_LOCAL_STORAGE | 局部存储的全局普通索引 |
| INDEX_TYPE_UNIQUE_GLOBAL_LOCAL_STORAGE | 局部存储的全局唯一索引 |
其中 INDEX_TYPE_NORMAL_GLOBAL 与 INDEX_TYPE_UNIQUE_GLOBAL 为全局索引,其他类型均为局部索引。
如果构建失败的是局部索引,则可以通过
oceanbase.__all_local_index_status查询ret_code字段,确定错误码。如果构建失败的是全局索引,则需要在 RootService 所在的物理机查询
ob_global_index_builder相关日志,查看具体的错误码与错误原因。
在索引构建过程中,有两个常见的错误码。
| 错误码 | 含义 | 处理方法 |
|---|---|---|
| 4072 | 表示索引构建被取消 | 删除索引后重建索引 |
| 5024 | 表示唯一索引不满足唯一性约束 | 处理不满足唯一性约束的数据后重建索引,或者放弃构建唯一索引 |
如果确定索引构建失败可以通过重试来解决,则需要先删除已失败的索引,再重新创建索引。如果失败无法通过重试解决,请联系 OceanBase 技术支持。