暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从AWS DocumentDB到AWS Atlas的数据迁移

原创 eternity 2022-10-12
735

AWS数据库迁移服务(DMS)提供不同数据库平台之间的异构迁移。源数据库在迁移期间保持完全可操作,从而将依赖该数据库的应用程序的停机时间降至最低。目前,DMS可以使用AWS DocumentDB作为数据库源或目标;然而,DMS仅支持MongoDB作为数据复制的源端点。

以下是使用DMS将数据从DocumentDB复制到Atlas的步骤。请注意,AWS可能不支持扭曲配置。

以下是架构图:

image.png

注意事项

1.安全组:为了简单起见,所有DocumentDB集群、EC2和DMS复制实例共享相同的安全组。所需的入站规则如下:

image.png

出站规则是默认规则:

image.png

2.根据Amazon Premium Support:“默认情况下,为Amazon DocumentDB群集启用TLS配置。要禁用TLS配置,请创建一个新的自定义Amazon Documentum DB群集参数组。将TLS参数设置为disabled,然后修改群集以使用新的群集参数组。有关更多信息,请参阅管理Amazon文档DB群集参数集。”

3.由于AWS DMS服务无法解析SRV记录,您需要提供Atlas主节点的FQDN作为目标端点配置的服务器名称。但是,如果重新选择了Atlas中副本集的主要成员,则复制任务将失败。您需要停止任务,使用新的主主机名重新配置目标端点,然后再次继续执行任务。无法在任务运行时修改目标端点设置。

或者,您可以创建单个分片集群,并将其中一个Mongo进程的主机名和端口号用于目标端点配置。

4.DMS支持在单个任务中迁移多个数据库。如AWS数据库迁移服务用户指南所述:

  • “在AWS DMS的AWS管理控制台中,在“创建端点”页面的“端点配置”下,将数据库名称留空。”

  • “对于要从此Amazon DocumentDB源端点迁移的每个数据库,请使用控制台中的引导输入或直接使用JSON在任务的表映射中将每个数据库的名称指定为架构的名称。”例如:

  {

    "rules": [

        {

            "rule-type": "selection",

            "rule-id": "1",

            "rule-name": "1",

            "object-locator": {

                "schema-name": "Customers",

                "table-name": "%"

            },

            "object-locator": {

                "schema-name": "Orders",

                "table-name": "%"

            },

            "object-locator": {

                "schema-name": "Inventory",

                "table-name": "%"

            },

            "rule-action": "include"

        }

    ]

}

步骤

1.创建文档数据库群集

  • 1.创建DocumentDB群集:

    • a.选择DocumentDB服务。

    • b.单击左侧面板中的群集。

    • c.单击创建按钮。

    • d.配置以下设置:

2.配置:

  • a.集群标识符:<DocumentDB集群的名称>

  • b.发动机版本:4.0.0

  • c.实例类:db.t3.medium(可免费试用)

  • d.实例数:1

3.身份验证:

  • a.主用户名:<主用户名称>

  • b.主密码/确认主密码:<主用户密码>

4.启用“显示高级设置”

5.网络设置:

  • a.虚拟私有云:

  • b.子网组:

  • c.VPC安全组:<使用注释A>中指定的组

6.群集选项:

  • a.端口:27017

  • b.集群参数组:default.docdb4.0。其他设置可以采用默认值。

7.单击Create cluster按钮。如果要在DocumentDB群集上禁用TLS,请参阅注释B。

2.创建EC2实例以加载示例数据

DocumentDB可以由部署在同一Amazon VPC中的Amazon EC2实例或其他AWS服务直接访问。但是,如果要从集群的VPC外部访问资源,则只能使用SSH隧道来访问Amazon DocumentDB资源。

EC2实例是使用与DocumentDB集群相同的网络设置(VPC、子网组和安全组)创建的。EC2实例就绪后,安装mongoshell并将一些示例数据加载到DocumentDB集群中。您可以参考《入门指南》中的步骤4至6。

运行以下命令以在源数据库上启用更改流。

db.adminCommand({modifyChangeStreams: 1,

    database: "<source database name>",

    collection: "", 

    enable: true});

3.创建复制子网组

1.选择数据迁移服务服务。

2.单击左侧面板中的子网组。

3.单击创建子网组按钮。

4.提供要在其上创建复制实例的VPC和子网。

5.单击创建子网组按钮。

4.创建DMS复制实例

1.在同一服务上,单击左侧面板中的复制实例。

2.单击创建复制实例按钮。

3.配置以下设置。

  • a.复制实例配置:

    • 名称:<复制实例名称>

    • 描述性亚马逊资源名称(ARN):留空

    • 说明:<实例说明>

    • 实例类:dms.t3.small

    • 发动机版本:3.4.6

    • 分配的存储量(GiB):50

    • VPC:<使用默认值或任何特定VPC>

    • 多AZ:单AZ

    • 公开访问:勾选方框(将此IP地址添加到Atlas上的白名单中)

  • b、 高级安全和网络配置:

    • 复制子网组:<步骤3创建的子网组>

    • VPC安全组:<使用注释A>中指定的组

