本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Terraform 为数据库迁移设置 CI/CD 管道
由 Rahul Sharad Gaikwad 博士 ()、Aarti Rajput (AWS)、Ashish Bhatt ()、Aniket Dekate (AWS)、Naveen Suthar (AWS)、Nadeem Rahaman ()、Ruchika Modi (AWS) 和 Tamilselvan P (AWS) 创作 AWS AWS AWS
环境:PoC 或试点 | 技术:数据库 DevOps;迁移 | 工作负载:Microsoft |
AWS服务:AWS CodePipeline; AWSDMS; Amazon RDS |
Summary
这种模式旨在建立持续集成和持续部署 (CI/CD) 管道,以便以可靠和自动化的方式管理数据库迁移。它涵盖了使用 Terraform(一种基础设施即代码 (IaC) 工具)配置必要的基础架构、迁移数据和自定义架构更改的过程。
具体而言,该模式设置了一个 CI/CD 管道,用于将本地 Microsoft SQL Server 数据库迁移到亚马逊关系数据库服务 (AmazonRDS)。 AWS您也可以使用此模式将位于虚拟机 (VM) 或其他云环境中的SQL服务器数据库迁移到 Amazon RDS。
这种模式解决了与数据库管理和部署相关的以下难题:
手动部署数据库既耗时又容易出错,而且各环境之间缺乏一致性。
协调基础架构配置、数据迁移和架构更改可能既复杂又难以管理。
确保数据完整性并最大限度地减少数据库更新期间的停机时间对于生产系统至关重要。
这种模式具有以下优点:
通过实施用于数据库迁移的 CI/CD 管道,简化更新和部署数据库更改的过程。这降低了出错的风险,确保了跨环境的一致性,并最大限度地减少了停机时间。
有助于提高可靠性、效率和协作。缩短上市时间,减少数据库更新期间的停机时间。
帮助您采用现代数据库管理 DevOps 实践,从而提高软件交付流程的敏捷性、可靠性和效率。
先决条件和限制
先决条件
活跃的 AWS 账户
Terraform P AWS rovider 版本 3.0.0 或更高版本 HashiCorp (请参阅此提供程序的GitHub 存储库
) 最低权限 AWS Identity and Access Management (IAM) 策略(请参阅博客文章《编写最低权限IAM策略的技巧
》)
架构
此模式实现了以下架构,该架构为数据库迁移过程提供了完整的基础架构。
在此架构中:
源数据库是位于本地、虚拟机 (VM) 上或由其他云提供商托管的SQL服务器数据库。该图假设源数据库位于本地数据中心。
本地数据中心和 AWS 通过VPN或 AWS Direct Connect 连接进行连接。这提供了源数据库和 AWS 基础架构之间的安全通信。
目标数据库是一个 Amazon RDS 数据库,它 AWS 借助数据库配置管道托管在虚拟私有云 (VPC) 中。
AWS Database Migration Service (AWS DMS) 将您的本地数据库复制到。 AWS它用于配置源数据库到目标数据库的复制。
下图显示了使用不同级别的数据库迁移过程设置的基础架构,其中包括配置、 AWS DMS 设置和验证。
在此过程中:
验证管道会验证所有检查。当所有必要的验证完成后,集成管道将进入下一步。
数据库配置管道由各个 AWS CodeBuild 阶段组成,这些阶段对为数据库提供的 Terraform 代码执行 Terraform 操作。完成这些步骤后,它将在目标 AWS 账户中部署资源。
该 AWS DMS 管道由多个 CodeBuild 阶段组成,这些阶段执行测试,然后使用 IaC 配置用于执行迁移 AWS DMS 的基础架构。
工具
AWS 服务 和工具
AWS CodeBuild是一项完全托管的持续集成服务,用于编译源代码、运行测试和生成 ready-to-deploy软件包。
AWS CodePipeline是一项完全托管的持续交付服务,可帮助您实现发布管道的自动化,从而实现快速可靠的应用程序和基础架构更新。
Amazon Relational Database Service (AmazonRDS) 可帮助您在中设置、操作和扩展关系数据库 AWS Cloud。
Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,可提供出色的可扩展性、数据可用性、安全性和性能。
AWS Database Migration Service (AWS DMS) 可帮助您将数据存储迁移到云和本地设置的组合中, AWS Cloud 或者迁移到云端和本地设置的组合之间。
其他服务
Terraform
是一款 IaC 工具 HashiCorp ,可帮助您创建和管理云和本地资源。
代码存储库
此模式的代码可在使用 Terraform 示例 GitHub 存储库的数据库迁移 DevOps 框架
最佳实践
对数据库迁移实施自动测试,以验证架构更改的正确性和数据完整性。这包括单元测试、集成测试和 end-to-end测试。
为您的数据库实施强大的备份和还原策略,尤其是在迁移之前。这样可以确保数据完整性,并在出现故障时提供备用选项。
实施强大的回滚策略,以便在迁移过程中出现故障或问题时还原数据库更改。这可能涉及回滚到以前的数据库状态或还原单个迁移脚本。
设置监控和记录机制以跟踪数据库迁移的进度和状态。这可以帮助您快速识别和解决问题。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
在本地工作站上设置和配置 Git。 | 按照 Git 文档中的说明在本地工作站上安装和配置 Git | DevOps 工程师 |
创建项目文件夹并添加 GitHub 存储库中的文件。 |
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
更新必需的参数。 | 该 在本地工作站的 | DevOps 工程师 |
初始化 Terraform 配置。 | 在该
| DevOps 工程师 |
预览 Terraform 计划。 | 要创建 Terraform 计划,请输入以下命令:
Terraform 会评估配置文件,以确定已声明资源的目标状态。然后,其将比较目标状态与当前状态,并创建计划。 | DevOps 工程师 |
验证计划。 | 查看计划并确认它已在您的目标 AWS 账户中配置了所需的架构。 | DevOps 工程师 |
部署解决方案。 |
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
验证部署。 | 验证 1. 登录 AWS Management Console,然后打开AWS CodePipeline 控制台 2. 在导航窗格中,选择管道。 3. 选择 4. 验证管道执行是否已成功完成。 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
清理基础架构。 |
| DevOps 工程师 |
相关资源
AWS 文档
Terraform 文档
Terraform installation
(Terraform 安装)