数据迁移入门
本快速入门指南概述了如何为 OpenSearch 部署 Migration Assistant,并使用 Reindex-from-Snapshot
(RFS) 执行现有数据迁移。本文以 AWS 为例进行说明。但是,这些步骤可以修改后用于其他云提供商。
在使用本快速入门指南之前,请务必查看Migration Assistant 适合您吗?。
由于本指南使用 AWS 云开发工具包 (AWS CDK),请确保 CDKToolkit
堆栈存在且处于 CREATE_COMPLETE
状态。有关设置说明,请参阅CDK Toolkit 文档。
步骤 1:在 Amazon EC2 实例上安装 Bootstrap(约 10 分钟)
要开始迁移,请使用以下步骤在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上安装一个 bootstrap
环境。该实例使用 AWS CloudFormation 来创建和管理堆栈。
- 登录到您要部署 Migration Assistant 的目标 AWS 账户。
- 在您已登录目标 AWS 账户的浏览器中,此处右键单击以在新浏览器选项卡中加载 CloudFormation 模板。
- 遵循 CloudFormation 堆栈向导
- 堆栈名称:
MigrationBootstrap
- 阶段名称:
dev
- 每一步之后选择下一步 > 确认 > 提交。
- 堆栈名称:
- 验证 Bootstrap 堆栈是否存在并设置为
CREATE_COMPLETE
。此过程大约需要 10 分钟才能完成。
步骤 2:设置 Bootstrap 实例访问权限(约 5 分钟)
使用以下步骤设置 Bootstrap 实例访问权限
- 部署后,找到
bootstrap-dev-instance
的 EC2 实例 ID。 -
使用以下代码片段创建 AWS Identity and Access Management (IAM) 策略,将
<aws-region>
、<aws-account>
、<stage>
和<ec2-instance-id>
替换为您的信息{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartSession", "Resource": [ "arn:aws:ec2:<aws-region>:<aws-account>:instance/<ec2-instance-id>", "arn:aws:ssm:<aws-region>:<aws-account>:document/BootstrapShellDoc-<stage>-<aws-region>" ] } ] }
- 为策略命名,例如
SSM-OSMigrationBootstrapAccess
,然后通过选择 Create policy(创建策略)来创建策略。 - 将新创建的策略附加到您的 EC2 实例的 IAM 角色。
步骤 3:登录 Bootstrap 并构建 Migration Assistant(约 15 分钟)
接下来,使用以下步骤登录 Bootstrap 并构建 Migration Assistant。
先决条件
要使用这些步骤,请确保您满足以下先决条件
- 您的实例上已安装 AWS 命令行界面 (AWS CLI) 和 AWS Session Manager 插件。
- AWS 凭证已为您的实例配置(
aws configure
)。
步骤
- 将 AWS 凭证加载到您的终端。
-
使用以下命令登录实例,将
<instance-id>
和<aws-region>
替换为您的实例 ID 和区域aws ssm start-session --document-name BootstrapShellDoc-<stage>-<aws-region> --target <instance-id> --region <aws-region> [--profile <profile-name>]
-
登录后,在
/opensearch-migrations
目录中的 Bootstrap 实例 shell 中运行以下命令./initBootstrap.sh && cd deployment/cdk/opensearch-service-migration
- 成功构建后,请记下基础设施部署的路径,该路径将在下一步中使用。
步骤 4:配置和部署 RFS(约 20 分钟)
要部署带有 RFS 的 Migration Assistant,必须部署以下堆栈
这些命令部署以下堆栈
Migration Assistant network
堆栈RFS
堆栈Migration console
堆栈
使用以下步骤配置和部署 RFS,部署 Migration Assistant,并验证所需堆栈的安装
-
将源集群和目标集群的基本身份验证信息(用户名和密码)作为单独的密钥添加到 AWS Secrets Manager 中。每个密钥必须包含两个键值对:一个用于用户名,一个用于密码。每个密钥的明文应类似于以下示例
{"username":"admin","password":"myStrongPassword123!"}
请务必复制密钥的 Amazon 资源名称 (ARN),以便在部署期间使用。
-
在与 Bootstrap 实例相同的 shell 中,修改位于
/opensearch-migrations/deployment/cdk/opensearch-service-migration
目录中的cdk.context.json
文件,并配置以下设置{ "default": { "stage": "dev", "vpcId": "<TARGET CLUSTER VPC ID>", "targetCluster": { "endpoint": "<TARGET CLUSTER ENDPOINT>", "auth": { "type": "basic", "userSecretArn": "<SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>" } }, "sourceCluster": { "endpoint": "<SOURCE CLUSTER ENDPOINT>", "version": "<SOURCE ENGINE VERSION>", "auth": { "type": "basic", "userSecretArn": "<SECRET_WITH_USERNAME_AND_PASSWORD_KEYS>" } }, "reindexFromSnapshotExtraArgs": "<RFS PARAMETERS (see below)>", "reindexFromSnapshotMaxShardSizeGiB": 80, "otelCollectorEnabled": true, "migrationConsoleServiceEnabled": true } }
源集群和目标集群的授权可以配置为无授权、
basic
(带用户名和密码)或sigv4
。 -
在
cdk.context.json
文件完全配置后,引导账户并使用以下命令部署所需的堆栈cdk bootstrap --c contextId=default --require-approval never
-
使用以下命令部署 Migration Assistant
cdk deploy "*" --c contextId=default --require-approval never --concurrency 5
-
从同一 Bootstrap 实例 shell 中,验证所有 CloudFormation 堆栈是否已成功安装
aws cloudformation list-stacks --query "StackSummaries[?StackStatus!='DELETE_COMPLETE'].[StackName,StackStatus]" --output table
您的区域应该会收到类似的输出
------------------------------------------------------------------------
| ListStacks |
+--------------------------------------------------+-------------------+
| OSMigrations-dev-us-east-1-MigrationConsole | CREATE_COMPLETE |
| OSMigrations-dev-us-east-1-ReindexFromSnapshot | CREATE_COMPLETE |
| OSMigrations-dev-us-east-1-MigrationInfra | CREATE_COMPLETE |
| OSMigrations-dev-us-east-1-default-NetworkInfra | CREATE_COMPLETE |
| MigrationBootstrap | CREATE_COMPLETE |
| CDKToolkit | CREATE_COMPLETE |
+--------------------------------------------------+-------------------+
RFS 参数
如果您正在使用迁移工具创建快照,则这些参数会自动配置。如果您正在使用现有快照,请将 reindexFromSnapshotExtraArgs
设置修改为以下值
"reindexFromSnapshotExtraArgs": "--s3-repo-uri s3://<bucket-name>/<repo> --s3-region <region> --snapshot-name <name>"
您还需要授予 migrationconsole
和 reindexFromSnapshot
TaskRoles 访问 S3 存储桶的权限。
步骤 5:访问迁移控制台
运行以下命令访问迁移控制台
./accessContainer.sh migration-console dev <region>
accessContainer.sh
位于 Bootstrap 实例上的 /opensearch-migrations/deployment/cdk/opensearch-service-migration/
目录中。要了解更多信息,请参阅访问迁移控制台。
步骤 6:验证与源集群和目标集群的连接
要验证与集群的连接,请运行以下命令
console clusters connection-check
您应该会收到以下输出
SOURCE CLUSTER
ConnectionResult(connection_message='Successfully connected!', connection_established=True, cluster_version='')
TARGET CLUSTER
ConnectionResult(connection_message='Successfully connected!', connection_established=True, cluster_version='')
要了解有关迁移控制台命令的更多信息,请参阅 [迁移命令]。
步骤 7:创建快照
运行以下命令从源集群启动快照创建
console snapshot create [...]
要检查快照创建状态,请运行以下命令
console snapshot status [...]
要了解有关快照的更多信息,请运行以下命令
console snapshot status --deep-check [...]
等待快照创建完成后再转到步骤 9。
要了解有关快照创建的更多信息,请参阅 [快照创建]。
步骤 8:迁移元数据
运行以下命令迁移元数据
console metadata migrate [...]
更多信息请参阅迁移元数据。
步骤 9:使用 RFS 迁移文档
您现在可以使用 RFS 从原始集群迁移文档
-
要从 RFS 开始迁移,请使用以下命令启动一个
backfill
(回填)console backfill start
-
(可选)为了加快迁移速度,请使用以下命令同时增加处理的文档数量
console backfill scale <NUM_WORKERS>
-
要检查文档回填的状态,请使用以下命令
console backfill status
-
如果您需要停止回填过程,请使用以下命令
console backfill stop
更多信息请参阅回填。
步骤 10:回填监控
使用以下命令对回填过程进行详细监控
console backfill status --deep-check
您应该会收到以下输出
BackfillStatus.RUNNING
Running=9
Pending=1
Desired=10
Shards total: 62
Shards completed: 46
Shards incomplete: 16
Shards in progress: 11
Shards unclaimed: 5
日志和指标可在 Amazon CloudWatch 的 OpenSearchMigrations
日志组中获取。
步骤 11:验证所有文档是否已迁移
在 CloudWatch Logs Insights 中使用以下查询来识别失败的文档
fields @message
| filter @message like "Bulk request succeeded, but some operations failed."
| sort @timestamp desc
| limit 10000
如果识别出任何失败的文档,您可以直接索引失败的文档,而不是使用 RFS。