

# 为具有只读副本的 MySQL 数据库实例禁用基于 GTID 的复制
<a name="mysql-replication-gtid.disabling"></a>

您可以为 一个具有只读副本的 MySQL 数据库实例。

**为 具有只读副本的 MySQL 数据库实例禁用基于 GTID 的复制**

1. 在每个只读副本上，运行以下过程：

   **MySQL 8.4 及更高的主要版本**

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

   **MySQL 8.0 及更低的主要版本**

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

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

   1. 确保与 MySQL 数据库实例和每个只读副本关联的参数组将 `gtid_mode` 设置为 `ON_PERMISSIVE`。

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

   1. 重新引导 MySQL 数据库实例和每个只读副本。有关重新引导的更多信息，请参阅[重启数据库实例](USER_RebootInstance.md)。

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

   1. 确保与 MySQL 数据库实例和每个只读副本关联的参数组将 `gtid_mode` 设置为 `OFF_PERMISSIVE`。

   1. 重新引导 MySQL 数据库实例和每个只读副本。

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

   1. 在 MySQL 数据库实例上，运行以下命令：

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS
      ```

      **MySQL 5.7 和 8.0**

      ```
      SHOW MASTER STATUS
      ```

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

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

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

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

      **MySQL 8.4 和 MySQL 8.0.26 及更高的 MySQL 8.0 版本**

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

      **MySQL 5.7**\*

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

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

      **MySQL 8.4 和 MySQL 8.0.26 及更高的 MySQL 8.0 版本**

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

      **MySQL 5.7**\*

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

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

   1. 确保与 MySQL 数据库实例和每个只读副本关联的参数组具有以下参数设置：
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. 重新引导 MySQL 数据库实例和每个只读副本。