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

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

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

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

步骤 1:创建 Amazon DMS 复制实例

在运行 Neptune 数据库集群的 VPC 中创建 Amazon DMS 复制实例(参见《 Amazon DMS 用户指南》CreateReplicationInstance中的 “使用 Amazon DMS 复制实例”)。你可以使用如下 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)

第 2 步。为源数据库创建 Amazon DMS 终端节点

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

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)

第 3 步。设置 Amazon S3 桶供 Neptune 用于暂存数据

如果您没有可用于暂存数据的 Amazon S3 桶,请按照以下说明创建一个桶:《Amazon S3 入门指南》中的创建桶,或《控制台用户指南》中的如何创建 S3 桶?

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "neptune-db:*", "Resource": "(the ARN of your Neptune DB cluster resource)" } ] }

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

{ "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 允许使用存储桶暂存正在加载的数据。

第 4 步。在 Neptune VPC 中创建 Amazon S3 端点

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

第 5 步。为 Neptune 创建 Amazon DMS 目标端点

为您的目标 Neptune 数据库集群创建 Amazon DMS 终端节点。你可以将 Amazon DMS CreateEndpointAPI 与NeptuneSettings参数配合使用,如下所示:

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), \ "isIamAuthEnabled": (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

第 6 步。测试与新终端节点的连接

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

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

第 7 步。创建 Amazon DMS 复制任务

成功完成上述步骤后,使用如下所示的 Amazon DMS CreateReplicationTaskAPI 创建用于将数据从源数据存储迁移到 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 中。

步骤 8:启动 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