在本文中,我们将介绍 AWS Database Acceleration Toolkit (DAT),这是一款开源数据库加速器。DAT 是一款基础设施即代码解决方案,它使用Terraform来简化和自动化Amazon Aurora的初始设置、预置和持续维护活动。DAT 可帮助您缩短产品上市时间,从而提高客户满意度并提升成本效率。我们将引导您了解 DAT 的高级架构、主要功能以及如何使用它来创建新的 Aurora 集群。
无论您是专注于 DevOps 的组织、管理多租户数据库的软件即服务 (SaaS) 提供商,还是正在从商业数据库迁移到 Aurora 的企业,DAT 都能为您提供精简的数据库管理方法。事实上,DAT 的构建基于我们作为解决方案架构师与一家大型 SaaS 提供商合作的经验,该提供商取得了显著的成果。我们的一位 SaaS 客户将 100 多个客户数据库的迁移时间从 12 个月缩短至仅 4 周,在六个月内实现了零中断,数据库团队的生产力提高了 60% 至 70%,基础设施成本降低了 42%。虽然具体结果可能有所不同,但这些成果充分展现了 DAT 转变数据库运营模式并显著提升效率和可靠性的潜力。
解决方案概述
下图显示了 DAT 的高级架构。

- DAT 使用 Terraform实现资源的自动化配置和安全保障。源代码托管在 Git 存储库中 ,方便协作和版本控制。
- 该工具包提供了在 AWS 中配置Aurora 集群的不同选项:
- 使用 Terraform 命令行界面 (CLI)
- 使用 Jenkins 管道。
这种灵活性使您可以选择最适合您现有工作流程和工具的方法。
- DAT 包含专门的 Terraform 模块,旨在帮助您开始使用 Aurora:
- Aurora 集群:此模块方便您在现有Amazon Virtual Private Cloud (Amazon VPC)环境中或从最新的数据库快照创建新的 Aurora 集群。该模块允许自定义集群配置,从而减少手动工作量和时间。Aurora 支持无服务器和预配置两种集群创建模式,您可以根据应用程序需求灵活选择合适的模式。
- 适用于 Aurora 集群的 Amazon RDS 代理:Amazon RDS 代理是一项数据库代理功能,它通过池化数据库连接、降低连接开销以及通过凭证管理和故障转移支持增强安全性来提升应用程序的性能和可靠性。借助 Amazon RDS 代理模块,您可以为现有 Aurora 集群生成代理。此模块可增强已运行 Aurora 数据库的连接性和可用性。
- Aurora GlobalDB:此模块方便您跨主 AWS 区域和辅助 AWS 区域创建 Aurora Global Database 集群。您可以使用此模块在多个区域预置新的 Aurora 集群,以支持快速灾难恢复和全局分布式读取访问。
- Aurora 监控:此模块为 Aurora 数据库设置并配置Amazon CloudWatch监控仪表板。这些仪表板提供关键性能指标和洞察,可有效监控数据库的运行状况、性能和使用情况。
用例示例
Git 存储库包含 用例示例,其中包含在 Aurora PostgreSQL 兼容版和 Aurora MySQL 兼容版引擎上运行这些模块的分步说明。这些示例可作为实用指南,提供执行与 Aurora 数据库相关的各种操作的详细步骤和自动化脚本。
Aurora MySQL 兼容示例
- aurora-mysql-cluster-existing-vpc
- aurora-mysql-cluster-global-db
- aurora-mysql-cluster-latest-snapshot
- aurora-mysql-dbproxy
- aurora-mysql-monitoring
Aurora PostgreSQL 兼容示例
- aurora-postgres-cluster-existing-vpc
- aurora-postgres-cluster-global-db
- aurora-postgres-cluster-latest-snapshot
- aurora-postgres-dbproxy
- aurora-postgres-monitoring
在查看先决条件和部署选项后,我们将引导您完成使用 Aurora PostgreSQL 集群和 Terraform 的示例部署。
先决条件
首先,确保您已经在本地安装了以下工具。
- 您需要拥有 AWS 账户的访问权限。如果您没有 AWS 账户,可以创建一个新的 AWS 账户。
- 安装并 配置AWS 命令行界面 (AWS CLI)。
- 安装 Terraform。
- 安装 git。
部署选项
您可以使用以下三个选项中的任意一个来部署 AWS DAT。
- 使用 Terraform 进行部署:使用 Terraform CLI 进行 DAT 部署是一种简单的方法,允许直接与 Terraform 命令交互,提供灵活性和可定制性。
- 使用新的 Jenkins 实例进行部署:如果您更喜欢集成自动化方法,可以使用新的 Jenkins 实例部署 DAT。此选项涉及预配新的 Jenkins 服务器、对其进行配置以及设置用于部署 DAT 示例的流水线。通过将 DAT 部署集成到 Jenkins,您可以利用 Jenkins 自动化功能的强大功能并简化工作流程,以实现一致的部署。
- 使用现有 Jenkins 实例进行部署:如果您已设置 Jenkins,则可以将 DAT 与现有的 Jenkins 环境集成。此选项允许您扩展现有的自动化流程,以包含 DAT 示例的部署,从而最大限度地减少对现有工作流程的干扰。
使用 Terraform配置Aurora PostgreSQL集群
以下步骤将指导您使用Terraform CLI预置一个包含一个写入器实例和一个读取器实例的新 Aurora PostgreSQL 集群。不过,您可以自定义读取器和写入器实例。 在设置数据库集群之前,请参阅数据库集群先决条件。
- 从DAT存储库克隆源代码,其中包含部署解决方案所需的 DAT 使用示例和 terraform 模块。
git clone https://github.com/aws-samples/aws-database-acceleration-toolkit.git
- 导航到 Aurora PostgreSQL 文件夹。
cd aws-database-acceleration-toolkit/examples/aurora-postgres-cluster-existing-vpc
- 查看调用的 Terraform 变量定义文件 terraform.tfvars ,并根据用例的需要配置变量的值。更新后的 terraform.tfvars内容如下所示:
#(mandatory) AWS Region where your resources will be located
# For example: "us-west-2"
region = "<REGION>"
# VPC Id where your resources will be located.
# For example: "vpc-11112222333344445"
vpc_id = "<VPC_ID>"
# Database Engine for your Aurora mysql Cluster.
engine = "aurora-postgresql"
# Database engine version (optional). If not specified, the default version for the selected engine will be used.
# For example: "15.3"
engine_version = "<ENGINE_VERSION>"
# Database engine mode. Valid value: provisioned
# Refer AWS documentation for supported regions and engine versions for engine mode
engine_mode = "provisioned"
# DB Instance class.
# Refer AWS documentation for supported DB instance class for DB engine.
# For example: "db.r6g.large"
instance_class ="<INSTANCE_CLASS>"
# Specify number of DB instances to be created in the cluster.
# Optionally, you can pass the configuration parameters and values (for e.g., instance_class="db.r6g.xlarge") for each instance within the curly braces.
# If no parameters are specified, all the DB instances will be created with the same values.
instances = {
instance1 = {}
instance2 = {}
}
# Database cluster name
# For example: "aurora-pg-poc"
name = "<CLUSTER_NAME>"
# Database environment
# For example: "dev"
environment = "<ENVIRONMENT>"
# Tagging : Team/Group Name
# For example: "data-engineering"
groupname = "<GROUPNAME>"
# Tagging : Project or Application Name
# For example: "myapp"
project = "<PROJECTNAME>"
# Skip final snapshot during cluster deletion (optional). If set to 'true' (default), no final snapshot will be taken before deleting the cluster.
skip_final_snapshot= "true"
- 使用命令初始化工作目录terraform init。
terraform init
- 执行该terraform plan命令可创建执行计划,该计划可让您预览 Terraform 将对您的基础架构进行的建议更改。plan 命令不会执行建议的更改。
terraform plan -var-file terraform.tfvars
- 最后,执行terraform apply命令以执行 Terraform 计划中建议的操作。该terraform apply命令最多可能需要 15 分钟才能完成。部署成功后,您可以使用 AWS 管理控制台查看新的 Aurora 集群。
terraform apply -var-file terraform.tfvars
其他方面
DAT 的功能通过提供强大的加密实践、安全的凭证管理、灵活的身份验证以及全面的日志记录和监控功能来增强数据库操作的安全态势。
- DAT 允许您使用自己的 客户管理密钥 (CMK)。使用 CMK 可以让您根据自己的策略轮换密钥。如果用户未输入 CMK,DAT 将默认使用AWS 托管密钥。
- DAT 与AWS Secrets Manager集成,用于管理数据库集群的主用户密码。这可以实现对敏感数据库凭证的集中式安全管理。
- DAT 允许您选择首选的身份验证选项。如果未选择任何特定的身份验证选项,DAT 将默认采用密码身份验证。
- DAT 提供增强的数据库活动监控和可视化功能,这对于性能跟踪、故障排除和安全监控至关重要。DAT 将 Aurora PostgreSQL 数据库集群的 PostgreSQL 日志中的事件发布到 CloudWatch。您可以根据 CloudWatch 日志中可用的日志数据创建如下图所示的 CloudWatch 控制面板。

清理
要清理您的环境,请运行以下命令销毁使用 Terraform 创建的 Aurora 集群:
terraform destroy -var-file terraform.tfvars
结论
在本文中,我们介绍了数据库加速工具包 (DAT),它可以帮助您自动化数据库预置、高效管理 Aurora 数据库,并确保数据库基础架构的弹性和可扩展性。借助 DAT,您可以减少人工干预,从而缩短产品上市时间并优化成本效率。如需深入了解 DAT 并尝试实际示例,请访问数据库加速工具包 (DAT) Wiki。




