在当今高度互联的世界中,这句话再准确不过了。数据迁移对于全球组织至关重要,从旨在快速扩展的初创公司到寻求 IT 基础架构现代化的企业。
然而,作为一名技术爱好者,我经常发现自己在不同环境中驾驭大量数据的复杂性。没有很好地计划或执行的数据迁移(无论是一次性事件还是持续复制)都是手动完成的,没有使用任何脚本自动完成,或者没有经过良好的测试,这可能会导致迁移过程中出现问题并增加延迟或停机时间。
AWS DMS 建立了一个平台,以最短的停机时间有效地执行迁移。我还意识到,我们可以使用 Terraform IAC 完全自动化此过程,以触发任何受支持的源数据库到目标数据库的迁移。使用 Terraform,我们可以创建目标节点和 AWS DMS 资源所需的基础设施,该基础设施可以自动完成数据迁移。
什么是 AWS Data Migration Service (AWS DMS)?
如何使用 AWS DMS 和 Terraform IAC 自动执行数据迁移
AWS DMS 的主要优势和功能?
让我们开始吧!
1. 什么是 AWS DMS(数据库迁移服务)?
AWS DMS(数据库迁移服务)是一种基于云的工具,通过将数据从任何受支持的源复制到任何受支持的目标,促进数据库迁移到 AWS 云。它还支持连续数据捕获 (CDC) 功能,该功能可持续将数据从源复制到目标。
AWS DMS 架构概述
AWS DMS 的使用案例
AWS Database Migration Service (AWS DMS) 支持许多使用案例,从同类迁移到复杂的跨平台转换。
同构数据迁移
同构数据库迁移在相同或相似的数据库之间迁移数据。由于源数据库和目标数据库之间的架构结构和数据类型一致,此一步过程非常简单。
同构数据库迁移
异构数据库迁移
异构数据库迁移涉及在不同数据库之间传输数据,例如 Oracle 到 Amazon Aurora、Oracle 到 PostgreSQL 或 SQL Server 到 MySQL。此过程需要转换源架构和代码以匹配目标数据库。
使用 AWS 架构转换工具,此迁移将分为两步:架构转换和数据迁移。源架构和代码转换涉及转换表、视图、存储过程、函数、数据类型、同义词等。AWS Schema Conversion Tool 无法自动转换的任何对象都会被明确标记为手动转换以完成迁移。
DMS 架构转换
异构数据库迁移
AWS DMS 的先决条件
以下是 AWS DMS 数据迁移的先决条件
通过防火墙和安全组访问源端点和目标端点
源终结点连接
目标终结点连接
复制实例
目标架构或数据库
用于触发 Lambda 函数的 CloudWatch 事件
用于启动复制任务的 Lambda 函数
资源限制增加
AWS DMS 组件
在迁移到 AWS DMS 之前,让我们先了解一下 AWS DMS 组件。
复制实例
复制实例由处理复制任务的 Amazon EC2 实例管理。它们连接到源数据存储,读取目标的数据并设置其格式,然后将其加载到目标数据存储中。
复制实例
源端点和目标端点
AWS DMS 使用终端节点连接到源数据库和目标数据库,从而允许将数据从源终端节点迁移到目标终端节点。
支持的源终结点包括:
支持的源终端节点包括 Google Cloud for MySQL、Amazon RDS for PostgreSQL、Microsoft SQL Server、Oracle Database、Amazon DocumentDB、PostgreSQL、Microsoft Azure SQL Database、IBM DB2、兼容 MySQL 的 Amazon Aurora、MongoDB、Amazon RDS for Oracle、Amazon S3、Amazon RDS for MariaDB、Amazon RDS for Microsoft SQL Server、MySQL、Amazon RDS for MySQL、兼容 PostgreSQL 的 Amazon Aurora、 MariaDB 和 SAP Adaptive Server Enterprise (ASE)。
支持的终端
支持的目标终端节点包括 PostgreSQL、SAP Adaptive Server Enterprise (ASE)、Google Cloud for MySQL、IBM DB2、MySQL、Amazon RDS for Microsoft SQL Server、Oracle 数据库、Amazon RDS for MariaDB、兼容 MySQL 的 Amazon Aurora、MariaDB、Amazon S3、Amazon RDS for PostgreSQL、Microsoft SQL Server、Amazon DocumentDB、Microsoft Azure SQL Database、Amazon RDS for Oracle、MongoDB、兼容 PostgreSQL 的 Amazon Aurora、 Amazon RDS for MySQL 和 Amazon RDS for Microsoft SQL Server。
复制任务
复制任务有助于从源端点到目标端点的顺畅数据传输。这涉及指定迁移所需的表和架构,以及任何特殊的处理要求,例如日志记录、控制表数据和错误处理。创建复制任务是开始迁移之前的关键步骤,包括定义迁移类型、源和目标终端节点以及复制实例。
复制任务包括三种主要的迁移类型:
总负载:仅迁移现有数据。
CDC(变更数据捕获)满载: 迁移现有数据并持续复制更改。
仅限 CDC(更改数据捕获):仅连续复制数据中的更改。
仅验证:仅专注于数据验证。
这些类型导致三个主要阶段:
迁移现有数据(满载):AWS DMS将数据从源表传输到目标表。
缓存更改应用程序:在进行总负载时,对加载表的更改将缓存在复制服务器上。完成表的总负载后,AWS DMS 将应用缓存的更改。
持续复制(更改数据捕获):最初,事务积压会延迟源数据库和目标数据库。随着时间的流逝,这些积压工作将被处理,从而实现稳定的迁移流。
此详细说明可确保 AWS DMS 有条不紊地指导数据迁移过程,从而保持数据完整性和一致性。
CloudWatch 事件
AWS CloudWatch EventBridge 提供有关 AWS DMS 事件的通知,例如复制任务启动/删除和复制实例创建/删除。EventBridge 接收这些事件,并根据预定义的规则定向通知。
Lambda 函数
我们使用 AWS Lambda 函数来启动复制任务。在 AWS DMS 中创建事件信令任务时,Lambda 函数由配置的 EventBridge 规则自动触发。
资源限制
在管理 AWS Database Migration Service (DMS) 时,我们遵循默认资源配额,这是软限制。在 AWS 支持票证的帮助下,可以根据需要增加这些限制,以确保最佳性能。
关键的 AWS DMS 资源限制包括:
每个用户帐户的终结点数:1000(默认)
每个复制实例的终结点数:100(默认)
每个用户帐户的任务数:600(默认)
每个复制实例的任务数:200(默认)
每个用户帐户的复制实例数:60(默认)
例如,要将 100 个数据库从本地 MySQL 源迁移到 RDS MySQL,我们使用以下计算:
每个数据库的任务数:1
每个数据库的终结点数:2
每个复制实例的终端节点数:100
每个复制实例的任务总数 = 每个复制实例的终结点数 / 每个数据库的终结点 = 100 / 2 = 50。
这意味着我们每个复制实例最多可以迁移 50 个数据库。使用两个复制实例,我们可以一次性高效地迁移所有 100 个数据库。这种方法举例说明了战略性地使用资源配额进行有效的数据库迁移。
如何使用 Terraform IaC 自动执行数据迁移:概述
Terraform 和 DMS 可自动执行并保护数据迁移,从而简化流程,同时高效管理 AWS 基础设施。
以下是此无缝且安全的迁移过程的分步概述:
步骤 1:获取迁移数据库列表
检索要迁移的数据库的列表。
步骤 2:数据库创建(同构迁移)
创建目标架构或数据库结构,以便在同类数据迁移时为数据转换做好准备。
步骤 3:创建复制子网组
创建复制子网组以确保数据移动的无缝网络通信。
步骤 4:源/目标连接终结点
为每个用于迁移的数据库集配备源和目标连接。
步骤 5:创建复制实例
创建复制实例以处理数据迁移过程。
步骤 6:Lambda 与 Cloud Watch Events 集成
集成 CloudWatch 事件和 Lambda 函数以启动复制任务。
步骤 7:复制任务的创建和分配
创建复制任务并将其分配给复制实例,设置迁移。
步骤 8:迁移任务启动
为每个数据库启动迁移任务。
迁移过程和工作流图
数据迁移自动化的体系结构概述
具有 Terraform 基础设施即代码 (IAC) 的 AWS DMS 可自动执行数据迁移。数据迁移自动化过程从 Jenkins 管道的动态框架开始。该框架使用各种输入参数来自定义和定制迁移过程,提供灵活性和适应性。
下面是体系结构的详细概述:
使用 Terraform IAC 的 AWS DMS 架构
第 1 步:Jenkins 流水线参数
适用于 AWS DMS 的 Jenkins 管道首先定义基本输入参数,例如区域和环境详细信息、Terragrunt 模块详细信息和迁移首选项。
关键输入参数包括:
AWS_REGION:从存储库填充区域列表。
APP_ENVIRONMENT:从存储库填充应用程序环境列表。
TG_MODULE:从存储库填充 Terragrunt 模块文件夹列表。
TG_ACTION:允许用户从计划、验证和应用中选择 Terragrunt 操作。
TG_EXTRA_FLAGS:用户可以传递 Terragrunt 更多标志。
FETCH_DBLIST:确定迁移数据库列表生成类型(AUTOMATIC 和 MANUAL)。
CUSTOM_DBLIST:如果选择FETCH_DBLIST为“手动”,则用于迁移的 SQL Server 自定义数据库列表。
MIGRATION_TYPE:允许用户选择DMS迁移类型(满载、满载和CDC、CDC)。
START_TASKS:允许用户打开或关闭迁移任务执行。
TEAMS:用于生成通知的 MS Teams 频道。
第 2 步:执行阶段
根据输入参数,管道将经历不同的执行阶段:
IAC 的源代码签出:管道首先签出 IAC 的源代码,为以下步骤奠定坚实的基础。
迁移数据库列表:根据所选的迁移类型,管道会自动从源实例提取迁移数据库列表或使用手动列表。
架构或数据库创建: 通过创建数据迁移所需的架构或数据库结构来创建目标实例。
Terraform/Terragrunt 执行:管道执行 Terraform 或 Terragrunt 模块以简化 AWS DMS 迁移过程。
通知:在整个迁移过程中,更新将通过电子邮件或 MS Teams 发送。
第 3 步:自动和手动列表获取
使用 shell 脚本自动从源实例获取迁移数据库列表,并保持FETCH_DBLIST自动。或者,用户可以手动提供用于迁移的选择性列表。
步骤 4:迁移类型
Terraform/Terragrunt 模块根据 MIGRATION_TYPE 中指定的迁移类型启动 CDC、full-load-and-cdc 和 full-load 迁移。
第 5 步:自动化控制
使用 START_TASKS 手动或自动启动迁移任务。
第 6 步:凭据管理
为安全起见,请在执行 DMS Terraform/Terragrunt 模块时从 AWS Secrets Manager 检索数据库凭证。
步骤 7:创建端点
为目标实例和源实例建立端点,实现无缝连接和数据传输。
步骤 8:复制实例
根据数据库计数或配额限制创建复制实例。
步骤 9:CloudWatch 集成
配置 AWS CloudWatch 事件以在创建 AWS DMS 复制任务后触发 Lambda 函数。
步骤 10:复制任务配置
为单个数据库创建复制任务,并将其分配给可用的复制实例,以优化数据传输。
第 11 步:任务自动化
复制任务在就绪状态下自动开始使用 Lambda 函数。
步骤 12:监视迁移
使用 AWS DMS 控制台实时监控数据迁移进度,深入了解迁移过程。
第 13 步:正在进行的更改
迁移后,将正在进行的更改无缝复制到目标实例中,确保数据一致性。
第 14 步:自动验证
根据提供的验证配置,针对源实例和目标实例自动验证迁移的数据,以增强数据完整性。
步骤 15:完成和配置
确保在验证后完成用户迁移和数据库配置。
第 16 步:目标测试和验证
更新应用程序配置以使用目标实例进行测试,以确保功能正常。
步骤 17:直接转换复制
经过全面测试后,从源实例执行直接转换复制,拍摄源实例的最终快照以结束该过程。
AWS DMS with Terraform 的主要特性和优势
采用 Terraform IAC 的 AWS DMS 具有多种优势:成本效益、易用性、最大限度的停机时间和强大的复制。
成本优化
AWS DMS 迁移提供了一种经济高效的模型,因为它根据计算资源和额外的日志存储进行成本计算。
易用性
迁移过程得到简化,无需特定的驱动程序或应用程序安装,并且通常无需对源数据库进行任何更改。一键式资源创建简化了整个迁移过程。
连续复制和最短的停机时间
AWS DMS 可确保持续的源数据库复制,即使在运行期间也是如此,从而实现最短的停机时间和无缝的数据库切换。
持续复制
通过持续的复制任务保持源数据库和目标数据库之间的同步,可确保数据一致性。
多样化的来源/目标支持
AWS DMS 支持跨 SQL、NoSQL 和基于文本的目标从同类迁移(例如 MySQL 到 MySQL)到异构迁移(例如 Oracle 到 Amazon Aurora)。
数据库整合
AWS DMS with Terraform 可以轻松地将多个源数据库整合到单个目标数据库中,这适用于同构和异构迁移。
模式转换和迁移的效率
AWS DMS 最大限度地减少了迁移用户、存储过程、触发器和架构转换等任务中的手动工作,同时根据应用程序功能验证目标数据库。
使用 Terraform IAC 自动预配
利用 Terraform 自动创建和销毁 AWS DMS 复制任务,非常适合管理涉及多个数据库的迁移。
自动化管道集成
与 CI/CD 管道无缝集成,实现高效的迁移管理、监控和进度跟踪。
如何使用 AWS DMS 和 Terraform IAC 的组合来自动执行数据迁移。该博客作为指南,探索这些技术之间的协同作用,并为企业提供优化数字化转型的工具。