Wenn Sie eine ausführen
SHOW MASTER STATUS\G
Sie werden so etwas sehen:
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000299
Position: 780437462
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 075d81d6-8d7f-11e3-9d88-b4b52f517ce4:1-616637650,
e907792a-8417-11e3-a037-b4b52f51dbf8:1-25385296642
1 row in set (0.00 sec)
Denn wenn GTID aktiviert ist, haben alle Server ihre eigene UUID und es gibt Transaktionen. Ich nehme an, Sie haben den Speicherauszug mit mysqldump erstellt, und wenn Sie sich den Anfang dieser Datei ansehen, werden Sie etwas Ähnliches finden:
--
-- GTID state at the beginning of the backup
--
SET @@GLOBAL.GTID_PURGED='075d81d6-8d7f-11e3-9d88-b4b52f517ce4:1-616648986,
e907792a-8417-11e3-a037-b4b52f51dbf8:1-25385296642';
Dies ist der Befehl, der nicht ausgeführt werden kann.
Sie haben folgende Möglichkeiten:
Entfernen Sie diesen Befehl aus der MySQL-Dump-Datei. Einfach löschen. Alle Einfügungen werden auf dem Slave als lokale Transaktionen angezeigt
Wenn Sie dies verhindern möchten, können Sie auch den Master auf dem Slave zurücksetzen
mysql> RESET MASTER;
Dieser Befehl bereinigt die Variable 'Executed_Gtid_Set' auf dem Slave, sodass Sie die Dumpfile direkt importieren können, und die zuvor erwähnte Variable set_global_gtid_purged wird aktiv
Wenn Sie den mysqldump erstellen, können Sie den GTID-Setup-Teil überspringen, indem Sie den --set-gtid-purged=OFF
Parameter für mysqldump hinzufügen .
HINWEIS:
Wenn sich die GTID-Teilmenge auf dem Master zwischen Master und Slave unterscheidet (wenn Sie dies in einem Replikationssetup verwenden möchten), funktioniert die Replikation nicht. Ich würde einen binären Speicherauszug und eine Wiederherstellung empfehlen, da die GTID des Slaves genau auf die des Masters eingestellt wird.
Mit GTID treten viele neue Probleme auf, aber Ihr Replikat-Setup wird konsistenter. Es lohnt sich, damit zu arbeiten.