MySQL-Tutorial In der Spalte „MySQL-Tutorial“ wird der GTID-basierte Replikationsmodus von MySQL vorgestellt
GTID-DefinitionGTID (Global Transaction Identifier) Globale Transaktionskennung. GTID ist eine wesentliche Verbesserung der Master-Slave-Replikation, die in Version 5.6 eingeführt wurde. Im Vergleich zur vorherigen Version der Master-Slave-Replikation basierend auf Binlog-Dateien + Position weist die GTID-basierte Master-Slave-Replikation eine höhere Datenkonsistenz und robustere Master-Slave-Daten auf Replikation und Failover sind weniger fehleranfällig und erfordern selten menschliches Eingreifen.
GTID = server_uuid:transaction_idDie GTID wird normalerweise in der MySQL-Systemvariablen @@GLOBAL.gtid_executed
und der Systemtabelle mysql.gtid_executed aufgezeichnet. Code > befindet sich die Systemvariable <code>@@GLOBAL.gtid_executed
im Speicher und gehört zum nicht-persistenten Speicher, während die Systemtabelle mysql.gtid_executed zum persistenten Speicher gehört. Die Vorteile von GTID gegenüber der herkömmlichen Replikation Wie zuvor sind /code> und log_pos
GTID kontinuierlich und ohne Lücken, was Datenkonsistenz und Nullverlust gewährleistet. Der Replikationscluster verfügt über eine einheitliche Methode zur Identifizierung des Replikationsstandorts, was die Clusterverwaltung vereinfacht
GTID-Einschränkungen
CREATE TABLE…..SELECT
kann nicht verwendet werden@@GLOBAL.gtid_executed
以及系统表mysql.gtid_executed
中,系统变量@@GLOBAL.gtid_executed
在内存中,属于非持久化存储,而系统表mysql.gtid_executed属于持久化存储。
GTID比传统复制的优势
log_file
和log_pos
GTID的限制
CREATE TABLE…..SELECT
不能使用CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE
不能在事务内使用主从复制流程图
GTID生命周期
mysql.gtid_executed
表中。@@GLOBAL.gtid_executed
,但是系统表 mysql.gtid_executed 则不会,应为有部分gtid还在binlog中,需要等到binlog轮转或者mysqlServer关闭时才会写入到mysql。gtid_executed
表中.gtid_next
设置为该gtid值,使得从库使用该gtid值应用其对应的事务gtid_owned
系统变量记录着谁拥有该GTID.传统更换GTID复制模式
global.read_only
CREATE TEMPORARY TABLE und DROP TEMPORARY TABLE
können nicht innerhalb einer Transaktion verwendet werdenmysql.gtid_executed
geschrieben. 🎜🎜Wenn eine Transaktion übermittelt wird, wird die GTID der Transaktion schnell zur Systemvariablen @@GLOBAL.gtid_executed
hinzugefügt, die Systemtabelle mysql.gtid_executed jedoch nicht, da noch einige GTID vorhanden sind Beim binlog müssen Sie warten, bis die binlog-Rotation oder der mysqlServer heruntergefahren ist, bevor Sie in mysql schreiben. gtid_executed
-Tabelle 🎜🎜Das Binlog der Hauptbibliothek wird über das Master-Slave-Replikationsprotokoll an die Slave-Bibliothek übertragen und in das Relay-Protokoll der Slave-Bibliothek (Relay-Log) und des Slaves geschrieben Die Bibliothek liest die GTID des Relay-Protokolls und die entsprechenden Transaktionsinformationen und setzt gtid_next
auf den GTID-Wert, sodass die Slave-Bibliothek den GTID-Wert verwendet, um ihre entsprechende Transaktion anzuwenden🎜🎜Wenn mehrere Threads gleichzeitig dieselbe Transaktion anwenden, B. mehrere Threads, die gtid_next auf denselben Wert setzen. Die Systemvariable gtid_owned
zeichnet auf, wer die GTID besitzt.🎜🎜🎜🎜🎜🎜Traditioneller Ersatz-GTID-Replikationsmodus 🎜🎜global.read_only
auf allen Servern ein und warten Sie, bis der Master-Slave-Server synchronisiert ist; mysql> SET @@global.read_only = ON;🎜🎜Starten Sie den Master-Slave-Server nacheinander neu; 🎜🎜Verwenden Sie Change Master, um die Master-Slave-Konfiguration zu aktualisieren.
mysql> CHANGE MASTER TO MASTER_HOST = host, MASTER_PORT = port, MASTER_USER = user, MASTER_PASSWORD = password, MASTER_AUTO_POSITION = 1;5. Überprüfen Sie die Master-Slave-Replikation
Das obige ist der detaillierte Inhalt vonVerstehen Sie den GTID-basierten Replikationsmodus von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!