迁移元数据
元数据迁移涉及创建集群快照,然后使用迁移控制台从快照中迁移元数据。
此工具通过快照或对源集群发出 HTTP 请求来收集源集群的信息。这些快照与 Reindex-From-Snapshot
(RFS) 场景的回填过程完全兼容。
收集源集群信息后,将与目标集群进行比较。如果正在运行迁移,任何目标集群上不存在的元数据项都将被创建。
创建快照
创建源集群的快照会捕获所有元数据和文档,以迁移到新的目标集群。
使用以下命令创建源集群的初始快照
console snapshot create
要实时检查快照进度,请使用以下命令
console snapshot status --deep-check
创建快照时,您应收到以下响应
SUCCESS
Snapshot is SUCCESS.
Percent completed: 100.00%
Data GiB done: 29.211/29.211
Total shards: 40
Successful shards: 40
Failed shards: 0
Start time: 2024-07-22 18:21:42
Duration: 0h 13m 4s
Anticipated duration remaining: 0h 0m 0s
Throughput: 38.13 MiB/sec
管理慢速快照速度
根据源集群中数据的大小和为快照分配的带宽,该过程可能需要一些时间。使用 --max-snapshot-rate-mb-per-node
选项调整源集群节点创建快照的最大速率。增加快照速率将消耗更多的节点资源,这可能会影响集群处理正常流量的能力。
命令参数
对于以下命令,要识别所有有效参数,请使用 --help
运行。
console metadata evaluate --help
console metadata migrate --help
根据迁移控制台部署选项,将预填充一些命令。要查看它们,请以详细模式运行控制台
console -v metadata migrate --help
您应该收到类似于以下内容的响应
(.venv) bash-5.2# console -v metadata migrate --help
INFO:console_link.cli:Logging set to INFO
.
.
.
INFO:console_link.models.metadata:Migrating metadata with command: /root/metadataMigration/bin/MetadataMigration --otel-collector-endpoint http://otel-collector:4317 migrate --snapshot-name snapshot_2023_01_01 --target-host https://opensearchtarget:9200 --min-replicas 0 --file-system-repo-path /snapshot/test-console --target-username admin --target-password ******** --target-insecure --help
.
.
.
使用 evaluate
命令
通过扫描源集群的内容、应用过滤和应用修改,将创建一个所有要迁移的项目的列表。如果运行迁移命令,此输出中未显示的任何项目都不会迁移到目标集群。这是在对目标集群进行修改之前的安全检查。
console metadata evaluate [...]
您应该收到类似于以下内容的响应
Starting Metadata Evaluation
Clusters:
Source:
Remote Cluster: OpenSearch 1.3.16 ConnectionContext(uri=https://:33039, protocol=HTTP, insecure=false, compressionSupported=false)
Target:
Remote Cluster: OpenSearch 2.14.0 ConnectionContext(uri=https://:33037, protocol=HTTP, insecure=false, compressionSupported=false)
Migration Candidates:
Index Templates:
simple_index_template
Component Templates:
simple_component_template
Indexes:
blog_2023, movies_2023
Aliases:
alias1, movies-alias
Results:
0 issue(s) detected
使用 migrate 命令
使用与 evaluate 命令相同的数据运行,所有迁移的项目都将应用于目标集群。如果多次重新运行,以前迁移的项目将不会被重新创建。如果任何项目确实需要重新迁移,请从目标集群中删除它们,然后重新运行 evaluate 和 migrate 命令以确保所需的更改已完成。
console metadata migrate [...]
您应该收到类似于以下内容的响应
Starting Metadata Migration
Clusters:
Source:
Snapshot: OpenSearch 1.3.16 FileSystemRepo(repoRootDir=/tmp/junit10626813752669559861)
Target:
Remote Cluster: OpenSearch 2.14.0 ConnectionContext(uri=https://:33042, protocol=HTTP, insecure=false, compressionSupported=false)
Migrated Items:
Index Templates:
simple_index_template
Component Templates:
simple_component_template
Indexes:
blog_2023, movies_2023
Aliases:
alias1, movies-alias
Results:
0 issue(s) detected
元数据验证过程
在进入其他迁移步骤之前,建议确认集群的详细信息。根据您的配置,这可能涉及检查分片策略或通过摄入测试文档来确保索引映射定义正确。
故障排除
使用这些说明帮助排查以下问题。
访问详细日志
元数据迁移会创建一个详细的日志文件,其中包含用于故障排除的低级跟踪信息。程序每次执行都会在迁移控制台的共享卷中创建一个名为 shared-logs-output
的日志文件,以下命令将列出所有日志文件,每次命令运行对应一个文件。
ls -al /shared-logs-output/migration-console-default/*/metadata/
要在控制台中检查文件,可以使用 cat
、tail
和 grep
等命令行工具。通过在此日志文件中查找警告、错误和异常,可以帮助理解故障的来源,或者至少有助于在此项目中创建问题。
tail /shared-logs-output/migration-console-default/*/metadata/*.log
警告和错误
当响应中遇到 WARN
或 ERROR
元素时,它们会附带一条简短消息,例如 WARN - my_index already exists
。更多信息可以在与警告或错误相关的详细日志中找到。
OpenSearch 在兼容模式下运行
可能会出现无法更新 ES 7.10.2 集群的错误,这可能是因为 OpenSearch 集群已启用兼容模式。请禁用该模式以继续,参见启用兼容模式。
破坏性变更兼容性
元数据迁移需要修改从源版本到目标版本的数据以重新创建项目。有时,这些功能不再受支持并已从目标版本中移除。有时,这些功能在目标版本中不可用,尤其是在降级时。虽然此工具旨在简化此过程,但其支持并非详尽无遗。当您的迁移遇到兼容性问题或重要的功能差距时,请搜索现有问题并评论,如果找不到现有问题,则创建新问题。
映射类型弃用
在 Elasticsearch 6.8 中,映射类型功能在 Elasticsearch 7.0+ 中已停用,这使得迁移到更新版本的 Elasticsearch 和 OpenSearch 变得复杂,了解更多 ↗。
由于元数据迁移支持从 ES 6.8 迁移到最新版本的 OpenSearch,因此此场景通过删除类型映射类型并重构模板或索引属性来处理。请注意,在撰写本文时,不支持多种类型映射,跟踪任务 ↗。
带有映射类型 foo 的起始状态示例 (ES 6)
{
"mappings": [
{
"foo": {
"properties": {
"field1": { "type": "text" },
"field2": { "type": "keyword" }
}
}
}
]
}
移除 foo 后的结束状态示例 (ES 7)
{
"mappings": {
"properties": {
"field1": { "type": "text" },
"field2": { "type": "keyword" },
}
}
}
有关其他技术细节,请查看映射类型移除源代码。