Link Search Menu Expand Document Documentation Menu

数据迁移入门

本快速入门指南概述了如何为 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 来创建和管理堆栈。

  1. 登录到您要部署 Migration Assistant 的目标 AWS 账户。
  2. 在您已登录目标 AWS 账户的浏览器中,此处右键单击以在新浏览器选项卡中加载 CloudFormation 模板。
  3. 遵循 CloudFormation 堆栈向导
    • 堆栈名称: MigrationBootstrap
    • 阶段名称: dev
    • 每一步之后选择下一步 > 确认 > 提交
  4. 验证 Bootstrap 堆栈是否存在并设置为 CREATE_COMPLETE。此过程大约需要 10 分钟才能完成。

步骤 2:设置 Bootstrap 实例访问权限(约 5 分钟)

使用以下步骤设置 Bootstrap 实例访问权限

  1. 部署后,找到 bootstrap-dev-instance 的 EC2 实例 ID。
  2. 使用以下代码片段创建 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>"
                 ]
             }
         ]
     }
    

  3. 为策略命名,例如 SSM-OSMigrationBootstrapAccess,然后通过选择 Create policy(创建策略)来创建策略。
  4. 将新创建的策略附加到您的 EC2 实例的 IAM 角色。

步骤 3:登录 Bootstrap 并构建 Migration Assistant(约 15 分钟)

接下来,使用以下步骤登录 Bootstrap 并构建 Migration Assistant。

先决条件

要使用这些步骤,请确保您满足以下先决条件

  • 您的实例上已安装 AWS 命令行界面 (AWS CLI) 和 AWS Session Manager 插件。
  • AWS 凭证已为您的实例配置(aws configure)。

步骤

  1. 将 AWS 凭证加载到您的终端。
  2. 使用以下命令登录实例,将 <instance-id><aws-region> 替换为您的实例 ID 和区域

     aws ssm start-session --document-name BootstrapShellDoc-<stage>-<aws-region> --target <instance-id> --region <aws-region> [--profile <profile-name>]
    

  3. 登录后,在 /opensearch-migrations 目录中的 Bootstrap 实例 shell 中运行以下命令

     ./initBootstrap.sh && cd deployment/cdk/opensearch-service-migration
    

  4. 成功构建后,请记下基础设施部署的路径,该路径将在下一步中使用。

步骤 4:配置和部署 RFS(约 20 分钟)

要部署带有 RFS 的 Migration Assistant,必须部署以下堆栈

这些命令部署以下堆栈

  • Migration Assistant network 堆栈
  • RFS 堆栈
  • Migration console 堆栈

使用以下步骤配置和部署 RFS,部署 Migration Assistant,并验证所需堆栈的安装

  1. 将源集群和目标集群的基本身份验证信息(用户名和密码)作为单独的密钥添加到 AWS Secrets Manager 中。每个密钥必须包含两个键值对:一个用于用户名,一个用于密码。每个密钥的明文应类似于以下示例

    {"username":"admin","password":"myStrongPassword123!"}
    

    请务必复制密钥的 Amazon 资源名称 (ARN),以便在部署期间使用。

  2. 在与 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

  3. cdk.context.json 文件完全配置后,引导账户并使用以下命令部署所需的堆栈

     cdk bootstrap --c contextId=default --require-approval never 
    

  4. 使用以下命令部署 Migration Assistant

     cdk deploy "*" --c contextId=default --require-approval never --concurrency 5
    

  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>"

您还需要授予 migrationconsolereindexFromSnapshot 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 从原始集群迁移文档

  1. 要从 RFS 开始迁移,请使用以下命令启动一个 backfill(回填)

     console backfill start
    

  2. (可选)为了加快迁移速度,请使用以下命令同时增加处理的文档数量

     console backfill scale <NUM_WORKERS>
    

  3. 要检查文档回填的状态,请使用以下命令

     console backfill status
    

  4. 如果您需要停止回填过程,请使用以下命令

     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。