使用 Amazon Aurora 进行复制 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon Aurora 进行复制

Aurora 有几个复制选项。每个 Aurora 数据库集群在同一集群中的多个数据库实例之间都有内置复制。您还可以在设置复制时将 Aurora 集群作为源或目标集群。将数据复制到或从 Aurora 集群中复制数据时,您可以选择内置功能,例如 Aurora 全局数据库,也可以选择用于 MySQL 或 PostgreSQL 数据库引擎的传统复制机制。您可以根据自己的需要选择适当的选项,以获得高可用性、便利性和性能的正确组合。以下部分说明选择每种方法的方式和时间。

Aurora 副本

在 Aurora 预置数据库集群中创建第二个、第三个以及更多数据库实例时,Aurora 自动设置从写入器数据库实例到所有其他数据库实例的复制。这些其他数据库实例是只读实例,称为 Aurora 副本。讨论如何在集群中组合写入器和读取器数据库实例时,我们还将其称为读取器实例。

Aurora 副本有两个主要用途。您可以向他们发出查询以扩展应用程序的读取操作。为此,您通常需要连接到集群的读取器终端节点。这样,Aurora 可以将只读连接的负载分散到集群中尽可能多的 Aurora 副本之间。Aurora 副本还有助于提高可用性。如果集群中的写入器实例变为不可用,则 Aurora 会自动提升其中一个读取器实例以取代它作为新的写入器。

每个 Aurora 数据库集群最多可以包含 15 个 Aurora 副本。Aurora 副本可以分配到数据库集群在 Amazon 区域中所跨的多个可用区。

数据库集群中的数据有自己的高可用性和可靠性功能,与集群中的数据库实例无关。如果您不熟悉 Aurora 存储功能,请参阅 Aurora 存储概述。数据库集群卷实际上由该数据库集群的多个数据副本组成。数据库集群中的主实例和 Aurora 副本都将集群卷中的数据作为单个逻辑卷查看。

因此,所有 Aurora 副本均返回相同的查询结果数据,且副本滞后时间非常短。此滞后通常远远少于主实例写入更新后的 100 毫秒。副本滞后因数据库更改速率而异。也就是说,在对数据库执行大量写入操作期间,您可能发现副本滞后时间变长。

Aurora 副本十分适用于读取扩展,因为它们完全专用于集群卷上的读取操作。写入操作由主实例进行管理。由于集群卷是在数据库集群中的所有数据库实例间共享的,因此无需其他操作即可复制每个 Aurora 副本的数据副本。

要提高可用性,可以使用 Aurora 副本作为故障转移目标。也就是说,如果主实例失败,Aurora 副本将提升为主实例。提升过程只造成短暂的中断,在此期间,对主实例发出的读写请求将失败,同时会出现异常,并且 Aurora 副本会重启。这样提升 Aurora 副本要比重新创建主实例快得多。如果您的 Aurora 数据库集群不包含任何 Aurora 副本,则您的数据库集群将在数据库实例从故障事件中恢复的持续时间内不可用。对于高可用性场景,建议您创建一个或多个 Aurora 副本。您的 Aurora 数据库集群应该与主实例具有相同的数据库实例类,并且位于不同可用区中。有关将 Aurora 副本作为故障转移目标的更多信息,请参阅Aurora 数据库集群的容错能力

在删除 Aurora 副本时,将立即删除其实例终端节点,并将 Aurora 副本从读取器终端节点中删除。如果在正待删除的 Aurora 副本上运行语句,则有 3 分钟宽限期。现有语句可在此宽限期内正常完成。当此宽限期结束后,将关闭并删除 Aurora 副本。

注意

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

提示

您可以使用 Aurora 集群内的 Aurora 副本作为唯一复制形式,以保持数据高可用性。您还可以将内置 Aurora 复制与其他类型的复制结合使用。这样做可以帮助进一步提高您的数据的高可用性和地理分布水平。

有关如何创建 Aurora 副本的详细信息,请参阅将 Aurora 副本添加到数据库集群

使用 Aurora MySQL 进行复制

除了 Aurora 副本以外,您还可以通过以下选项与 Aurora MySQL 进行复制:

  • 不同 Amazon 区域中的 Aurora MySQL 数据库集群。

    • 您可以使用 Aurora 全局数据库跨多个区域复制数据。有关详细信息,请参阅使用 Aurora 全局数据库跨 Amazon 区域的高可用性

    • 利用 MySQL 二进制日志 (binlog) 复制,您可以在不同的 Amazon 区域中创建 Aurora MySQL 数据库集群的 Aurora 只读副本。通过这种方式,每个集群最多可以创建五个只读副本,且每个副本位于不同区域。

  • 相同区域中的两个 Aurora MySQL 数据库集群 (通过使用 MySQL 二进制日志 (binlog) 复制)。

  • 一个 RDS for MySQL 数据库实例(作为主实例)和一个 Aurora MySQL 数据库集群(通过创建 RDS for MySQL 数据库实例的 Aurora 只读副本)。通常,此方法用于迁移到 Aurora MySQL,而非持续复制。

有关与 Aurora MySQL 进行复制的更多信息,请参阅使用 Amazon Aurora MySQL 进行单主复制

使用 Aurora PostgreSQL 进行复制

除了 Aurora 副本之外,您还可以通过以下选项使用 Aurora PostgreSQL 进行复制:

  • 一个 Amazon RDS PostgreSQL 数据库实例(作为数据源)和一个 Aurora PostgreSQL 数据库集群(通过创建 Amazon RDS PostgreSQL 数据库实例的 Aurora 副本)。

  • 利用 PostgreSQL 的逻辑复制功能,在同一区域中可有两个 Aurora PostgreSQL 数据库集群。

  • 一个区域中的 Aurora 主数据库集群以及不同区域中的最多五个只读辅助数据库集群(使用 Aurora 全局数据库)。Aurora PostgreSQL不支持跨区域 Aurora 副本。但是,您可以使用 Aurora 全局数据库将 Aurora PostgreSQL 数据库集群的读取功能扩展到多个 Amazon 区域并实现可用性目标。有关更多信息,请参阅 使用 Amazon Aurora 全局数据库

有关与 Aurora PostgreSQL 进行复制的更多信息,请参阅使用 Amazon Aurora PostgreSQL 进行复制