Verwenden der GTID-basierten Replikation - Amazon Aurora

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

Im folgenden Inhalt wird erklärt, wie Sie Global Transaction Identifiers (GTIDs) mit der Binärprotokollreplikation (Binlog) MySQL MySQL-DB-Instances verwenden. zwischen einem Aurora MySQL-Cluster und einer externen Quelle.

Anmerkung

Bei Aurora können Sie diese Funktion nur mit Aurora-MySQL-Clustern verwenden, welche die binlog-Replikation in eine externe oder aus einer externen MySQL-Datenbank nutzen. Bei der anderen Datenbank kann es sich um eine Amazon-RDS-MySQL-Instance, eine lokale MySQL-Datenbank oder einen Aurora-DB-Cluster in einer anderen AWS-Region handeln. Weitere Informationen zum Konfigurieren dieser Art von Replikation finden Sie unter Replizieren zwischen Aurora und MySQL oder zwischen Aurora und einem anderen Aurora-DB-Cluster (binäre Protokollreplikation).

Wenn Sie die Binlog-Replikation verwenden und mit der GTID-basierten Replikation mit MySQL nicht vertraut sind, finden Sie weitere Informationen unter Replikation mit globalen Transaktions-Identifikatoren in der MySQL-Dokumentation.

Die GTID-basierte Replikation wird für Aurora-MySQL-Version 2 und 3 unterstützt.

Übersicht über globale Transaktionskennungen (GTIDs)

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.

Anmerkung

Wenn Aurora Daten unter den DB-Instances in einem Cluster synchronisiert, steht dieser Replikationsmechanismus in keinem Zusammenhang mit dem Binärprotokoll (binlog). Bei Aurora MySQL ist die GTID-basierte Replikation nur anwendbar, wenn Sie auch eine binlog-Replikation verwenden, um eine Replikation aus einer externen MySQL-kompatiblen Datenbank in einen oder aus einem Aurora MySQL-DB-Cluster durchführen.

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.

Sie verwenden die GTID-basierte Replication gewöhnlich mit Aurora, wenn Sie eine Replikation aus einer externen MySQL-kompatiblen Datenbank in einen Aurora-Cluster durchführen. Sie können diese Replikationskonfiguration als Teil einer Migration von einer lokalen oder einer Amazon RDS-Datenbank in Aurora MySQL einrichten. Wenn die externe Datenbank bereits GTIDs verwendet, kann der Replikationsvorgang durch Aktivieren der GTID-basierten Replikation für den Aurora-Cluster vereinfacht werden.

Sie konfigurieren die GTID-basierte Replikation für einen Aurora MySQL-Cluster, indem Sie zuerst die relevanten Konfigurationsparameter in einer DB-Clusterparametergruppe festlegen. Sie ordnen diese Parametergruppe dann dem Cluster zu.

Parameter für die GTID-basierte Replikation

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 wird der Parameter als AWS Management Console angezeigt. gtid_mode gtid-mode

Bei einer GTID-basierten Replikation verwenden Sie diese Einstellungen für die DB-Cluster-Parametergruppe für Ihren Aurora MySQL-DB-Cluster:

  • ON und ON_PERMISSIVE gelten nur für die ausgehende Replikation von einem Aurora-MySQL-Cluster. Beide Werte bewirken, dass Ihr Aurora-DB-Cluster GTIDs für Transaktionen verwenden, die zu einer externen Datenbank repliziert werden. ON erfordert, dass die externe Datenbank ebenfalls die GTID-basierte Replikation verwendet. Mit ON_PERMISSIVE ist die GTID-basierte Replikation auf der externen Datenbank optional.

  • Wenn OFF_PERMISSIVE eingestellt ist, bedeutet dies, dass Ihr Aurora-DB-Cluster die eingehende Replikation von einer externen Datenbank akzeptieren kann. Dies ist ungeachtet davon möglich, ob die externe Datenbank eine GTID-basierte Replikation verwendet oder ob nicht.

  • Wenn OFF eingestellt ist, bedeutet dies, dass Ihr Aurora-DB-Cluster nur eingehende Replikation von externen Datenbanken akzeptiert, die keine GTID-basierte Replikation verwenden.

Tipp

Eingehende Replikation ist das geläufigste binlog-Replikationsszenario für Aurora MySQL-Cluster. Für eine eingehende Replikation empfehlen wir, dass Sie den GTID-Modus auf einzustelle OFF_PERMISSIVE. Diese Einstellung ermöglicht eine eingehende Replikation aus externen Datenbanken ungeachtete der GTID-Einstellungen an der Replikationsquelle.

