使用 Amazon Aurora Global Database 进行

快速的跨区域灾难恢复和低延迟全球读取

在本教程中,您将学习如何在不影响性能的情况下,创建跨多个 AWS 区域并复制数据的 Amazon Aurora Global Database 部署。Aurora Global Database 提供在发生区域级故障时进行灾难恢复的能力,并支持低延迟的全球读取。

Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容的关系数据库,既具有传统企业数据库的性能和可用性,又具有开源数据库的简单性和成本效益。

Aurora Global Database 由一个主 AWS 区域(存储数据的原始位置)和多个只读的次 AWS 区域(存储复制数据的位置)组成。您向主数据库写入数据,但您可以从任何区域读取数据,并能享受到低延迟的好处。

本教程将使用兼容 MySQL 的 Amazon Aurora。本教程不支持免费套餐,如果您按照教程中的步骤操作并在教程结束时终止相应资源,所需费用将不超过 1 USD。

先决条件

Amazon Aurora 数据库集群由一个或多个数据库实例以及一个集群卷(负责管理这些数据库实例的数据)组成。Aurora 集群卷是跨多个可用区的虚拟数据库存储卷,其中每个可用区都拥有数据库集群数据的副本。Aurora 数据库集群由两种类型的数据库实例组成:主数据库实例(支持读写操作),以及 Aurora 副本(连接到与主数据库实例相同的存储卷,仅支持读取操作)。每个 Aurora 数据库集群都可以拥有多达 15 个位于不同可用区的 Aurora 副本。如果主数据库实例变得不可用,Aurora 会自动故障转移到 Aurora 副本。

在本教程中,您将创建一个 Aurora Global Database,它具有一个主集群和一个次集群,而且两个集群位于不同的区域中。使用哪些区域由您来决定。建议您在将使用的每个区域中都运行一个应用程序。例如,如果您的 Aurora Global Database 将具有一个位于 us-east-1 的主集群和一个位于 eu-west-3 的次集群,则应在 us-east-1 和 eu-west-3 各自运行一个实例。

此外,如果想节省时间,可以为这些区域中的每一个创建安全组,以允许从实例传入的连接。例如,可以创建一个安全组,使其包含 MYSQL/Aurora 类型的入站规则,以允许在端口 3306 上接收来自实例安全组的 TCP 连接。

最后,为了测试 Aurora Global Database(请参阅第 8 步),您需要有 MySQL 客户端。如果应用程序实例运行的是 Amazon Linux,则安装 MySQL 客户端可以像运行 sudo yum install mysql 一样简单,但要使用的确切命令取决于您运行的 OS。如果运行的是 Windows,则可以改为下载 MySQL workbench。

关于本教程
时间 10 分钟                                           
费用 低于 1 USD
使用案例 数据库
产品 Amazon Aurora、Amazon RDS
受众 数据库管理员、开发人员
级别 中级
上次更新日期 2019 年 6 月 3 日

第 1 步:访问 Amazon RDS 控制台

1.1 – 打开浏览器并导航到 Amazon RDS 控制台。如果您已有 AWS 账户,请登录控制台。如果还没有,请新建一个 AWS 账户以开始学习。

1.2 – 在右上角,选择要在其中启动主 Aurora 数据库集群的区域。对于本教程,我们将使用 us-east-1 作为主区域,并使用 eu-west-1 作为次区域。

已拥有账户? 登录您的账户

1.3 – 在“Amazon Aurora”窗口中单击“创建数据库”。

1.4 – 向下滚动,在“Aurora Global Database”窗口中单击“立即试用”。如果没有看到“立即试用”选项,请单击此处

第 2 步:引擎选项

2.1 – 在“引擎类型”中,选择“Amazon Aurora”。

2.2 – 在“版次”中,选择“兼容 MySQL 的 Amazon Aurora”。

2.3 – 在“版本”中,选择最新的 MySQL 版本。

2.4 – 在“数据库位置”中,选择“全球”。

2.5 – 选择“生产”模板。

第 3 步:全球数据库设置

3.1 – 对于“全球数据库标识符”,键入“global-database-1”。

第 4 步:主区域设置

4.1 – 对于“数据库实例大小”,选择大型实例(以 .large 结尾的选项)。

4.2 – 对于“可用性和持久性”,选择“不创建 Aurora 副本”。

请注意,建议为生产环境创建 Aurora 副本,原因是该副本可让您扩展读取能力,并能在与主数据库相同的区域内自动进行故障转移。在本教程中,为了简化练习,我们不会添加 Aurora 副本。

第 5 步:连接

5.1 – 选择要在其中创建数据库的 VPC。

请注意,一经创建,数据库便无法迁移到其他 VPC。

5.2 – 单击“其他连接配置”。

5.3 – 对于“子网组”,选择默认值。

5.4 – 在“公开访问”中,选择“否”。

这意味着您必须从同一个 VPC 中的 EC2 实例连接到数据库。

