如何为 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 设置为 ROWSTATEMENT

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 创建相同的内容,请使用相同步骤,但使用 ^ 符号而不是 \ 作为行分隔符。</p


这篇文章对您有帮助吗?


您是否需要账单或技术支持?