Weitere Informationen zu Parametergruppen finden Sie unter Arbeiten mit Parametergruppen.

Konfigurieren einer GTID-basierten Replikation für einen Aurora MySQL-Cluster

Wenn die GTID-basierte Replikation für einen Aurora MySQL-DB-Cluster aktiviert ist, gelten die GTID-Einstellungen sowohl für eine eingehende als auch für eine ausgehende binlog-Replikation.

So aktivieren Sie eine GTID-basierte Replikation für einen Aurora MySQL-Cluster
  1. Erstellen oder bearbeiten Sie eine DB-Clusterparametergruppe unter Verwendung der folgenden Parametereinstellungen:

    • gtid_modeON oder ON_PERMISSIVE

    • enforce_gtid_consistencyON

  2. Ordnen Sie die DB-Clusterparametergruppe dem Aurora MySQL-Cluster zu. Befolgen Sie hierzu die Verfahren unter Arbeiten mit Parametergruppen.

  3. (Optional) Geben Sie an, wie GTIDs Transaktionen zugewiesen werden, die sie nicht enthalten. Rufen Sie dazu die Gespeicherte Prozedur in mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL Version 3) auf.

Deaktivieren einer GTID-basierten Replikation für einen Aurora MySQL-DB-Cluster

Sie können eine GTID-basierte Replikation für einen Aurora-MySQL-DB-Cluster deaktivieren. Dies bedeutet, dass der Aurora-Cluster keine ein- oder ausgehende binlog-Replikation mit externen Datenbanken ausführen kann, die .

Anmerkung

Im folgenden Verfahren bezieht sich Lesereplikat auf das Replikationsziel in einer Aurora-Konfiguration mit binlog-Replikation in eine externe oder aus einer externen Datenbank. Es bezieht sich nicht auf die schreibgeschützten Aurora Replica-DB-Instances. Wenn ein Aurora-Cluster beispielsweise eine eingehende Replikation aus einer externen Quelle akzeptiert, dann fungiert die primäre Aurora-Instance als Lesereplikat der binlog-Replikation.

Weitere Informationen zu den in diesem Abschnitt erwähnten gespeicherten Verfahren finden Sie unter Von Aurora MySQL gespeicherte Prozeduren.

GTID-basierte Replikation für einen Aurora-MySQL-DB-Cluster deaktivieren
  1. Führen Sie auf den Aurora-Repliken das folgende Verfahren aus:

    Für Version 3

    CALL mysql.rds_set_source_auto_position(0);

    Für Version 2

    CALL mysql.rds_set_master_auto_position(0);
  2. Setzen Sie den Wert für gtid_mode auf ON_PERMISSIVE zurück.

    1. Stellen Sie sicher, das bei der DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist, gtid_mode auf ON_PERMISSIVE eingestellt ist.

      Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter Arbeiten mit Parametergruppen.

    2. Starten Sie den Aurora MySQL-DB-Cluster neu.

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

    1. Stellen Sie sicher, das bei der DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist, gtid_mode auf OFF_PERMISSIVE eingestellt ist.

    2. Starten Sie den Aurora MySQL-DB-Cluster neu.

  4. Warten Sie, bis alle GTID-Transaktionen auf die primäre Aurora-Instance angewendet wurden. Gehen Sie wie folgt vor, um zu überprüfen, ob diese angewendet werden:

    1. Führen Sie auf der primären Aurora-Instance den Befehl SHOW MASTER STATUS aus.

      Ihre Ausgabe sollte der folgenden Ausgabe ähneln.

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

      Notieren Sie die Datei und Position in Ihrer Ausgabe.

    2. Verwenden Sie für jedes Read Replica die Datei- und Positionsinformationen aus der Quellinstanz im vorherigen Schritt, um die folgende Abfrage auszuführen:

      Für Version 3

      SELECT SOURCE_POS_WAIT('file', position);

      Für Version 2

      SELECT MASTER_POS_WAIT('file', position);

      Wenn der Dateiname beispielsweise lautet mysql-bin-changelog.000031 und die Position lautet107, führen Sie die folgende Anweisung aus:

      Für Version 3

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

      Für Version 2

      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
  5. Setzen Sie die GTID-Parameter zurück, um die GTID-basierte Replikation zu deaktivieren.

    1. Die DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist, muss über die folgenden Parametereinstellungen verfügen:

      • gtid_modeOFF

      • enforce_gtid_consistencyOFF

    2. Starten Sie den Aurora MySQL-DB-Cluster neu.