

# 为Aurora MySQL 数据库集群禁用基于 GTID 的复制
<a name="mysql-replication-gtid.disabling"></a>

您可以为 Aurora MySQL 数据库集群禁用基于 GTID 的复制。这样做意味着 Aurora 集群不能对使用基于 GTID 的复制的外部数据库执行入站或出站二进制日志复制。

**注意**  
在以下过程中，*只读副本* 表示采用对外部数据库执行二进制日志复制的 Aurora 配置中的复制目标。它不表示只读 Aurora 副本数据库实例。例如，当 Aurora 集群接受来自外部源的传入复制时，Aurora 主实例充当二进制日志复制的只读副本。

有关此部分提到的存储过程的更多详细信息，请参阅 [Aurora MySQL 存储过程参考](AuroraMySQL.Reference.StoredProcs.md)。

**为 Aurora MySQL 数据库集群禁用基于 GTID 的复制**

1. 在 Aurora 副本上，运行以下过程：

   对于版本 3

   ```
   CALL mysql.rds_set_source_auto_position(0);
   ```

   对于版本 2

   ```
   CALL mysql.rds_set_master_auto_position(0);
   ```

1. 将 `gtid_mode` 重置为 `ON_PERMISSIVE`。

   1. 确保与 Aurora MySQL 集群关联的数据库集群参数组将 `gtid_mode` 设置为 `ON_PERMISSIVE`。

      有关使用参数组设置配置参数的更多信息，请参阅 [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)。

   1. 重启 Aurora MySQL 数据库集群。

1. 将 `gtid_mode` 重置为 `OFF_PERMISSIVE`。

   1. 确保与 Aurora MySQL 集群关联的数据库集群参数组将 `gtid_mode` 设置为 `OFF_PERMISSIVE`。

   1. 重启 Aurora MySQL 数据库集群。

1. 等待在 Aurora 主实例上应用所有 GTID 事务。要检查是否应用了这些事务，请按以下步骤操作：

   1. 在 Aurora 主实例上，运行 `SHOW MASTER STATUS` 命令。

      您的输出应类似于以下输出。

      ```
      File                        Position
      ------------------------------------
      mysql-bin-changelog.000031      107
      ------------------------------------
      ```

      记下输出中的文件和位置。

   1. 在每个只读副本上，使用上一步中的源实例上的文件和位置信息运行以下查询：

      对于版本 3

      ```
      SELECT SOURCE_POS_WAIT('file', position);
      ```

      对于版本 2

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      例如，如果文件名是 `mysql-bin-changelog.000031` 并且位置是 `107`，请运行以下语句：

      对于版本 3

      ```
      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      对于版本 2

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

1. 重置 GTID 参数以禁用基于 GTID 的复制。

   1. 确保与 Aurora MySQL 集群关联的数据库集群参数组具有以下参数设置：
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. 重启 Aurora MySQL 数据库集群。