Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

您可以在与源数据库群集不同的 AWS 区域中创建 Amazon Aurora 数据库群集作为只读副本。采用此方法可增强灾难恢复能力,允许您将读取操作扩展到更靠近用户的区域,并使从一个区域迁移到另一个区域变得更轻松。

您可以创建加密和不加密数据库群集的只读副本。如果源数据库群集加密,则只读副本必须进行加密。

当您在另一个区域创建 Aurora 数据库群集只读副本时,您应了解:

  • Aurora 在源数据库群集和只读副本之间设置了一个安全通信通道。Aurora 会建立启用安全通道所需的任何 AWS 安全配置 (如添加安全组条目)。

  • 在跨区域方案中,由于各区域之间的网络通道更长,因此源数据群集和只读副本之间的滞后时间更长。

  • 跨区域复制时传输的数据可产生 Amazon RDS 数据传输费用。以下跨区域复制操作会针对传输到源区域以外的数据收取费用:

    • 在创建只读副本时,Amazon RDS 将拍摄源群集的快照,并将快照传输到只读副本区域。

    • 对于源数据库中做出的每个数据修改,Amazon RDS 都会将数据从源区域传输到只读副本区域。

对于每个源数据库群集,您只能拥有一个跨区域只读副本数据库群集。源数据库群集和跨区域只读副本数据库群集可以拥有最多 15 个 Aurora 副本与数据库群集的主实例。可利用此功能扩展源区域和复制目标区域的读取操作。

在您开始之前

在创建作为跨区域只读副本的 Aurora 数据库群集之前,必须先对源 Aurora 数据库群集启用二进制日志记录。Amazon Aurora 跨区域复制使用 MySQL 二进制复制来重放对跨区域只读副本数据库群集的更改。

要对 Aurora 数据库群集启用二进制日志记录,请更新源数据库群集的 binlog_format 参数。binlog_format 参数在 default.aurora5.6 群集参数组中,其默认值为 OFF。如果数据库群集使用默认的数据库群集参数组,则需要创建一个新的数据库群集参数组来修改 binlog_format 设置。建议您将 binlog_format 设置为 MIXED。不过,您也可以将 binlog_format 设置为 ROWSTATEMENT (如果您需要特定的二进制日志格式)。重启您的 Aurora 数据库群集以使更改生效。

有关更多信息,请参阅 数据库群集和数据库实例参数使用数据库参数组

创建作为跨区域只读副本的 Amazon Aurora 数据库群集

您可以使用 Amazon RDS 管理控制台、AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 创建作为跨区域只读副本的 Aurora 数据库群集。您可以从加密和未加密的数据库群集创建跨区域只读副本。

在使用 AWS 控制台创建 Aurora 的跨区域只读副本时,Amazon RDS 先在目标 AWS 区域中创建一个数据库群集,然后为该数据库群集创建一个数据库实例作为主实例。

使用 AWS CLI 或 RDS API 创建跨区域只读副本时,您需要首先在目标 AWS 区域创建数据库群集,然后等待它变为活动状态。一旦处于活动状态,您就可以为该数据库群集创建一个数据库实例作为主实例。

当只读副本数据库群集的主实例可用时,复制开始。

执行以下步骤从 Aurora 数据库群集创建跨区域只读副本。这些步骤可以从加密和未加密的数据库群集创建只读副本。

