Frage

Ich habe MySQL-Binlogs für die Replikation über GTID.

Ich versuche, ausgeführte Update / Insert-Anweisungen wie diese anzuzeigen:

mysqlbinlog --base64-output=DECODE-ROWS mysql-bin.000024

Aber alles, was ich sehe, ist so etwas, keine Spuren von Update oder insert stmt:

SET TIMESTAMP=1431681617/*!*/;
BEGIN
/*!*/;
# at 746987321
# at 746987392
# at 746987484
#150515 11:20:17 server id 1  end_log_pos 746987515 CRC32 0xeb874754    Xid = 997501767
COMMIT/*!*/;
# at 746987515
#150515 11:20:22 server id 1  end_log_pos 746987563 CRC32 0xc5ece64a    GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'a4ade293-c63a-11e4-94cf-005056944a56:2059057'/*!*/;
# at 746987563
#150515 11:20:22 server id 1  end_log_pos 746987650 CRC32 0x92296355    Query   thread_id=71622 exec_time=0 error_code=0

Ich bin mir nicht sicher über das Format / die Konfiguration der GTID-Replikation und wo ich danach suchen soll...

War es hilfreich?

Lösung

Es scheint, dass die Option --verbose hinzugefügt werden muss:

generasacodicetagpre.

In dem Ergebnis sehen Sie:

generasacodicetagpre.

@x sind die Tabellenspalten in ihrer Bestellung

Andere Tipps

Ich glaube nicht, dass GTID dein Problem ist.

Sie verwenden wahrscheinlich zeilenbasierte binäre Protokollierung

Führen Sie einen der folgenden Schritte aus, um dies zu überprüfen:

SELECT @@global.binlog_format;
SHOW GLOBAL VARIABLES LIKE 'binlog_format';
SELECT variable_value FROM information_schema.global_variables
WHERE variable_name='binlog_format';

Sie werden entweder sehen ROW oder MIXED.Die einzige Möglichkeit, die SQL zu sehen, müssten Sie festlegen binlog_format zu STATEMENT in my.cnf und starten Sie mysqld neu, da die MySQL-Dokumentation auf Replikation mit globalen Transaktionskennungen sagt im ersten Absatz:

Sie können entweder anweisungsbasierte oder zeilenbasierte Replikation mit GTIDs verwenden (siehe Abschnitt 17.1.2, "Replikationsformate");für optimale Ergebnisse empfehlen wir jedoch, das zeilenbasierte Format zu verwenden.

Trotzdem werden Sie das tatsächliche SQL mit den angegebenen Binärprotokollen nicht sehen.

Versuchen Sie dieses Tool binlog2sql , es analysiert das Bin-Protokoll, um Anweisungen zu aktualisieren / einzuführen.
Die Beschreibung der Nutzung ist auf Chinesisch, aber ich glaube, Sie können den Punkt aus dem Beispiel des Beispiels erhalten.

Ich lieber benutzen

generasacodicetagpre.

weil:

  • "Wenn NO - BASE64-Ausgabeoption angegeben ist, ist der Effekt derselbe wie --base64-output= auto"
  • "Die Kombination von --base64-output= decodieren-Zeilen und --verbose bietet eine bequeme Möglichkeit, Zeilesereignisse nur als SQL-Anweisungen anzuzeigen" (er drückt die BinLog-Anweisungen)

"angeben --verbose oder -v zweimal, um auch Datentypen und einige Metadaten für jede Spalte anzuzeigen."

Quelle der Zitate: MAN MySQLBINLOG

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top