

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden der GTID-basierten Replikation
<a name="mysql-replication-gtid"></a>

Der folgende Inhalt beschreibt, wie Sie globale Transaktionskennungen (Global Transaction Identifiers, GTIDs) mit Binärprotokoll (binlog)-Replikation unter DB-Instances von Amazon RDS für MySQL verwenden. 

Wenn Sie die binlog-Replikation verwenden und nicht mit der GTID-basierten Replikation mit MySQL vertraut sind, finden Sie unter [Replikation mit globalen Transaktionskennungen](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html) in der MySQL-Dokumentation weitere Informationen.

Die GTID-basierte Replikation wird für die folgenden Versionen unterstützt:
+ RDS für MySQL 8.4 (alle Versionen)
+ RDS für MySQL 8.0 (alle Versionen)
+ RDS für MySQL 5.7 (alle Versionen)

Alle MySQL-DB-Instances in einer Replikationskonfiguration müssen diese Versionsanforderung erfüllen.

**Topics**
+ [Übersicht über globale Transaktionskennungen (GTIDs)](#mysql-replication-gtid.overview)
+ [Parameter für die GTID-basierte Replikation](#mysql-replication-gtid.parameters)
+ [Aktivieren der GTID-basierten Replikation für neue Lesereplikate für RDS für MySQL](mysql-replication-gtid.configuring-new-read-replicas.md)
+ [Aktivieren der GTID-basierten Replikation für vorhandene Lesereplikate für RDS für MySQL](mysql-replication-gtid.configuring-existing-read-replicas.md)
+ [Deaktivieren einer GTID-basierten Replikation für eine MySQL-DB-Instance mit Read Replicas](mysql-replication-gtid.disabling.md)

## Übersicht über globale Transaktionskennungen (GTIDs)
<a name="mysql-replication-gtid.overview"></a>

*Globale Transaktionskennungen (GTIDs)* sind eindeutige IDs, die für festgeschriebene MySQL-Transaktionen generiert werden. Sie können GTIDs verwenden, um die Fehlerbehebung für die binlog-Replikation zu erleichtern.

MySQL verwendet für die binlog-Replikation zwei verschiedene Arten von Transaktionen:
+ *GTID-Transaktionen* – Transaktionen, die durch eine GTID gekennzeichnet sind.
+ *Anonyme Transaktionen* – Transaktionen, denen keine GTID zugeordnet ist.

In einer Replikationskonfiguration sind GTIDs bei allen DB-Instances eindeutig. GTIDs vereinfachen die Replikationskonfiguration, weil Sie nicht auf die Protokolldateipositionen verweisen müssen, wenn Sie diese verwenden. GTIDs erleichtern das Verfolgen von replizierten Transaktionen und legen fest, ob die Quellinstance und Replikate konsistent sind.

Zur Replikation von Daten mit RDS-MySQL-Lesereplikaten können Sie die GTID-basierte Replikation verwenden. Sie können beim Erstellen neuer Lesereplikate die GTID-basierte Replikation konfigurieren oder bestehende Lesereplikate zum Verwenden der GTID-basierten Replikation konvertieren.

Sie können die GTID-basierte Replikation in einer zeitlich verzögerten Replikationskonfiguration mit RDS für MySQL verwenden. Weitere Informationen finden Sie unter [Konfigurieren der verzögerten Replikation mit MySQL](USER_MySQL.Replication.ReadReplicas.DelayReplication.md).

## Parameter für die GTID-basierte Replikation
<a name="mysql-replication-gtid.parameters"></a>

Mit den folgenden Parametern konfigurieren Sie die GTID-basierte Replikation.


| Parameter | Zulässige Werte | Beschreibung | 
| --- | --- | --- | 
|  `gtid_mode`  |  `OFF`, `OFF_PERMISSIVE`, `ON_PERMISSIVE`, `ON`  |  `OFF` gibt an, dass neue Transaktionen anonyme Transaktionen sind (d. h. keine GTIDs haben). Eine Transaktion muss anonym sein, um repliziert werden zu können.  `OFF_PERMISSIVE` gibt an, dass neue Transaktionen anonyme Transaktionen sind und alle Transaktionen repliziert werden können.  `ON_PERMISSIVE` gibt an, dass neue Transaktionen GTID-Transaktionen sind und alle Transaktionen repliziert werden können.  `ON` gibt an, dass neue Transaktionen GTID-Transaktionen sind. Eine Transaktion muss eine GTID-Transaktion sein, um repliziert zu werden.   | 
|  `enforce_gtid_consistency`  |  `OFF`, `ON`, `WARN`  |  `OFF` erlaubt es Transaktionen, gegen die GTID-Konsistenz zu verstoßen.  `ON` verhindert das Verstoßen von Transaktionen gegen die GTID-Konsistenz.  `WARN` erlaubt es Transaktionen, gegen die GTID-Konsistenz zu verstoßen, generiert aber eine Warnung, wenn ein Verstoß auftritt.   | 

**Anmerkung**  
In der AWS-Managementkonsole erscheint der Parameter `gtid_mode` als `gtid-mode`.

Bei einer GTID-basierten Replikation verwenden Sie diese Einstellungen für die Parametergruppe für Ihre DB-Instance oder Lesereplikate:
+ `ON` und `ON_PERMISSIVE` gelten nur für die ausgehende Replikation von einer RDS-DB-Instance. Beide Werte bewirken, dass Ihre RDS-DB-Instance GTIDs für Transaktionen verwenden, die repliziert werden. `ON` erfordert, dass die Zieldatenbank ebenfalls die GTID-basierte Replikation verwendet. Mit `ON_PERMISSIVE` ist die GTID-basierte Replikation auf der Zieldatenbank optional. 
+ Wenn `OFF_PERMISSIVE` eingestellt ist, bedeutet dies, dass Ihre RDS-DB-Instances die eingehende Replikation von einer Quelldatenbank akzeptieren können. Dabei ist unerheblich, ob die Quelldatenbank eine GTID-basierte Replikation verwendet.
+ Wenn `OFF` eingestellt ist, bedeutet dies, dass Ihre RDS-DB-Instance nur eingehende Replikation von Quelldatenbanken akzeptieren, die keine GTID-basierte Replikation verwenden. 

Weitere Informationen zu Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

# Aktivieren der GTID-basierten Replikation für neue Lesereplikate für RDS für MySQL
<a name="mysql-replication-gtid.configuring-new-read-replicas"></a>

Wenn die GTID-basierte Replikation für eine RDS für MySQL-DB-Instance aktiviert ist, wird die GTID-basierte Replikation automatisch für Lesereplikate der DB-Instance konfiguriert.

**So aktivieren Sie die GTID-basierte Replikation für neue Lesereplikate**

1. Die Parametergruppe, die der DB-Instance zugeordnet ist, muss über die folgenden Parametereinstellungen verfügen:
   + `gtid_mode` – `ON` oder `ON_PERMISSIVE`
   + `enforce_gtid_consistency` – `ON`

   Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

1. Wenn Sie die Parametergruppe der DB-Instance geändert haben, müssen Sie die DB-Instance neu starten. Weitere Information dazu finden Sie unter [Eine DB-Instance DB-Cluster neu starten](USER_RebootInstance.md).

1.  Erstellen Sie mindestens ein Lesereplikat der DB-Instance. Weitere Information dazu finden Sie unter [Erstellen eines Lesereplikats](USER_ReadRepl.Create.md). 

Amazon RDS versucht, mithilfe von eine GTID-basierte Replikation zwischen der MySQL-DB-Instance und den Lesereplikaten herzustelle `MASTER_AUTO_POSITION`. Wenn der Versuch fehlschlägt, verwendet Amazon RDS Protokolldateipositionen für die Replikation mit den Lesereplikaten. Weitere Informationen zu `MASTER_AUTO_POSITION` finden Sie unter [ Automatische GTID-Positionierung](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-auto-positioning.html) in der MySQL-Dokumentation.

# Aktivieren der GTID-basierten Replikation für vorhandene Lesereplikate für RDS für MySQL
<a name="mysql-replication-gtid.configuring-existing-read-replicas"></a>

Für eine vorhandene MySQL-DB-Instance mit Lesereplikaten, die keine GTID-basierte Replikation verwendet, können Sie eine GTID-basierte Replikation zwischen der DB-Instance und den Lesereplikaten konfigurieren.

**So aktivieren Sie die GTID-basierte Replikation für bestehende Lesereplikate**

1. Wenn die DB-Instance oder eine Read Replica eine 8.0-Version von RDS für MySQL unter 8.0.26 verwendet, aktualisieren Sie die DB-Instance oder Read Replica auf 8.0.26 oder eine höhere MySQL 8.0-Version. Alle Versionen von RDS für MySQL 8.4 und 5.7 unterstützen die GTID-basierte Replikation.

   Weitere Informationen finden Sie unter [Upgrades der DB-Engine von RDS für MySQL](USER_UpgradeDBInstance.MySQL.md).

1. (Optional) Setzen Sie die GTID-Parameter zurück und testen Sie das Verhalten der DB-Instance und der Lesereplikate:

   1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss den Wert für den Parameter `enforce_gtid_consistency` auf `WARN` gesetzt haben.

      Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

   1. Wenn Sie die Parametergruppe der DB-Instance geändert haben, müssen Sie die DB-Instance neu starten. Wenn Sie die Parametergruppe des Lesereplikats geändert haben, müssen Sie das Lesereplikat neu starten.

      Weitere Informationen finden Sie unter [Eine DB-Instance DB-Cluster neu starten](USER_RebootInstance.md).

   1. Führen Sie Ihre DB-Instance und Lesereplikate mit Ihrem normalen Workload aus und überwachen Sie die Protokolldateien.

      Wenn Ihnen Warnungen über GTID-inkompatible Transaktionen angezeigt werden, passen Sie Ihre Anwendung so an, dass sie nur GTID-kompatible Funktionen verwendet. Die DB-Instance darf keine Warnungen über GTID-inkompatible Transaktionen erzeugen, bevor Sie mit dem nächsten Schritt fortfahren.

1. Setzen Sie die GTID-Parameter für die GTID-basierte Replikation zurück, die anonyme Transaktionen erlaubt, bis die Lesereplikate alle verarbeitet haben.

   1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss die folgenden Parametereinstellungen haben:
      + `gtid_mode` – `ON_PERMISSIVE`
      + `enforce_gtid_consistency` – `ON`

   1. Wenn Sie die Parametergruppe der DB-Instance geändert haben, müssen Sie die DB-Instance neu starten. Wenn Sie die Parametergruppe des Lesereplikats geändert haben, müssen Sie das Lesereplikat neu starten.

1. Warten Sie, bis alle anonymen Transaktionen abgeschlossen sind. Um zu überprüfen, ob diese repliziert sind, gehen Sie wie folgt vor:

   1. Führen Sie die folgende Anweisung auf Ihrer Quell-DB-Instance aus. 

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS;
      ```

      **MySQL 5.7 und 8.0**

      ```
      SHOW MASTER STATUS;
      ```

      Notieren Sie die Werte in den Spalten `File` und `Position`.

   1. Verwenden Sie bei jedem Lesereplikat die Datei- und Positionsinformationen der Quell-Instance im vorherigen Schritt, um die folgende Abfrage auszuführen.

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

      Führen Sie die folgende Anweisung aus, wenn der Dateiname `mysql-bin-changelog.000031` lautet und die Position `107` ist.

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

      Wenn das Lesereplikat über die angegebene Position hinausgeht, wird die Abfrage sofort zurückgegeben. Andernfalls wartet die Funktion. Gehen Sie zum nächsten Schritt über, wenn die Abfrage für alle Lesereplikate zurückgegeben wird.

1. Setzen Sie die GTID-Parameter ausschließlich für die GTID-basierte Replikation zurück.

   1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss die folgenden Parametereinstellungen haben:
      + `gtid_mode` – `ON`
      + `enforce_gtid_consistency` – `ON`

   1. Starten Sie die DB-Instance und jedes Lesereplikat neu.

1. Führen Sie auf jedem Lesereplikat die folgende Prozedur aus.

   **MySQL 8.4 und höhere Hauptversionen**

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

   **MySQL 8.0 und niedrigere Hauptversionen**

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

# Deaktivieren einer GTID-basierten Replikation für eine MySQL-DB-Instance mit Read Replicas
<a name="mysql-replication-gtid.disabling"></a>

Sie können eine GTID-basierte Replikation für die eine GTID-basierte Replikation für eine MySQL-DB-Instance mit Lesereplikaten verwenden. 

**So deaktivieren Sie die GTID-basierte Replikation für eine MySQL-DB-Instance mit Lesereplikaten**

1. Führen Sie auf jedem Lesereplikat die folgende Prozedur aus:

   **MySQL 8.4 und höhere Hauptversionen**

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

   **MySQL 8.0 und niedrigere Hauptversionen**

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

1. Setzen Sie den Wert für `gtid_mode` auf `ON_PERMISSIVE` zurück.

   1. Die Parametergruppe, die der MySQL-DB-Instance zugeordnet ist, und jedes Read Replica muss den Wert für den Parameter `gtid_mode` auf `ON_PERMISSIVE` gesetzt haben.

      Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

   1. Starten Sie die MySQL-DB-Instance und jedes Read Replica neu. Weitere Informationen zum Neustarten finden Sie unter [Eine DB-Instance DB-Cluster neu starten](USER_RebootInstance.md).

1. Setzen Sie den Wert für `gtid_mode` auf `OFF_PERMISSIVE` zurück.

   1. Die Parametergruppe, die der MySQL-DB-Instance zugeordnet ist, und jedes Read Replica muss den Wert für den Parameter `gtid_mode` auf `OFF_PERMISSIVE` gesetzt haben.

   1. Starten Sie die MySQL-DB-Instance und jedes Read Replica neu.

1. Warten Sie, bis alle GTID-Transaktionen auf alle Lesereplikate angewendet wurden. Um zu überprüfen, ob diese angewendet werden, führen Sie die folgenden Schritte aus:

   1. Führen Sie für die MySQL-DB-Instance den folgenden Befehl aus:

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS
      ```

      **MySQL 5.7 und 8.0**

      ```
      SHOW MASTER STATUS
      ```

      Die Ausgabe sollte in etwa wie folgt aussehen.

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

      Notieren Sie die Datei und Position in Ihrer Ausgabe.

   1. Verwenden Sie bei jedem Lesereplikat die Datei- und Positionsinformationen der Quell-Instance im vorherigen Schritt, um die folgende Abfrage auszuführen.

      **MySQL 8.4 und MySQL 8.0.26 und höhere MySQL-8.0-Versionen**

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

      **MySQL 5.7**

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

      Führen Sie die folgende Anweisung aus, wenn der Dateiname `mysql-bin-changelog.000031` lautet und die Position `107` ist:

      **MySQL 8.4 und MySQL 8.0.26 und höhere MySQL-8.0-Versionen**

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

      **MySQL 5.7**

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

1. Setzen Sie die GTID-Parameter zurück, um die GTID-basierte Replikation zu deaktivieren:

   1. Die Parametergruppe, die der MySQL-DB-Instance zugeordnet ist, und jedes Read Replica muss die folgenden Parametereinstellungen haben:
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. Starten Sie die MySQL-DB-Instance und jedes Read Replica neu.