您可以使用其他设置的默认值。

4.单击“创建”按钮。

5.导入DocumentDB证书(可选)

如果DocumentDB集群启用了TLS,请执行AWS文档中的步骤,以便DMS可以使用TLS连接到Amazon DocumentDB。

6.创建DocumentDB源端点

1.在同一服务上,单击左侧面板中的端点。

2.单击Create endpoint按钮。

3.配置以下设置:

  • a.终结点类型:源终结点

  • b.终结点配置:

    • 端点标识符:<端点名称>

    • 描述性Amazon资源名称(ARN):留空

    • 源引擎:Amazon DocumentDB

    • 访问端点数据库:手动提供访问信息

    • 服务器名称:<DocumentDB集群的服务器名称>

    • e、 g.mdb-ddb-db.cluster-c50ma7ye6nnl.ap-southeast-2.docdb.amazonaws.com

    • 端口:27017

    • Secure Socket Layer(SSL)模式:验证已满(如果tls已禁用,则无)

    • 用户名:<主用户名称>

    • 密码:<主用户密码>

    • 身份验证来源:admin

    • 数据库名称:<复制的数据库名称>

    • 元数据模式:文档

    • _id作为单独的列:将其保留为未选中状态

4.展开测试端点连接(选项):

  • 1.VPC:<选择创建复制实例的VPC>

  • 2.复制实例:<选择步骤4中创建的实例>

5.单击运行测试按钮。

6.如果测试失败,您可能需要对该问题进行故障排除。

7.单击创建端点按钮。

7.导入Atlas Certificate

1.下载Atlas root CA certificate 证书并将其保存在本地驱动器上。

2.在同一服务上,单击左侧面板中的证书。

3.单击“导入证书”按钮。

4.配置以下设置:

  • 证书配置:

    • 证书标识符:ISRG-Root-X1

    • 导入证书文件:<选择步骤a中保存的文件>

5.单击导入证书按钮。

8.更新IP访问列表

使用DMS复制实例的公共IP地址更新Atlas项目的IP访问列表。

9.创建Altas目标端点

1.在同一服务上,单击左侧面板中的端点。

2.单击Create endpoint按钮。

3.配置以下设置:

  • a.终结点类型:目标终结点

  • b.终结点配置:

    • 端点标识符:<端点名称>

    • 描述性Amazon资源名称(ARN):留空。

    • 目标引擎:Amazon DocumentDB

    • 访问端点数据库:手动提供访问信息。

    • 服务器名称:<Atlas复制集的主服务器名称>;e、 例如,cluster1-shard-00-02.2psdk.mongodb.net。如果重新选择了主要成员,则复制任务将失败(请参阅注释C)。

    • 端口:27017

    • Secure Socket Layer(SSL)模式:验证已满

    • CA证书:ISRG-Root-X1

    • 用户名:<主用户名称>

    • 密码:<主用户密码>

    • 数据库名称:<目标数据库名称>

4.展开测试端点连接(选项)。

  • a.VPC:<使用创建复制的VPC>

  • b.复制实例:<选择步骤4中创建的实例>

5.单击运行测试按钮。如果测试失败,您可能需要对该问题进行故障排除。

6.单击创建端点按钮。

10.创建完全加载+CDC复制任务

1.在同一服务上,单击左侧面板中的数据库迁移任务。

2.单击创建任务按钮。

3.配置以下设置。

  • a.任务配置:

    • 任务标识符:<复制任务的名称>

    • 描述性Amazon资源名称(ARN):留空

    • 复制实例:<select the one created on step 4>

    • 源数据库端点:<select the endpoint created on step 6>

    • 目标数据库端点:<select the endpoint created on step 9>

    • 迁移类型:迁移现有数据并复制正在进行的更改

  • b.任务设置:

    • 编辑模式:向导

    • 目标表准备模式:在目标上放置表

    • 满载完成后停止任务:不要停止

    • 在复制中包括LOB列:有限LOB模式

    • 最大LOB大小(KB):32

    • 启用验证:将其保留为未检查状态

    • 启用CloudWatch日志:将其保留为未检查状态

  • c.表映射:

    • 编辑模式:向导

    • 单击“添加新选择规则”

    • 模式:输入模式

    • 源名称:<从源复制的数据库名称>

    • 表名称:<从源复制的集合名称>

    • 操作:包括

    • 您可以从官方文档中获得有关DMS选择规则的更多信息。

  • d.预迁移评估:

    • 启用迁移前评估运行:将其保留为未选中状态。
  • e.迁移任务启动配置:

    • 启动迁移任务:创建时自动

4.单击创建任务按钮。

11.监控迁移任务

任务启动后,可以使用Table Statistics选项卡监视单个集合上的Full Load和CDC复制的进度。

image.png

原文标题:Data Migration from AWS DocumentDB to Atlas on AWS
原文作者:Travis Van
原文链接:https://dzone.com/articles/data-migration-from-aws-documentdb-to-atlas

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论