将数据从 Amazon DynamoDB 迁移到 Oracle NoSQL Database Cloud Service

可以使用 Oracle NoSQL Database Migrator 将数据从 Amazon DynamoDB 迁移到 Oracle NoSQL Database Cloud Service

  • 使用 Oracle NoSQL 默认方案
  • 使用自定义模式

这两个选项都需要配置 JSON 文件,该文件包含有关源文件和目标数据库 (sink) 的信息。在这两种情况下,源为存储在 Amazon S3 对象存储中的 Amazon DynamoDB 格式的 JSON 文件,而目标为 Oracle NoSQL Database Cloud Service 数据库。由于 Amazon DynamoDB 是一个无模式数据库,因此我们建议使用 Oracle NoSQL 默认模式进行迁移。

使用 Oracle NoSQL 默认方案迁移数据

使用默认方案进行迁移时,会创建一个新的 Oracle NoSQL Database Cloud Service 表,其中包含两列或三列:分区键、排序键(可选)和文档。分区键和排序键将从 Amazon DynamoDB 表迁移到 Oracle NoSQL Database Cloud Service 表。任何剩余的 Amazon DynamoDB 属性在文档列中以 JSON 格式聚合。

以下步骤介绍了如何使用 Oracle NoSQL 默认方案迁移数据。

  1. 在 AWS 控制台中,为将访问正在导出 Amazon DynamoDB 数据的 Amazon S3 对象存储的用户创建访问密钥(如果尚不存在)。
    我们建议创建新用户并为用户创建新的访问密钥。请勿为根 Amazon 帐户用户创建访问密钥。创建访问密钥时,必须提供用例。确保使用案例“在 AWS 外部运行的应用程序:您计划使用此访问密钥来验证在您的数据中心或 AWS 外部需要访问您的 AWS 资源的其他基础设施中运行的工作负载”。有关创建用户或访问密钥的详细信息,请参阅“复查文档”部分。
    记下访问键和密钥访问键。这些内容不会再次显示。
  2. 创建 Amazon S3 存储桶(如果尚不存在)。记下存储桶名称、区域和存储桶 URL。
    有关详细信息,请参阅“查看文档”部分中的“创建存储桶”。
  3. 选择 Amazon DynamoDB 服务,然后选择要迁移到 Oracle NoSQL Database Cloud ServiceAmazon DynamoDB 表。
    在 "General Information" 下,记下分区键的名称和类型以及排序键属性。
  4. Amazon DynamoDB 服务菜单中单击导出到 S3 ,然后单击导出到 S3
  5. 选择要导出的表的名称,然后选择将导出数据的存储桶的名称(在步骤 2 中创建的存储桶的名称)。
  6. 配置导出设置:
    • 选择完全导出
    • 为导出的文件格式选择 DynamoDB JSON
    • 选择用于加密的默认 Amazon S3 密钥。
    • 启用 PITR (时间点恢复)。要导出的表是必需的。
  7. 单击导出
    在导出过程中记下导出 ID。有关导出的更多信息,请参见“DynamoDB data export to Amazon S3:how it works ”。
  8. 导出完成后,导航到 AWS 控制台并选择 Amazon S3 服务。
  9. 选择导出数据的存储桶。
    在名为 AWSDynamoDB/ExportID 的存储桶中创建一个新目录。在此目录中创建名为 data 的子目录,该目录包含一系列带有导出的 Amazon DynamoDB 表数据的 GZIP 压缩 JSON 文件。有关格式化的 JSON 文件的更多信息,请参见“复查文档”部分中的“DynamoDB 表导出输出格式”。
  10. 在 OCI 控制台中,为将拥有目标 Oracle NoSQL Database Cloud Service 表的 OCI 用户创建 API 密钥。此用户必须具有创建和管理 Oracle NoSQL Database Cloud Service 表的权限。
    请注意用户 OCID、租户 OCID、指纹和 OCI 区域 ID。将私钥和公钥保存在 PEM 文件中。Oracle NoSQL Database Migrator 使用此 API 密钥将 Amazon DynamoDB 格式的 JSON 文件上载到表中。
  11. Oracle NoSQL Database Cloud Service 表创建区间(如果尚不存在)。
    记下区间名称。
  12. 创建计算实例。
    此计算实例将运行 Oracle NoSQL Database Migrator 软件。始终免费的计算实例 (VM.Standard.E4)。具有 1 个 OCPU 和 16GB 内存的弹性 ) 足够且经济高效。
  13. 配置采用 Oracle Linux 8 的计算实例。
  14. 使用 SSH 以 opc user 身份登录到新计算实例,以便按如下方式安装 Java 11:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. 如果尚未下载 Oracle NoSQL Database Migrator 1.5.0 二进制文件,有关详细信息,请参见“查看软件要求”部分。
  16. 使用 SCP 将 Oracle NoSQL Database Migrator ZIP 文件上载到新计算实例中的 opc user's 主目录。
  17. 使用 SSH 以 opc user 身份登录计算实例,以解压缩上一步中下载的 Oracle NoSQL Database Migrator 软件。文件的内容将解压缩到名为 /home/opc/nosql-migrator-1.5.0 的新目录。按如下方式解压缩文件:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. 使用 SCP 将步骤 10 中的私有密钥 PEM 文件上载到上一步中解压缩了 Oracle NoSQL Database Migrator 的计算实例 opc user 的主目录。
  19. 使用 SSH 以 opc user 身份登录计算实例,以创建 OCI 身份文件。使用以下内容在 /home/opc/.oci 目录中创建 OCI 身份文件:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. 作为计算实例中的 opc user,创建 AWS 配置和凭证文件。使用以下内容在 /home/opc/.aws 目录中添加这些文件:
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. 在计算实例中,将目录更改为 nosql-migrator-1.5.0 子目录。创建迁移配置 JSON 文件,该文件包含有关源和目标 (sink) 的信息,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
     "source" : {
     "type" : "aws_s3",
     "format" : "dynamodb_json",
     "s3URL" : "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.c
    om/AWSDynamoDB/export_ID/data",
     "credentials" : "/home/opc/.aws/credentials",
     "credentialsProfile" : "default"
     },
     "sink" : {
     "type" : "nosqldb_cloud",
     "endpoint" : "https://nosql.oci_region_ID_from_step_11.oci.oraclecloud.com",
     "table" : "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
     "schemaInfo" : {
     "defaultSchema" : true,
     "DDBPartitionKey" : "partition_key_name_from_step_3:type_from_step_3",
     "DDBSortKey" : "sort_key_name_from_step_3:type_from_step_3",
     "readUnits" : 50,
     "writeUnits" : 50,
     "storageSize" : 25
     },
     "compartment" : "compartment_name_from_step_11",
     "includeTTL" : false,
     "credentials" : "/home/opc/.oci/config",
     "credentialsProfile" : "DEFAULT",
     "writeUnitsPercent" : 90,
     "overwrite" : true,
     "requestTimeoutMs" : 5000
     },
     "abortOnError" : false,
     "migratorVersion" : "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  22. 使用 Oracle NoSQL Database Migrator 和在上一步中创建的迁移配置 JSON 文件运行数据迁移,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    迁移作业将使用默认方案创建新的 Oracle NoSQL Database Migrator 表,然后从 Amazon S3 对象存储桶读取 Amazon DynamoDB 格式的 JSON 文件,然后将数据从这些文件导入到新创建的表。

