View a markdown version of this page

创建一个 Amazon DMS 以 Neptune 为目标的复制任务 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建一个 Amazon DMS 以 Neptune 为目标的复制任务

创建表映射和图形映射配置后,使用以下过程将数据从源存储加载到 Neptune。有关相 Amazon DMS 关 API 的更多详细信息,请参阅文档。

创建一个 Amazon DMS 复制实例

在运行 Neptune 数据库集群的 VPC 中创建 Amazon DMS 复制实例(请参阅使用 Amazon DMS 复制实例和 Amazon DMS 用户指南CreateReplicationInstance中的操作)。你可以使用如下 Amazon CLI 命令来做到这一点:

aws dms create-replication-instance \ --replication-instance-identifier (the replication instance identifier) \ --replication-instance-class (the size and capacity of the instance, like 'dms.t2.medium') \ --allocated-storage (the number of gigabytes to allocate for the instance initially) \ --engine-version (the DMS engine version that the instance should use) \ --vpc-security-group-ids (the security group to be used with the instance)

创建一个 Amazon DMS 源数据库的端点

下一步是为您的源数据存储创建 Amazon DMS 终端节点。你可以 Amazon CLI 像这样使用 Amazon DMS CreateEndpoint API:

aws dms create-endpoint \ --endpoint-identifier (source endpoint identifier) \ --endpoint-type source \ --engine-name (name of source database engine) \ --username (user name for database login) \ --password (password for login) \ --server-name (name of the server) \ --port (port number) \ --database-name (database name)

设置 Amazon S3 存储桶以供 Neptune 用于暂存数据

如果您没有可用于暂存数据的 Amazon S3 存储桶,请按照 Amazon S3 Getting-Started 指南中的创建存储桶或如何创建 S3 存储桶中的说明创建一个存储桶?在《控制台用户指南》中。

如果您还没有创建用于授予对桶的 GetObjectPutObjectDeleteObjectListObject 权限的 IAM policy,则需要创建此策略:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

如果 Neptune 数据库集群启用了 IAM 身份验证,则还需要包括以下策略:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "neptune-db:*", "Resource": "arn:aws:neptune-db:us-east-1:111122223333:cluster-resource-id/*" } ] }

创建 IAM 角色作为将策略附加到的可信文档:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "neptune", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

将策略附加到角色后,将该角色附加到您的 Neptune 数据库集群。这将允许使用存储桶 Amazon DMS 来暂存正在加载的数据。

在 Neptune VPC 中创建 Amazon S3 端点

现在,在您的 Neptune 集群所在的 VPC 中,为中间 Amazon S3 桶创建 VPC 网关端点。您可以使用 Amazon Web Services 管理控制台 或 Amazon CLI 来执行此操作,如创建网关终端节点中所述

创建一个 Amazon DMS 海王星的目标端点

为您的目标 Neptune 数据库集群创建 Amazon DMS 终端节点。你可以使用带有如下NeptuneSettings参数 Amazon DMS CreateEndpoint的 API:

aws dms create-endpoint \ --endpoint-identifier (target endpoint identifier) \ --endpoint-type target \ --engine-name neptune \ --server-name (name of the server) \ --port (port number) \ --neptune-settings '{ \ "ServiceAccessRoleArn": "(ARN of the service access role)", \ "S3BucketName": "(name of S3 bucket to use for staging files when migrating)", \ "S3BucketFolder": "(name of the folder to use in that S3 bucket)", \ "ErrorRetryDuration": (number of milliseconds to wait between bulk-load retries), \ "MaxRetryCount": (the maximum number of times to retry a failing bulk-load job), \ "MaxFileSize": (maximum file size, in bytes, of the staging files written to S3), \ "IamAuthEnabled": (set to true if IAM authentication is enabled on the Neptune cluster) }'

在其NeptuneSettings参数中传递给 Amazon DMS CreateEndpoint API 的 JSON 对象具有以下字段:

  • ServiceAccessRoleArn(必需)IAM 角色的 ARN,该角色允许对用于暂存迁移到 Neptune 的数据的 S3 桶进行精细访问。如果对 Neptune 数据库集群启用了 IAM 授权,则此角色还应有权访问该数据库集群。

  • S3BucketName(必需)对于完全加载迁移,复制实例会将所有 RDS 数据转换为 CSV、四元组文件并将其上传到 S3 中的此暂存桶,然后将其批量加载到 Neptune。

  • S3BucketFolder(必需)要在 S3 暂存桶中使用的文件夹。

  • ErrorRetryDuration(可选)Neptune 请求失败后在发出重试请求之前等待的毫秒数。默认值是 250。

  • MaxRetryCount(可选)可重试失败后 Amazon DMS 应发出的最大重试请求数。默认值为 5。

  • MaxFileSize(可选)在迁移期间,保存到 S3 的各个暂存文件的最大大小(以字节为单位)。默认值是 1048576 KB(1 GB)。

  • IsIAMAuthEnabled(可选)如果在 Neptune 数据库集群上启用了 IAM 身份验证,则设置为 true,否则设置为 false。默认值为 false

测试与新端点的连接

你可以使用 Amazon DMS TestConnection API 来测试与每个新端点的连接,如下所示:

aws dms test-connection \ --replication-instance-arn (the ARN of the replication instance) \ --endpoint-arn (the ARN of the endpoint you are testing)

创建一个 Amazon DMS 复制任务

成功完成前面的步骤后,使用如下所示的 Amazon DMS CreateReplicationTask API 创建复制任务,将数据从源数据存储迁移到 Neptune:

aws dms create-replication-task \ --replication-task-identifier (name for the replication task) \ --source-endpoint-arn (ARN of the source endpoint) \ --target-endpoint-arn (ARN of the target endpoint) \ --replication-instance-arn (ARN of the replication instance) \ --migration-type full-load \ --table-mappings (table-mapping JSON object or URI like 'file:///tmp/table-mappings,json') \ --task-data (a GraphMappingConfig object or URI like 'file:///tmp/graph-mapping-config.json')

TaskData 参数提供 GraphMappingConfig,用于指定所复制的数据应如何存储在 Neptune 中。

启动 Amazon DMS 复制任务

现在,您可以启动复制任务:

aws dms start-replication-task --replication-task-arn (ARN of the replication task started in the previous step) --start-replication-task-type start-replication