使用基于 GTID 的复制 - Amazon Aurora

使用基于 GTID 的复制

以下内容说明了如何在 Aurora MySQL 集群和外部源之间使用采用二进制日志(binlog)复制的全局事务标识符(GTID)。

注意

对于 Aurora,只能通过对外部 MySQL 数据库使用二进制日志复制的 Aurora MySQL 集群使用此功能。另一个数据库可能是其他 AWS 区域的 Amazon RDS MySQL 实例、本地 MySQL 数据库或 Aurora 数据库集群。要了解如何配置此类复制,请参阅 Aurora 与 MySQL 之间或 Aurora 与其他 Aurora 数据库集群之间的复制(二进制日志复制)

如果您使用的是二进制日志复制,不熟悉 MySQL 的基于 GTID 的复制,请参阅 MySQL 文档中的 Replication with global transaction identifiers

Aurora MySQL 版本 2 和 3 支持基于 GTID 的复制。

全局事务标识符 (GTID) 概述

全局事务标识符 (GTID) 是为提交的 MySQL 事务生成的唯一标识符。您可以使用 GTID 让二进制日志复制的故障排除更加简单便捷。

注意

当 Aurora 在集群中的数据库实例之间同步数据时,该复制机制不会涉及二进制日志 (binlog)。对于 Aurora MySQL,基于 GTID 的复制仅在您还使用二进制日志复制从外部的 MySQL 兼容数据向 Aurora MySQL 数据库集群复制或从中复制时应用。

MySQL 使用两种不同类型的事务进行二进制日志复制:

  • GTID 事务 – 由 GTID 标识的事务。

  • 匿名事务 – 未分配 GTID 的事务。

在复制配置中,GTID 在所有数据库实例中是唯一的。GTID 简化了复制配置,因为在使用它们时,您不必引用日志文件位置。通过使用 GTID,还可以更轻松地跟踪复制的事务并确定源实例和副本是否一致。

在从外部的 MySQL 兼容数据向 Aurora 集群复制时,通常使用 Aurora 的基于 GTID 的复制。您可以将此复制配置设置为从本地数据库或 Amazon RDS 数据库迁移到 Aurora MySQL 的一部分。如果外部数据库已使用 GTID,为 Aurora 集群启用基于 GTID 的复制可以简化复制过程。

为 Aurora MySQL 集群配置基于 GTID 的复制的方法是先在数据库集群参数组中设置相关配置参数。然后将该参数组与集群关联。

基于 GTID 的复制的参数

可以使用以下参数配置基于 GTID 的复制。

参数 有效值 描述

gtid_mode

OFF, OFF_PERMISSIVE, ON_PERMISSIVE, ON

OFF 指定新事务是匿名事务(即,没有 GTID),并且事务必须是匿名事务才能复制。

OFF_PERMISSIVE 指定新事务是匿名事务,但可以复制所有事务。

ON_PERMISSIVE 指定新事务是 GTID 事务,但可以复制所有事务。

ON 指定新事务是 GTID 事务,并且事务必须是 GTID 事务才能复制。

enforce_gtid_consistency

OFF, ON, WARN

OFF 允许事务违反 GTID 一致性。

ON 禁止事务违反 GTID 一致性。

WARN 允许事务违反 GTID 一致性,但在违反一致性时生成警告。

注意

在 AWS Management Console中,gtid_mode 参数显示为 gtid-mode

对于基于 GTID 的复制,请为 Aurora MySQL 数据库集群的数据库集群参数组使用这些设置:

  • ONON_PERMISSIVE 仅适用于从 Aurora MySQL 集群的传出复制。这两个值都可以让 Aurora 数据库集群为复制到外部数据库的事务使用 GTID。ON 要求外部数据库也使用基于 GTID 的复制。ON_PERMISSIVE 让基于 GTID 的复制成为外部数据库上的可选项。

  • OFF_PERMISSIVE(如果设置)表明您的 Aurora 数据库集群可以接受来自外部数据库的传入复制。不论外部数据库是否使用基于 GTID 的复制,它都可以接受。

  • OFF(如果设置)表明您的 Aurora 数据库集群只接受来自不使用基于 GTID 的复制的外部数据库的传入复制。

提示

传入复制是 Aurora MySQL 集群最常见的二进制日志复制场景。对于传入复制,建议您将 GTID 模式设置为 OFF_PERMISSIVE。该设置允许来自外部数据库的传入复制,不论复制源的 GTID 设置如何。

有关参数组的更多信息,请参阅 Amazon Aurora 的参数组