如何为 Amazon Aurora MySQL 数据库实例创建只读副本?

3 分钟阅读
0

我有一个 Amazon Aurora MySQL 集群。我想为 Aurora 数据库集群创建区域内或跨区域只读副本或者添加区域。我该如何操作?

简短描述

Aurora 副本增加了 Aurora MySQL 数据库集群内的计算容量。这些副本有助于在区域内分配读取工作负载(读取扩展),还可以作为失效转移目标。这意味着,如果您的主数据库实例发生故障,Aurora 副本会升级为主实例。

跨区域只读副本使用 MySQL 二进制日志记录将您的数据复制到另一个区域中的集群。您可以将读取操作扩展到离用户更近的次要区域。这有助于提高灾难恢复能力。它还可以让您更轻松地从一个 AWS 区域迁移到另一个 AWS 区域。

Amazon Aurora 全球数据库可以跨越多个 AWS 区域。这些数据库允许低延迟的全球读取,并支持从可能影响整个 AWS 区域的罕见中断中恢复过来。Aurora 使用自己的复制协议和专用基础设施将数据复制到次要 AWS 区域,从而达到通常小于一秒的延迟。

使用以下步骤创建区域内或跨区域只读副本,或向 Aurora MySQL 数据库集群添加新区域。

除了 Aurora 管理的二进制日志记录外,您还可以设置和管理自己的二进制日志记录复制环境。在这种环境中,Aurora 可以是来源也可以是目标。

**注意:**这些步骤不适用于 Aurora Serverless 或 Aurora 多主集群。

解决方法

**注意:**如果您在运行 AWS Command Line Interface(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

为 Aurora MySQL 集群创建区域内只读副本

使用 Amazon RDS 控制台

1.    打开 Amazon RDS 控制台**,**然后从导航窗格中选择 Databases(数据库)。

2.    选择要向其添加新数据库实例的数据库集群。

3.    在 Actions(操作)部分中,选择 Add reader(添加阅读器)。

4.    在 Add reader(添加阅读器)页面上,自定义 Aurora 副本的选项。

5.    选择 Add reader(添加阅读器)以创建副本。

使用 AWS CLI

要使用 AWS CLI 在数据库集群中创建 Aurora 副本,请运行 create-db-instance 命令。使用 --db-cluster-identifier 选项包括数据库集群的名称。您还可以使用可用区参数为 Aurora 副本指定可用区(AZ)。

此示例命令为 Aurora MySQL 创建只读副本(相同区域且兼容 Aurora MySQL 5.7 和 Aurora MySQL 8.0 )。

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.r6g.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.r6g.large ^
    --availability-zone us-west-2a

注意:如果要为兼容 Aurora MySQL 5.6 的集群创建只读副本,请在此命令中将 --engine parameter 修改为**--engine aurora**。

为 Aurora MySQL 集群创建跨区域只读副本

在创建跨区域只读副本之前,您必须为源 Aurora MySQL 数据库集群开启二进制日志记录。跨区域复制使用 MySQL 二进制复制在跨区域只读副本集群上重放更改。然后,使用 Amazon RDS 控制台或 AWS CLI 创建跨区域集群。 

注意:您无法为未加密的 Aurora 数据库集群创建加密的 Aurora 副本。您无法为加密的 Aurora 数据库集群创建未加密的 Aurora 副本。

为您的数据库集群开启二进制日志记录

1.    更新源数据库集群的 binlog_format 参数。这是默认集群参数组中的集群级别参数。

2.    如果数据库集群使用默认数据库集群参数组,请创建一个新的数据库集群参数组,以修改 binlog_format 设置。最佳做法是将 binlog_format 设置为 MIXED。如果需要特定的二进制日志格式,也可以将 binlog_format 设置为 ROWSTATEMENT

3.    重新启动 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.7 和 Aurora MySQL 8.0。

1.    通过运行与以下内容类似的命令来创建集群:

aws rds create-db-cluster \
  --db-cluster-identifier sample-replica-cluster \
  --engine aurora-mysql \
  --replication-source-identifier arn:aws:rds:us-west-2:123456789012:cluster:sample-source-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.r6g.large \
  --db-instance-identifier sample-replica-instance \
  --engine aurora-mysql

要在 Windows 上使用 CLI 创建相同的内容,请使用相同步骤,但使用 ^ 符号而不是 ** 作为行分隔符。

向 Aurora 预置集群添加 AWS 区域以创建 Aurora 全球数据库

使用 Amazon RDS 控制台

1.打开 Amazon RDS console(Amazon RDS 控制台)。

2.在导航窗格中,选择 Databases(数据库)。

  1. 选择需要次要 Aurora 数据库集群的 Aurora 全球数据库。确保主 Aurora 数据库集群处于 Available(可用)状态。

4.在 Actions(操作)中,选择 Add region(添加区域)。

5.选择要添加的 AWS 区域。 

**注意:**您不能为同一 Aurora 全球数据库选择已经有次要 Aurora 数据库集群的 AWS 区域。此外,您不能选择与主 Aurora 数据库集群的区域相同的 AWS 区域。 

6.填写新 AWS 区域中次要 Aurora 集群的其余字段。然后,选择 Add rule(添加规则)。 

使用 AWS CLI

在 AWS CLI 上运行以下脚本。

注意:如果您使用的是 Windows,请将 \ 行分隔符替换为 ^ 符号。

aws rds --region us-east-2 \
  create-db-cluster \
    --db-cluster-identifier secondary_cluster_id \
    --global-cluster-identifier global_database_id \
    --engine aurora-mysql \
    --engine-version version

aws rds --region us-east-2 \
  create-db-instance \
    --db-instance-class db.r6g.large \
    --db-cluster-identifier secondary_cluster_id \
    --db-instance-identifier db_instance_id \
    --engine aurora-mysql

相关信息

向数据库集群添加 Aurora 副本

跨 AWS 区域复制 Amazon Aurora MySQL 数据库集群

AWS 官方
AWS 官方已更新 2 年前