历史数据迁移
将历史日志、事件和审计数据从旧版 Elasticsearch PVC 迁移到新数据路径使用的 ClickHouse 或 OpenSearch 存储。
是否需要迁移?
历史数据迁移是可选的。新数据路径上线后(请参阅 升级),从切换开始写入的每条日志、事件和审计记录都会由其处理。此迁移仅用于回填仍存储在旧版 Elasticsearch 卷中的较早数据。
如果跳过此步骤,切换前写入的数据将仅保留在旧版 Elasticsearch PVC 中,无法从 ClickHouse 或 OpenSearch 查询。一旦释放源 PVC 和 PV(请参阅 升级 中的“保留源卷”),这些历史数据将永久丢失。如果您的站点无需从新存储查询切换前的历史记录,请跳过本章,并在新存储验证完成后释放源卷。
前提条件
- 源端是 Logging 4.3 Elasticsearch 部署。仅支持从 4.3 将历史数据迁移到 4.4;暂不支持其他源版本。
- 新数据路径为
Ready(请参阅 升级)。
- 源 Elasticsearch PVC 和 PV 仍然存在,且其保护机制完好无损。
- 此版本的迁移 worker 镜像。该镜像与 Logging plugin 软件包分开提供 — 请联系 Alauda 技术支持获取与您的版本匹配的镜像。不匹配已安装 Logging plugin 版本的镜像可能会在数据验证后无法退出。将其设置为下方的
spec.image。
- 要迁移的时间范围在目标表的保留期限内。
source.indexScope 支持精确索引名称和 glob,并且必须至少匹配一个索引。
请在旧版 plugin 仍处于安装状态时创建 LegacyESMigration,并在卸载旧版 plugin 之前完成。operator 随后会自动捕获源 Elasticsearch 卷,因此无需手动列出这些卷。
WARNING
源 PVC 和 PV 必须仍然存在。一旦删除源 PVC,或释放并清理其 PV,就无法迁移历史数据。
创建迁移资源
选择目标存储对应的选项卡。两个定义仅在 target.type、连接 Secret 和 options 默认值方面有所不同。
apiVersion: log.alauda.io/v1alpha1
kind: LegacyESMigration
metadata:
name: platform-es-history # Stable migration name, used by the commands below
namespace: cpaas-system
spec:
image: <migration-worker-image> # Required; release-matched image from Alauda technical support, with registry and tag or digest
source:
indexScope: # Required, selects the historical indices to migrate
- "log-workload-*"
- "log-platform-*"
- "log-system-*"
- "log-kubernetes-*"
- "event-*"
- "audit-*"
target:
type: clickhouse # Must match the PlatformLogForward
secretRef:
name: platform-default-ch-conn # The same connection Secret as PlatformLogForward
namespace: cpaas-system
options:
batchSize: 250 # Documents written per batch, 1~100000; default 250
syncIntervalSeconds: 5 # Minimum wait between batches; omit to use the default (1 second for ClickHouse)
maxConcurrentJobs: 1 # Concurrent jobs; ClickHouse is always serial (1)
将 YAML 保存为 legacy-es-migration.yaml 并应用:
kubectl apply -f legacy-es-migration.yaml
apiVersion: log.alauda.io/v1alpha1
kind: LegacyESMigration
metadata:
name: platform-es-history # Stable migration name, used by the commands below
namespace: cpaas-system
spec:
image: <migration-worker-image> # Required; release-matched image from Alauda technical support, with registry and tag or digest
source:
indexScope: # Required, selects the historical indices to migrate
- "log-workload-*"
- "log-platform-*"
- "log-system-*"
- "log-kubernetes-*"
- "event-*"
- "audit-*"
target:
type: opensearch # Must match the PlatformLogForward
secretRef:
name: platform-default-os-conn # The same connection Secret as PlatformLogForward
namespace: cpaas-system
options:
batchSize: 250 # Documents written per batch, 1~100000; default 250
syncIntervalSeconds: 5 # Minimum wait between batches; omit to use the default (no fixed wait for OpenSearch)
maxConcurrentJobs: 1 # Concurrent jobs; default 1, up to 2 for OpenSearch
将 YAML 保存为 legacy-es-migration.yaml 并应用:
kubectl apply -f legacy-es-migration.yaml
TIP
已卸载 plugin 时的回退方案:如果在创建此资源之前已卸载旧版 plugin,operator 将无法再为您捕获源卷。添加 source.pvcRefs,列出为旧版 Elasticsearch StatefulSet(cpaas-elasticsearch、cpaas-elasticsearch-master)提供支持的每个保留 PVC;在这些 PVC 释放前,使用 kubectl -n cpaas-system get pvc 查找它们。建议在卸载前创建资源,这样即可避免此问题。
等待 PrecaptureReady
监视资源:
kubectl -n cpaas-system get legacyesmigration platform-es-history -w
等待资源达到 PrecaptureReady。此阶段尚未开始复制数据。
PrecaptureReady 表示源已捕获且卷已受到保护。现在卸载旧版 plugin:按照 升级 中的“卸载旧版 Elasticsearch plugin”操作,然后返回此处。(如果已卸载,复制将自动进行。)
WARNING
如果阶段为 Blocked 或 Failed,请勿删除或重新创建迁移资源、Job、源卷或新存储中的数据。阅读条件消息并联系 Alauda 支持。
等待迁移成功
卸载旧版 plugin 后,worker 开始复制数据。继续监视同一资源,直到阶段变为 Succeeded:
kubectl -n cpaas-system get legacyesmigration platform-es-history \
-o jsonpath='{.status.phase}{"\n"}'
迁移运行期间,请勿更改 PlatformLogForward 或其连接 Secret。
验证迁移
针对 ClickHouse 或 OpenSearch 运行生产日志、事件和审计查询,并确认历史时间范围已存在。
在验证完成并批准清理之前,请保留受保护的源 Elasticsearch PVC 和 PV。Phase=Succeeded 并不表示已批准释放这些资源。