使用 Amazon Aurora MySQL 进行复制 - Amazon Aurora

使用 Amazon Aurora MySQL 进行复制

Aurora MySQL 复制特征是提高集群可用性与性能的关键所在。Aurora 可以帮助您轻松创建集群并调整大小(最多可创建 15 个 Aurora 副本)。

所有副本采用相同的基础数据。如果某些数据库实例离线,其他处于可用状态的数据库实例将继续处理查询,或者在需要时作为写入器接管这些实例。Aurora 会自动将您的只读连接分配到多个数据库实例中,从而帮助 Aurora 集群更好地支持查询密集型工作负载。

在以下主题中,您可以了解 Aurora MySQL 复制的工作方式以及如何微调复制设置以获得最佳的可用性和性能。

使用 Aurora 副本

Aurora 副本是 Aurora 数据库集群中的独立终端节点,最适合用于扩展读取操作以及提高可用性。对于数据库集群在 AWS 区域中所跨的多个可用区,最多可以分配 15 个 Aurora 副本。虽然数据库集群卷由数据库集群的多个数据副本组成,但集群卷中的数据表示为数据库集群中的主实例和 Aurora 副本的单个逻辑卷。有关 Aurora 副本的更多信息,请参阅 Aurora 副本

Aurora 副本十分适用于读取扩展,因为它们完全专用于集群卷上的读取操作。写入操作由主实例进行管理。由于集群卷是在 Aurora MySQL 数据库集群中的所有实例之间共享的,因此,无需执行额外的操作以复制每个 Aurora 副本的数据副本。相比之下,MySQL 只读副本必须在单一线程上,重放从源数据库实例向其本地数据存储的所有写入操作。此限制会影响到 MySQL 只读副本支持海量读取流量的能力。

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

重要

对于在 InnoDB 表上执行的操作,Aurora MySQL 的 Aurora 副本始终使用 REPEATABLE READ 默认事务隔离级别。仅对于 Aurora MySQL 数据库集群的主实例,您可以使用 SET TRANSACTION ISOLATION LEVEL 命令更改事务级别。该限制避免在 Aurora 副本上出现用户级锁定,并允许 Aurora 副本扩展以支持数千个活动用户连接,同时仍保持最小的副本滞后时间。

注意

在主实例上运行的 DDL 语句可能会中断关联的 Aurora 副本上的数据库连接。如果 Aurora 副本连接主动使用数据库对象(如表),并且使用 DDL 语句在主实例上修改该对象,则会中断 Aurora 副本连接。

注意

中国 (宁夏) 区域不支持跨区域只读副本。

Amazon Aurora MySQL 的复制选项

您可以在以下任意选项之间设置复制:

注意

重新引导 Amazon Aurora 数据库集群的主实例还会自动重新引导该数据库集群的 Aurora 副本,以便重新建立入口点来确保数据库集群中的读/写一致性。

Amazon Aurora MySQL 复制的性能注意事项

以下特征可以帮助您微调 Aurora MySQL 复制性能。

副本日志压缩特征自动降低复制消息的网络带宽。由于每条消息将传输到所有 Aurora 副本,因此,较大的集群的好处更大。该特征在写入方节点上产生一些 CPU 开销以执行压缩。在 Aurora MySQL 版本 2 和版本 3 中,始终启用它。

二进制日志筛选特征自动降低复制消息的网络带宽。由于 Aurora 副本不使用复制消息中包含的二进制日志信息,因此,将从发送到这些节点的消息中省略该数据。

在 Aurora MySQL 版本 2 中,您可以通过更改 aurora_enable_repl_bin_log_filtering 参数来控制此特征。默认情况下,该参数为 on。由于该优化应该是透明的,因此,您只能在诊断或故障排除期间禁用该设置以解决与复制相关的问题。例如,与无法使用该特征的旧 Aurora MySQL 集群的行为相符。

在 Aurora MySQL 版本 3 中,二进制日志筛选始终处于启用状态。

监控 Amazon Aurora MySQL 复制

读取扩展和高可用性依赖于尽可能短的滞后时间。您可以通过监控 Amazon CloudWatch AuroraReplicaLag 指标来监控 Aurora 副本滞后于 Aurora MySQL 数据库集群主实例的时间。AuroraReplicaLag 指标记录在每个 Aurora 副本中。

主数据库实例还记录 AuroraReplicaLagMaximumAuroraReplicaLagMinimum Amazon CloudWatch 指标。AuroraReplicaLagMaximum 指标记录主数据库实例与数据库集群中每个 Aurora 副本之间的最大滞后量。AuroraReplicaLagMinimum 指标记录主数据库实例与数据库集群中每个 Aurora 副本之间的最小滞后量。

如果您需要 Aurora 副本滞后的最新值,可在 Amazon CloudWatch 中检查 AuroraReplicaLag 指标。有关 Aurora MySQL 数据库集群的每个 Aurora 副本的 Aurora 副本滞后也会记录在 information_schema.replica_host_status 表中。有关此表的更多信息,请参阅 information_schema.replica_host_status

有关监控 RDS 实例和 CloudWatch 指标的更多信息,请参阅监控 Amazon Aurora 集群中的指标