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
Die GTID-basierte Replikation wird für Aurora-MySQL-Version 2 und 3 unterstützt.
Themen
Ü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 |
---|---|---|
|
|
|
|
|
|
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
undON_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. MitON_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
-
Erstellen oder bearbeiten Sie eine DB-Clusterparametergruppe unter Verwendung der folgenden Parametereinstellungen:
-
gtid_mode
–ON
oderON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
Ordnen Sie die DB-Clusterparametergruppe dem Aurora MySQL-Cluster zu. Befolgen Sie hierzu die Verfahren unter Arbeiten mit Parametergruppen.
-
(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
-
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);
-
Setzen Sie den Wert für
gtid_mode
aufON_PERMISSIVE
zurück.-
Stellen Sie sicher, das bei der DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist,
gtid_mode
aufON_PERMISSIVE
eingestellt ist.Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter Arbeiten mit Parametergruppen.
-
Starten Sie den Aurora MySQL-DB-Cluster neu.
-
-
Setzen Sie den Wert für
gtid_mode
aufOFF_PERMISSIVE
zurück.-
Stellen Sie sicher, das bei der DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist,
gtid_mode
aufOFF_PERMISSIVE
eingestellt ist. -
Starten Sie den Aurora MySQL-DB-Cluster neu.
-
-
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:
-
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.
-
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);
-
-
Setzen Sie die GTID-Parameter zurück, um die GTID-basierte Replikation zu deaktivieren.
-
Die DB-Clusterparametergruppe, die dem Aurora MySQL-Cluster zugeordnet ist, muss über die folgenden Parametereinstellungen verfügen:
-
gtid_mode
–OFF
-
enforce_gtid_consistency
–OFF
-
-
Starten Sie den Aurora MySQL-DB-Cluster neu.
-