使用 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。您学习了如何将读取能力扩展到其他区域以享受更低延迟的好处,而且您已将故障转移到次区域。
建议的后续步骤
如果您想了解有关 Aurora Global Database 的更多信息,请参阅我们的文档使用 Amazon Aurora Global Database。