重建索引(索引中间件)
当出现搜索功能或筛选器不可用、页面展示数据不符合预期等异常时,可能是索引异常,可参考本文重建。
1 影响说明
在索引重建期间,系统会逐步创建全新的索引结构。该过程采用增量式处理,数据会按批次被重新分析并加入新索引。
因此,在重建过程中:
初期阶段:新索引仅包含部分数据,搜索功能可能返回不完整的结果
中期阶段:随着处理进度推进,可检索数据量将持续增加
完成阶段:当100%数据被重新索引后,搜索功能将完全恢复正常
2 重建操作
进入 ones-ai-k8s 操作终端
ones-ai-k8s.sh
修改配置
vi config/private.yaml
# 如下两个数字,改成跟上一次不一样的值即可;如果没有这些配置项,手工添加即可
kilobSyncSchemaHash: "2"
kilobForceSnapshotVersion: "2"
kilobForceSnapshotAll: "true"
应用配置
make setup-ones
3 查看进度与验证
3.1 日志跟踪
kubectl logs -n ones -l app=kilob-sync --tail=200 -f
日志打印“snapshot topic: ones-cdc.project.XX, read count: XX, progress: XX%”表示该项topic的同步进度, progress为100%表示该项同步完成;当progress都为100%、不再打印progress字段时,表示索引重建完成。
3.2 索引数据对比
对比索引中的数据和数据库中的数据是否一致,一般重建后可以不用执行此步骤,但以下三种情况请执行:
- 从 Docker 迁移到 K3s 完成数据导入后;
- 迁移了服务器环境;
- 从 SaaS 迁移到私有云环境。
如果客户数据量较大(task >= 200w 或 wiki 页面 >= 200w),谨慎执行此操作。
3.2.1 v6.1.86 或 v6.2.19 以上版本数据对比
ones-ai-k8s.sh
make print-kilob-index
结果类似如下:
是否重建完成: 【是】
———————————————————————————————————————————————————————————————————————
| Team/Organization Table MySQL TiKV Status |
———————————————————————————————————————————————————————————————————————
| BiUhudNp org_user 7 7 ✅ |
———————————————————————————————————————————————————————————————————————
| E4K7fDQs task 49 49 ✅ |
| E4K7fDQs project 2 2 ✅ |
| E4K7fDQs product 0 0 ✅ |
| E4K7fDQs sprint 4 4 ✅ |
| E4K7fDQs testcase_library 1 1 ✅ |
| E4K7fDQs testcase_case 2 2 ✅ |
| E4K7fDQs testcase_plan 1 1 ✅ |
| E4K7fDQs space 1 1 ✅ |
| E4K7fDQs page 21 21 ✅ |
———————————————————————————————————————————————————————————————————————