跳到主要内容
版本:v3&v6

重建索引(索引中间件)

操作步骤

进入 ones-ai-k8s 操作终端

ones-ai-k8s.sh

修改配置

vi config/private.yaml
# 如下两个数字,改成跟上一次不一样的值即可;如果没有这些配置项,手工添加即可
kilobSyncSchemaHash: "2"
kilobForceSnapshotVersion: "2"
kilobForceSnapshotAll: "true"

应用配置

make setup-ones

查看进度

kubectl logs -n ones -l app=kilob-sync --tail=200 -f

影响说明

在索引重建期间,系统会逐步创建全新的索引结构。该过程采用增量式处理,数据会按批次被重新分析并加入新索引。

因此,在重建过程中:

初期阶段:新索引仅包含部分数据,搜索功能可能返回不完整的结果

中期阶段:随着处理进度推进,可检索数据量将持续增加

完成阶段:当100%数据被重新索引后,搜索功能将完全恢复正常

验证

  • 查看 ONES 负责人,筛选器,文档查询功能是否正常

索引数据对比

对比索引中的数据和数据库中的数据是否一致,一般重建后可以不用执行此步骤,但以下三种情况建议执行:

  1. 从 Docker 迁移到 K3s 完成数据导入后;
  2. 迁移了服务器环境;
  3. 从 SaaS 迁移到私有云环境。

如果客户数据量较大(task >= 200w 或 wiki 页面 >= 200w),谨慎执行此操作。

ONES 版本大于或等于 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 ✅ |
———————————————————————————————————————————————————————————————————————

其它版本(至少 v3.14)可以用如下操作:

curl -O https://res.ones.pro/script/kilob-cli
# curl -L https://res.ones.pro/script/kilob-cli-arm64 -o kilob-cli

chmod +x kilob-cli

kubectl -n ones cp kilob-cli $(kubectl -n ones get pod -l app=ones-tools -o jsonpath='{.items[0].metadata.name}'):/

kubectl -n ones exec $(kubectl -n ones get pod -l app=ones-tools -o jsonpath='{.items[0].metadata.name}') -c ones-tools -- /kilob-cli print_index --addr advanced-tidb-pd:2379 --db $(grep mysqlHost /data/ones/ones-installer-pkg/config/private.yaml | awk '{print $2}'):3306 --db_user ones --db_password $(grep mysqlPassword /data/ones/ones-installer-pkg/config/private.yaml | awk '{print $2}')

FAQ

重建过程中,cdc报错

重建过程中,kafka-cdc-connect 这个pod出现异常报错,则可考虑彻底删除kafka数据并重建的方式

# 6.21以下版本,参考如下操作,该操作同时会触发索引重建。

kubectl -n ones scale deploy kafka-cdc-connect-deployment --replicas=0
kubectl -n ones scale deploy kilob-sync-deployment --replicas=0
kubectl -n ones scale deploy binlog-event-sync-deployment --replicas=0
kubectl -n ones scale deploy ones-bi-sync-etl-deployment --replicas=0

kubectl -n ones exec kafka-ha-0 -- /opt/bitnami/kafka/bin/kafka-topics.sh --delete --topic ones-cdc.* --bootstrap-server localhost:9092
kubectl -n ones exec kafka-ha-0 -- /opt/bitnami/kafka/bin/kafka-topics.sh --delete --topic cdc_connect.* --bootstrap-server localhost:9092

kubectl -n ones scale deploy kafka-cdc-connect-deployment --replicas=1
kubectl -n ones scale deploy kilob-sync-deployment --replicas=1
kubectl -n ones scale deploy binlog-event-sync-deployment --replicas=1
kubectl -n ones scale deploy ones-bi-sync-etl-deployment --replicas=1
# 6.21及以上版本,执行如下命令即可
make rebuild-cdc