使用 Amazon RDS 管理平台从数据库群集创建跨区域 Aurora 只读副本

  1. https://console.amazonaws.cn/rds 打开 Amazon Aurora 控制台。

  2. 在 AWS 管理控制台的右上角,选择承载源数据库群集的 AWS 区域。

  3. 在导航窗格中,选择 Instances

  4. 选中要为其创建跨区域只读副本的数据库群集的复选框。选择 Instance Actions,然后选择 Create Cross Region Read Replica

     实例操作:创建跨区域只读副本
  5. Cross Region Read Replica 面板中,选择跨区域只读副本数据库群集的选项设置,如下表中所述。

    选项 描述

    数据库实例类

    选择定义数据库群集中主实例的处理和内存要求的数据库实例类。有关数据库实例类选项的更多信息,请参阅数据库实例类

    Multi-AZ Deployment

    选择 Create Replica in Different Zone 可在目标区域的另一个可用区中创建新数据库群集的备用副本以支持故障转移。有关多可用区的详细信息,请参阅区域和可用区

    只读副本源

    选择要为其创建跨区域只读副本的源数据库群集。

    DB Instance Identifier

    键入跨区域只读副本数据库群集中主实例的名称。此标识符在新数据库群集主实例的终端节点地址中使用。

    数据库实例标识符具有以下限制:

    • 它必须包含 1 到 63 个字母数字字符或连字符。

    • 它的第一个字符必须是字母。

    • 它不能以连字符结束或包含两个连续连字符。

    • 它对于每个区域每个 AWS 账户的所有数据库实例必须是唯一的。

    由于跨区域只读副本数据库群集是从源数据库群集的快照创建的,因此,只读副本的主用户名和主密码与源数据库群集的主用户名和主密码相同。

    DB Cluster Identifier

    键入跨区域只读副本数据库群集的名称,它对于副本的目标 AWS 区域中的账户是唯一的。此标识符将在数据库群集的群集终端节点地址中使用。有关群集终端节点的信息,请参阅 Aurora 终端节点

    数据库群集标识符具有以下限制:

    • 它必须包含 1 到 63 个字母数字字符或连字符。

    • 它的第一个字符必须是字母。

    • 它不能以连字符结束或包含两个连续连字符。

    • 它对于每个区域每个 AWS 账户的所有数据库群集必须是唯一的。

    目标区域

    选择将承载新的跨区域只读副本数据库群集的 AWS 区域。

    目标数据库子网组

    选择要用于跨区域只读副本数据库群集的数据库子网组。

    启用加密

    如果源数据库群集加密,则 Enable Encryption 值为 Yes,否则为 No。您不能更改该值。

    主密钥

    仅当源数据库群集加密且 Enable Encryption 值为 Yes 时才显示该字段。

    指定加密只读副本时使用的 AWS KMS 密钥标识符。由于您要跨区域复制加密的数据库,且 KMS 密钥是区域特定的,您必须指定与源数据库群集中使用的不同的 KMS 加密密钥。您输入的 KMS 加密密钥必须在目标区域有效。

    有关使用 KMS 密钥的更多信息,请参阅什么是 AWS Key Management Service?

    公开访问

    选择 Yes 可为跨区域只读副本数据库群集提供一个公有 IP 地址;否则请选择 No

    可用区

    确定您是否要指定特定的可用区,然后选择该可用区,或选择 No preference 以让 Amazon RDS 选择新数据库群集的可用区。

    优先级

    选择新数据库群集的主实例的故障转移优先级。此优先级决定从主实例故障恢复时提升 Aurora 副本的顺序。如果您未选择值,则默认值为 tier-1。有关更多信息,请参阅 Aurora 数据库群集的容错能力

    Database Port

    指定应用程序和实用程序用来访问数据库的端口。Aurora 数据库群集默认为使用默认 MySQL 端口 3306。有些公司的防火墙不允许连接到此端口。如果您公司的防火墙不允许连接默认端口,请为新数据库群集选择其他端口。

    Enable Enhanced Monitoring

    要在运行数据库群集的操作系统中启用实时指标收集,此选项将为 Yes。有关更多信息,请参阅 增强监控

    Monitoring Role

    此选项仅在 Enable Enhanced Monitoring 设置为 Yes 时可用。将 Monitoring Role 属性设置为您创建的 AWS Identity and Access Management (IAM) 角色,以允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 通信,或选择 Default 让 RDS 为您创建一个名为 rds-monitoring-role 的角色。

    粒度

    此选项仅在 Enable Enhanced Monitoring 设置为 Yes 时可用。设置为新的数据库群集收集指标的时间间隔 (以秒为单位)。

    Auto Minor Version Upgrade

    如果您希望在次要 MySQL 数据库引擎版本升级可用时,让跨区域只读副本数据库群集自动接收这些次要升级,请选择 Yes

    Auto Minor Version Upgrade 选项仅适用于升级到数据库群集的 MySQL 次要引擎版本。它不适用于应用于维持系统稳定性的常规修补程序。

  6. 选择 Create 可创建 Aurora 的跨区域只读副本。

