如何为 Amazon Aurora MySQL 数据库实例创建只读副本?
上次更新日期:2020 年 12 月 9 日
我有一个 Amazon Aurora MySQL 集群。我想为 Aurora 数据库集群创建区域内或跨区域只读副本。我该如何操作?
简短描述
您可以使用 Amazon Aurora 副本作为故障转移目标。这意味着,如果您的主数据库实例发生故障,Aurora 副本会升级为主实例。创建跨区域只读副本可提高发生罕见的 Amazon RDS 区域故障时的可用性。
Aurora 副本也适用于读取扩展,因为它们完全专供集群卷上的读取操作。主实例管理写入操作。由于集群中的所有数据库实例都共享集群卷,因此复制每个 Aurora 副本的数据所需工作最少。
注意:Aurora 副本不使用二进制日志复制(RDS MySQL 只读副本使用)。因此,主实例写入更新后的延迟通常不到 100 毫秒。这是使用 Amazon Aurora 的优势,因为与基于 MySQL 的复制相比,复制延迟通常较低且可预测。如果您拥有不同的跨区域的读取流量,则跨区域复制功能非常有用。使用本文中的步骤为 Aurora MySQL 数据库集群创建区域内或跨区域只读副本。
注意:这些步骤不适用于 Aurora Serverless 或 Aurora 多主集群。
解决方法
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
使用 Amazon RDS 控制台为 Aurora MySQL 集群创建区域内只读副本
注意:您无法为未加密的 Aurora 数据库集群创建加密的 Aurora 副本。您无法为加密的 Aurora 数据库集群创建未加密的 Aurora 副本。
1. 打开 Amazon RDS 控制台,然后从导航窗格中选择 Databases(数据库)。
2. 选择要向其添加新数据库实例的数据库集群。
3. 在 Actions(操作)部分中,选择 Add reader(添加阅读器)。
4. 在 Add reader(添加阅读器)页面上,自定义 Aurora 副本的选项。
5. 选择 Add reader(添加阅读器)以创建副本。
使用 AWS CLI 为 Aurora MySQL 集群创建区域内只读副本
要使用 AWS CLI 在数据库集群中创建 Aurora 副本,请运行 create-db-instance 命令。使用 --db-cluster-identifier 选项包括数据库集群的名称。您还可以使用可用区参数为 Aurora 副本指定可用区 (AZ)。
此示例命令为 Aurora MySQL 创建只读副本(相同区域且兼容 Aurora MySQL 5.7)。
Linux、macOS 或 Unix:
aws rds create-db-instance --db-instance-identifier sample-instance-us-west-2a \
--db-cluster-identifier sample-cluster --engine aurora-mysql --db-instance-class db.r4.large \
--availability-zone us-west-2a
Windows:
aws rds create-db-instance --db-instance-identifier sample-instance-us-west-2a ^
--db-cluster-identifier sample-cluster --engine aurora-mysql --db-instance-class db.r4.large ^
--availability-zone us-west-2a
注意:如果要为兼容 Aurora MySQL 5.6 的集群创建只读副本,请在此命令中将 --engine parameter 修改为--engine aurora。
为 Aurora MySQL 集群创建跨区域只读副本
在与源数据库集群不同的 AWS 区域中创建只读副本具有一些优势。这可以提高灾难恢复能力,并让您将读取操作扩展到距离用户更近的区域。它还可以使您更轻松地从一个 AWS 区域迁移到另一个 AWS 区域。
注意:在创建跨区域只读副本之前,请在源 Aurora MySQL 数据库集群上启用二进制日志记录。跨区域复制使用 MySQL 二进制复制在跨区域只读副本集群上重放更改。
在数据库集群上启用二进制记录
1. 要在数据库集群上启用二进制日志记录,
2. 更新源数据库集群的 binlog_format 参数。这是默认集群参数组中的群集级别参数。
3. 如果数据库集群使用默认数据库集群参数组,请创建一个新的数据库集群参数组,以修改 binlog_format 设置。
4. 最佳做法是将 binlog_format 设置为 MIXED。如果需要特定的二进制日志格式,也可以将 binlog_format 设置为 ROW 或 STATEMENT。
5. 重新启动 Aurora 数据库集群以使更改生效。
使用 Amazon RDS 控制台创建跨区域集群
1. 打开 Amazon RDS 控制台,然后选择托管源数据库集群的 AWS 区域。
2. 从导航窗格中,选择 Instances(实例)。
3. 选择要为其创建跨区域只读副本的数据库实例的复选框。
4. 对于 Actions(操作),选择Create cross region read replica(创建跨区域只读副本)。
5. 在 Create cross region read replica(创建跨区域只读副本 )页面上,选择跨区域只读副本数据库集群的选项设置。
使用 AWS CLI 创建跨区域集群
使用 AWS CLI 创建跨区域集群是一个两步骤过程。首先,使用 create-db-cluster 调用在目标区域中创建集群本身。然后,使用 create-db-instance调用来创建读取器实例。
此示例使用 Linux、macOS 或 Unix 创建跨区域副本,并且兼容 Aurora MySQL 5.6。
1. 通过运行与以下内容类似的命令来创建集群:
aws rds create-db-cluster \
--db-cluster-identifier sample-replica-cluster \
--engine aurora \
--replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-master-cluster
2. 验证集群是否可用:
aws rds describe-db-clusters --db-cluster-identifier sample-replica-cluster
3. 创建读取器:
aws rds create-db-instance \
--db-cluster-identifier sample-replica-cluster \
--db-instance-class db.r3.large \
--db-instance-identifier sample-replica-instance \
--engine aurora
要在 Windows 上使用 CLI 创建相同的内容,请使用相同步骤,但使用 ^符号而不是 \ 作为行分隔符。