使用定制方案迁移数据

使用定制方案进行迁移时,新的 Oracle NoSQL Database Cloud Service 表必须使用 Oracle NoSQL Database Cloud Service 表数据定义语言 (DDL) 来定义类似于 Amazon DynamoDB 表的方案。新表的属性名称和类型应与 Amazon DynamoDB 表上的属性名称和类型相同。分区键和排序键的限制分别为 2048 字节和 1024 字节,而在 Oracle NoSQL Database Cloud Service 中,这些键的限制为 64 字节。

  1. 在 AWS 控制台中,为将访问正在导出 Amazon DynamoDB 数据的 Amazon S3 对象存储的用户创建访问密钥(如果尚不存在)。
    我们建议创建新用户并为用户创建新的访问密钥。请勿为根 Amazon 帐户用户创建访问密钥。创建访问密钥时,必须提供用例。确保使用案例“在 AWS 外部运行的应用程序:您计划使用此访问密钥来验证在您的数据中心或 AWS 外部需要访问您的 AWS 资源的其他基础设施中运行的工作负载”。有关创建用户或访问密钥的更多信息,请参阅“复查文档”部分。
    请注意生成的访问密钥和密钥访问密钥,因为不会再次显示这些密钥。
  2. 创建 Amazon S3 存储桶(如果尚不存在)。记下存储桶名称、区域和存储桶 URL。
    有关详细信息,请参阅“查看文档”部分中的“创建存储桶”。
  3. 选择 Amazon DynamoDB 服务,然后选择要迁移到 Oracle NoSQL Database Cloud ServiceAmazon DynamoDB 表。
    在 "General Information" 下,记下分区键的名称和类型以及排序键属性。请注意表中的其他属性及其类型。
  4. Amazon DynamoDB 服务菜单中单击导出到 S3 ,然后单击导出到 S3
  5. 选择要导出的表的名称,然后选择将导出数据的存储桶的名称(在步骤 2 中创建的存储桶的名称)。
  6. 配置导出设置:
    • 选择完全导出
    • 为导出的文件格式选择 DynamoDB JSON
    • 选择用于加密的默认 Amazon S3 密钥。
    • 启用 PITR (时间点恢复)。要导出的表是必需的。
  7. 单击导出
    在导出过程中记下导出 ID。有关导出的更多信息,请参见“DynamoDB data export to Amazon S3:how it works ”。
  8. 导出完成后,导航到 AWS 控制台并选择 Amazon S3 服务。
  9. 选择导出数据的存储桶。
    在名为 AWSDynamoDB/ExportID 的存储桶中创建一个新目录。在此目录中创建名为 data 的子目录,该目录包含一系列带有导出的 Amazon DynamoDB 表数据的 GZIP 压缩 JSON 文件。有关格式化的 JSON 文件的更多信息,请参见“复查文档”部分中的“DynamoDB 表导出输出格式”。
  10. 在 OCI 控制台中,为将拥有目标 Oracle NoSQL Database Cloud Service 表的 OCI 用户创建 API 密钥。此用户必须具有创建和管理 Oracle NoSQL Database Cloud Service 表的权限。
    请注意用户 OCID、租户 OCID、指纹和 OCI 区域 ID。将私钥和公钥保存在 PEM 文件中。Oracle NoSQL Database Migrator 使用此 API 密钥将 Amazon DynamoDB 格式的 JSON 文件上载到表中。
  11. Oracle NoSQL Database Cloud Service 表创建区间(如果尚不存在)。
    记下区间名称。
  12. 创建计算实例。
    此计算实例将运行 Oracle NoSQL Database Migrator 软件。始终免费的计算实例 (VM.Standard.E4)。具有 1 个 OCPU 和 16GB 内存的弹性 ) 足够且经济高效。
  13. 配置采用 Oracle Linux 8 的计算实例。
  14. 使用 SSH 以 opc user 身份登录到新计算实例,以便按如下方式安装 Java 11:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. 如果尚未下载 Oracle NoSQL Database Migrator 1.5.0 二进制文件,有关详细信息,请参见“查看软件要求”部分。
  16. 使用 SCP 将 Oracle NoSQL Database Migrator ZIP 文件上载到新计算实例中的 opc user's 主目录。
  17. 使用 SSH 以 opc user 身份登录计算实例,以解压缩上一步中下载的 Oracle NoSQL Database Migrator 软件。文件的内容将解压缩到名为 /home/opc/nosql-migrator-1.5.0 的新目录。按如下方式解压缩文件:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. 使用 SCP 将步骤 10 中的私有密钥 PEM 文件上载到上一步中解压缩了 Oracle NoSQL Database Migrator 的计算实例 opc user 的主目录。
  19. 使用 SSH 以 opc user 身份登录计算实例,以创建 OCI 身份文件。使用以下内容在 /home/opc/.oci 目录中创建 OCI 身份文件:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. 作为计算实例中的 opc user,创建 AWS 配置和凭证文件。使用以下内容在 /home/opc/.aws 目录中添加这些文件:
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. 将目录更改为 nosql-migrator-1.5.0 子目录,然后创建 Oracle NoSQL Database Cloud Service 数据定义语言 (Data Definition Language,DDL) 语句,以创建新的 Oracle NoSQL Database Cloud Service 表,其属性与步骤 3 中从 Amazon DynamoDB 表中收集的属性类似。下面是创建新 Oracle NoSQL Database Cloud Service 表 DDL 语句的示例:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat /home/opc/table_name.ddl 
    CREATE TABLE IF NOT EXISTS table_name (partition_key_name_from_step_3 
    type,sort_key_name_from_step_3 type, attribute_1 type, attribute_2 
    type, PRIMARY 
    KEY(SHARD(partition_key_name_from_step_3),sort_key_name_from_step_3))
  22. 在计算实例中,将目录更改为 nosql-migrator-1.5.0 子目录。创建迁移配置 JSON 文件,该文件包含有关源和目标 (sink) 的信息,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
      "source": {
        "type": "aws_s3",
        "format": "dynamodb_json",
        "s3URL": "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.com/AWSDynamoDB/export_ID_from_step_7/data",
        "credentials": "/home/opc/.aws/credentials",
        "credentialsProfile": "default"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_10.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
        "schemaInfo": {
          "schemaPath": "/home/opc/nosql-migrator-1.5.0/table_name.ddl_from_step_21",
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_11",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "abortOnError": false,
      "migratorVersion": "1.5.0"
    }
  23. 使用 Oracle NoSQL Database Migrator 和在上一步中创建的迁移配置 JSON 文件运行数据迁移,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    迁移作业将使用步骤 21 中定义的定制方案 DDL 创建新的 Oracle NoSQL Database Migrator 表,然后从 Amazon S3 对象存储桶中读取 Amazon DynamoDB 格式的 JSON 文件,然后将数据从这些文件导入到新创建的表。