Replizieren von Transaktionen mithilfe von GTIDs - 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.

Replizieren von Transaktionen mithilfe von GTIDs

Die folgenden gespeicherten Prozeduren steuern, wie Transaktionen mithilfe globaler Transaktionskennungen (GTIDs) mit RDS für MySQL repliziert werden. Weitere Informationen zur Verwendung der Replikation basierend auf GTIDs mit Aurora MySQL finden Sie unter Verwenden der GTID-basierten Replikation.

mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL Version 3)

Konfiguriert die ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS-Option der CHANGE REPLICATION SOURCE TO-Anweisung. Dadurch weist der Replikationskanal replizierten Transaktionen, die keine haben, eine GTID zu. Auf diese Weise können Sie die Binärprotokollreplikation von einer Quelle aus, die keine GTID-basierte Replikation verwendet, zu einem Replikat, durchführen, das dies tut. Weitere Informationen finden Sie unter CHANGE REPLICATION SOURCE TO Statement und Replikation von einer Quelle ohne GTIDs zu einer Replik mit GTIDs im MySQL-Referenzhandbuch.

Syntax

CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);

Parameter

gtid_option

Zeichenfolgenwert Die erlaubten Werte sind OFF, LOCAL, oder eine angegebene UUID.

Nutzungshinweise

Dieses Vorgehen hat die gleiche Wirkung wie das Absetzen der Anweisung CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option in Community MySQL.

GTID muss auf ON gesetzt werden, damit gtid_option auf LOCAL oder eine bestimmte UUID gesetzt wird.

Der Standardwert ist OFF, was bedeutet, dass die Funktion nicht verwendet wird.

LOCAL weist eine GTID einschließlich der eigenen UUID des Replikats (der server_uuid-Einstellung) zu.

Das Übergeben eines Parameters, bei dem es sich um eine UUID handelt, weist eine GTID zu, die die angegebene UUID enthält, z. B. die server_uuid-Einstellung für den Replikationsquellserver.

Beispiele

So deaktivieren Sie diese Funktion:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)

So verwenden Sie die eigene UUID des Replikats:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)

So verwenden Sie eine angegebene UUID:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)

mysql.rds_gtid_purged (Aurora-MySQL-Version 3)

Legt den globalen Wert der Systemvariablen gtid_purged auf einen bestimmten Satz von globalen Transaktionskennungen (GTID) fest. Die Systemvariable gtid_purged ist ein GTID-Satz, der aus den GTIDs aller Transaktionen besteht, für die auf dem Server ein Commit ausgeführt wurde, die jedoch in keiner binären Logdatei auf dem Server vorhanden sind.

Es gibt zwei Möglichkeiten, den Wert gtid_purged festzulegen, um Kompatibilität mit MySQL 8.0 zu ermöglichen:

  • Ersetzen Sie den Wert gtid_purged durch Ihren angegebenen GTID-Set.

  • Fügen Sie Ihren angegebenen GTID-Satz an den GTID-Satz an, den gtid_purged bereits enthält.

Syntax

So ersetzen Sie den Wert gtid_purged durch Ihren angegebenen GTID-Satz:

CALL mysql.rds_gtid_purged (gtid_set);

So fügen Sie den Wert gtid_purged Ihrem angegebenen GTID-Satz an:

CALL mysql.rds_gtid_purged (+gtid_set);

Parameter

gtid_set

Der Wert gtid_set muss eine Obermenge des aktuellen Werts gtid_purged sein und darf sich nicht mit gtid_subtract(gtid_executed,gtid_purged) überschneiden. Das heißt, der neue GTID-Satz muss alle GTIDs enthalten, die bereits in gtid_purged enthalten waren, und darf keine GTIDs in gtid_executed enthalten, die noch nicht gelöscht wurden. Der Parameter gtid_set darf auch keine GTIDs enthalten, die sich im globalen gtid_owned-Satz befinden, die GTIDs für Transaktionen, die gerade auf dem Server verarbeitet werden.

Nutzungshinweise

Die Prozedur mysql.rds_gtid_purged muss vom Hauptbenutzer ausgeführt werden.

Diese Prozedur wird für Aurora-MySQL-Version 3.04 und höher unterstützt.

Beispiele

Im folgenden Beispiel wird die GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 der globalen Variable gtid_purged zugewiesen.

CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_skip_transaction_with_gtid (Aurora-MySQL-Version 2 und 3)

Überspringt die Replikation einer Transaktion mit der angegebenen globalen Transaktionskennung (GTID) auf einer primären Instance von Aurora.

Sie können dieses Verfahren für die Notfallwiederherstellung verwenden, wenn eine bestimmte GTID-Transaktion bekanntermaßen ein Problem verursacht. Verwenden Sie diese gespeicherte Prozedur, um die problematische Transaktion zu überspringen. Problematisch sind beispielsweise Transaktionen, die die Replikation deaktivieren, wichtige Daten löschen oder dafür sorgen, dass die DB-Instance nicht mehr verfügbar ist.

Syntax

CALL mysql.rds_skip_transaction_with_gtid ( gtid_to_skip );

Parameter

gtid_to_skip

Die GTID der zu überspringenden Replikationstransaktion.

Nutzungshinweise

Die Prozedur mysql.rds_skip_transaction_with_gtid muss vom Hauptbenutzer ausgeführt werden.

Diese Prozedur wird für Aurora-MySQL-Version 2 und 3 unterstützt.

Beispiele

Im folgenden Beispiel wird die Replikation der Transaktion mit der GTID übersprunge 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_start_replication_until_gtid (Aurora-MySQL-Version 3)

Initiiert die Replikation von einer/einem Aurora-MySQL-DB-Cluster und stoppt die Replikation unmittelbar nach der angegebenen globalen Transaktionskennung (GTID).

Syntax

CALL mysql.rds_start_replication_until_gtid(gtid);

Parameter

gtid

Die GTID, nach der die Replikation stoppen soll.

Nutzungshinweise

Die Prozedur mysql.rds_start_replication_until_gtid muss vom Hauptbenutzer ausgeführt werden.

Diese Prozedur wird für Aurora-MySQL-Version 3.04 und höher unterstützt.

Das gespeicherte mysql.rds_start_replication_until_gtid-Verfahren wird für die verwaltete Replikation nicht unterstützt, darunter Folgendes:

Wenn der Parameter gtid eine Transaktion angibt, die bereits von dem Replikat ausgeführt wurde, wird die Replikation sofort gestoppt.

Beispiele

Das folgende Beispiel initiiert die Replikation und repliziert die Änderungen, bis die GTID erreicht wir 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');