5.5 – 在“VPC 安全组”中,选择“新建”。如果您恰好有一个安全组允许在端口 3306 上传入 TCP 连接,也可以选择该安全组。

5.6 – 在“新 VPC 安全组名称”中,键入“global-database”。

5.7 – 保留“数据库端口”的默认值。

第 6 步:其他配置

6.1 – 保留“数据库选项”、“备份”、“监控”、“日志导出”、“维护”和“删除保护”的默认值。

6.2 – 单击“创建数据库”​。

在创建实例时,您将看到一个说明如何获取凭证的横幅。此时建议您将凭证保存到某个位置,因为之后您将无法再次查看该密码。

6.3 – 单击“查看凭证详细信息”。

6.4 – 保存用户名和密码。

第 7 步:添加次区域

7.1 – 选择“global-database-1”。

7.2 – 单击“操作”>“添加区域”。

7.3 – 在下拉列表中选择一个区域。

7.4 – 重复第 4.1 步到第 5.7 步。

7.5 – 单击“添加区域”。

在数据库可用后,继续执行第 8 步。

第 8 步:测试 Aurora Global Database

8.1 – 单击主数据库。

8.2 – 复制写入器终端节点。

打开两个终端窗口,分别登录主区域和次区域中的实例,然后使用 mysql 命令行客户端连接到数据库。

现在,您可以创建数据库、创建表和写入一些记录。您写入到主集群的所有数据都将复制到次集群中。

8.3 – 连接到主数据库:

$ mysql -h endpoint -P 3306 -u admin -p

提示输入密码时,输入您在第 6.6 步中保存的密码。

8.4 – 创建数据库并写入一些数据。

mysql> CREATE database tutorial;
Query OK, 1 row affected (0.01 sec)

现在,您可以使用 tutorial 数据库、创建表和添加一些记录。

8.5 – 转至次区域。

8.6 – 单击次数据库。

8.7 – 复制读取器终端节点。

8.8 – 连接到次数据库:

$ mysql -h endpoint -P 3306 -u admin -p

提示输入密码时,输入您在第 6.6 步中保存的密码。

8.9 – 读取一些数据:

mysql> USE tutorial;
Database changed

现在,您可以验证该数据库是否已复制到次数据库。如果创建了表,则可以写入到主集群,并从次集群读取数据。

第 9 步:故障转移到次区域

虽然默认的 Aurora 集群提供区域内故障转移功能,但 Aurora Global Database 允许您将故障转移到另一个区域中的次集群。这意味着即使整个区域不可用,您的数据库仍继续可用。

为 Aurora Global Database 执行故障转移涉及到从原始全球数据库中删除次集群(从而将其重新变回具有完整读写功能的区域集群),然后将其用作新 Aurora Global Database 中的主集群。

您可以按照以下说明手动执行故障转移。

9.1 – 停止写入到主数据库。

9.2 – 选择次集群。

9.3 – 单击“操作”>“从全球数据库中删除”。

9.4 – 单击“删除并提升”进行确认。

9.5 – 将应用程序配置为写入到新提升的集群。

9.6 – 仍然在次区域中,选择“区域集群”。

9.7 – 单击“操作”>“创建全球数据库”。

9.8 – 在下拉列表中选择一个区域。

9.9 – 重复第 4.1 步到第 5.7 步。

第 10 步:清理

为了完成本教程,您将要删除 Aurora Global Database。您可以将其保留,但请注意您将要承担费用。

要删除 Aurora Global Database,请转到 RDS 控制面板,然后按照以下说明执行操作:

10.1 – 在左窗格中,选择“数据库”。

此操作将列出您的所有 Aurora 数据库集群。

10.2 – 选择一个全球数据库实例。

10.3 – 单击“操作”>“删除”。

10.4 – 系统将询问您是否要创建最终备份。通常情况下建议您创建快照,但在本教程中没有必要这样做。选择“否”,然后单击“删除”。

10.5 – 选择一个全球数据库集群。

10.6 – 单击“操作”>“从全球数据库中删除”。

10.7 – 单击“从全球数据库中删除”进行确认。

10.8 – 选择“区域数据库集群”。

10.9 – 单击“操作”>“删除”。

10.10 – 系统将询问您是否要创建最终快照。通常情况下建议您创建快照,但在本教程中没有必要这样做。选择“否”,然后单击“删除数据库集群”。

10.11 – 切换到次区域,然后执行第 10.1 步到第 10.9 步。

10.12 – 选择“全球数据库”。

10.13 – 单击“操作”>“删除”。

10.14 – 键入“delete me”,然后单击“删除”进行确认。

集群的状态将更改为“正在删除”。

恭喜

您已创建了跨区域进行复制的 Aurora Global Database。您学习了如何将读取能力扩展到其他区域以享受更低延迟的好处,而且您已将故障转移到次区域。

本教程对您是否有帮助?