使用 AWS CLI 从数据库群集创建跨区域 Aurora 只读副本

  1. 在要创建只读副本数据库群集的区域中调用 AWS CLI create-db-cluster 命令。包括 --replication-source-identifier 选项并指定要创建只读副本的源数据库群集的 Amazon 资源名称 (ARN)。

    对于由 --replication-source-identifier 指定的数据库群集已加密的跨区域复制,您还必须指定 --source-region--pre-signed-url 选项和 --kms-key-id 选项。使用 --source-region 自动生成预签名 URL 作为对 CreateDBCluster API 操作的有效请求,该操作能够在包含要复制的加密数据库群集的源区域中执行。使用 --pre-signed-url 需要您改为手动构建预签名 URL。KMS 密钥 ID 用于加密只读副本,并且必须是在目标区域中有效的 KMS 加密密钥。要了解有关这些选项的更多信息,请参见 create-db-cluster

    注意

    通过指定 --storage-encrypted 并提供 --kms-key-id 的值,您可以设置从未加密数据库群集到加密只读副本的跨区域复制。在这种情况下,不需要指定 --source-region--pre-signed-url

    您无需包含 --master-username--master-user-password 参数,因为这些值是从源数据库群集中获取的。

    以下代码示例从 us-west-2 区域的一个未加密数据库群集快照中创建 us-east-1 区域的只读副本。在 us-east-1 区域调用命令。

    针对 Linux、OS X 或 Unix:

    aws rds create-db-cluster \ --db-cluster-identifier sample-replica-cluster \ --engine aurora \ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster

    对于 Windows:

    aws rds create-db-cluster ^ --db-cluster-identifier sample-replica-cluster ^ --engine aurora ^ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster

    以下代码示例从 us-west-2 区域的一个加密数据库群集快照中创建 us-east-1 区域的只读副本。在 us-east-1 区域调用命令。

    针对 Linux、OS X 或 Unix:

    aws rds create-db-cluster \ --db-cluster-identifier sample-replica-cluster \ --engine aurora \ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster \ --kms-key-id my-us-east-1-key \ --source-region us-west-2

    对于 Windows:

    aws rds create-db-cluster ^ --db-cluster-identifier sample-replica-cluster ^ --engine aurora ^ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster ^ --kms-key-id my-us-east-1-key ^ --source-region us-west-2
  2. 如下例所示,使用 AWS CLI 命令检查数据库群集是否已变为可用状态。describe-db-clusters

    aws rds describe-db-clusters --db-cluster-identifier sample-replica-cluster

    describe-db-clusters 结果显示状态 available 时,创建数据库群集的主实例以便复制能够开始。要执行此操作,请使用 AWS CLI create-db-instance 命令,如下例所示。

    针对 Linux、OS X 或 Unix:

    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:

    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

    在数据库实例已创建并可用后,复制将开始。您可以通过调用 AWS CLI 命令来确定数据库实例是否可用。describe-db-instances

