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.
Themen
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
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 =
in Community MySQL.gtid_option
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_purgeddurch Ihren angegebenen GTID-Set. -
Fügen Sie Ihren angegebenen GTID-Satz an den GTID-Satz an, den
gtid_purgedbereits 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_setmuss eine Obermenge des aktuellen Wertsgtid_purgedsein und darf sich nicht mitgtid_subtract(gtid_executed,gtid_purged)überschneiden. Das heißt, der neue GTID-Satz muss alle GTIDs enthalten, die bereits ingtid_purgedenthalten waren, und darf keine GTIDs ingtid_executedenthalten, die noch nicht gelöscht wurden. Der Parametergtid_setdarf auch keine GTIDs enthalten, die sich im globalengtid_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');