使用 RDS API 从数据库群集创建跨区域 Aurora 只读副本

  1. 在要创建只读副本数据库群集的区域中调用 RDS API 操作。CreateDBCluster包括 ReplicationSourceIdentifier 参数并指定要创建只读副本的源数据库群集的 Amazon 资源名称 (ARN)。

    对于由 ReplicationSourceIdentifier 标识的数据库群集已加密的跨区域复制,您还必须指定 PreSignedUrlKmsKeyId 参数。预签名 URL 必须是对 CreateDBCluster API 操作的有效请求,该操作能够在包含要复制的加密数据库群集的源区域中执行。KMS 密钥 ID 用于加密只读副本,并且必须是在目标区域中有效的 KMS 加密密钥。要自动生成预签名 URL 而无需手动干预,请改用带 --source-region 选项的 AWS CLI create-db-cluster 命令。

    注意

    通过将 StorageEncrypted 指定为 true 并提供 KmsKeyId 的值,您可以设置从未加密数据库群集到加密只读副本的跨区域复制。在这种情况下,不需要指定 PreSignedUrl

    您无需包含 MasterUsernameMasterUserPassword 参数,因为这些值是从源数据库群集中获取的。

    以下代码示例从 us-west-2 区域的一个未加密数据库群集快照中创建 us-east-1 区域的只读副本。在 us-east-1 区域调用操作。

    https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &ReplicationSourceIdentifier=arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster &DBClusterIdentifier=sample-replica-cluster &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request &X-Amz-Date=20160201T001547Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=a04c831a0b54b5e4cd236a90dcb9f5fab7185eb3b72b5ebe9a70a4e95790c8b7

    以下代码示例从 us-west-2 区域的一个加密数据库群集快照中创建 us-east-1 区域的只读副本。在 us-east-1 区域调用操作。

    https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBCluster %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526ReplicationSourceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Acluster%25253Asample-master-cluster %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4 %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &ReplicationSourceIdentifier=arn:aws-cn:rds:us-west-2:123456789012:cluster:sample-master-cluster &DBClusterIdentifier=sample-replica-cluster &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request &X-Amz-Date=20160201T001547Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=a04c831a0b54b5e4cd236a90dcb9f5fab7185eb3b72b5ebe9a70a4e95790c8b7
  2. 如下例所示,通过使用 RDS API 操作检查数据库群集是否可用。DescribeDBClusters

    https://rds.us-east-1.amazonaws.com/ ?Action=DescribeDBClusters &DBClusterIdentifier=sample-replica-cluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request &X-Amz-Date=20160201T002223Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=84c2e4f8fba7c577ac5d820711e34c6e45ffcd35be8a6b7c50f329a74f35f426

    DescribeDBClusters 结果显示状态 available 时,创建数据库群集的主实例以便复制能够开始。为此,请使用 RDS API 操作,如以下示例所示。CreateDBInstance

    https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=sample-replica-cluster &DBInstanceClass=db.r3.large &DBInstanceIdentifier=sample-replica-instance &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request &X-Amz-Date=20160201T003808Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=125fe575959f5bbcebd53f2365f907179757a08b5d7a16a378dfa59387f58cdb

    在数据库实例已创建并可用后,复制将开始。您可以通过调用 AWS CLI 命令来确定数据库实例是否可用。DescribeDBInstances

查看 Amazon Aurora 跨区域副本

可通过调用 describe-db-clusters AWS CLI 命令或 DescribeDBClusters RDS API 操作来查看 Amazon Aurora 数据库群集的跨区域复制关系。在响应中,参考任何跨区域只读副本数据库群集的数据库群集标识符的 ReadReplicaIdentifiers 字段,并参考作为复制主体的源数据库群集 ARN 的 ReplicationSourceIdentifier 元素。

Amazon Aurora 跨区域副本问题排查

以下是您在创建 Amazon Aurora 跨区域只读副本时可能遇到的常见错误消息的列表以及指定错误的解决方法。

源群集 [数据库群集 ARN] 未启用二进制日志

要解决此问题,请对源数据库群集启用二进制日志记录。有关更多信息,请参阅 在您开始之前

源群集 [数据库群集 ARN] 没有在写入器上同步的群集参数组

如果您已更新 binlog_format 数据库群集参数,但尚未重启数据库群集的主实例,则会收到此错误。重启数据库群集的主实例 (即写入器) 并重试。

源群集 [数据库群集 ARN] 已具有此区域中的只读副本

对于每个源数据库群集,您只能拥有一个跨区域只读副本数据库群集。您必须删除作为只读副本的现有跨区域数据库群集,才能创建新的群集。

数据库群集 [数据库群集 ARN] 需要数据库引擎升级来支持跨区域复制

要解决此问题,请将源数据库群集中所有实例的数据库引擎版本升级到最新的数据库引擎版本,然后重新尝试创建跨区域只读副本数据库。