Wegen der folgenden Warnung in mysqld.log
:
[Warnung] Unsichere Anweisung, die seit BINLOG_FORMAT = STATEMENT im Anweisungsformat in das Binärprotokoll geschrieben wurde. Die Anweisung ist nicht sicher, da sie eine LIMIT-Klausel verwendet. Dies ist nicht sicher, da die Anzahl der enthaltenen Zeilen nicht vorhergesagt werden kann.
Ich möchte das Replikationsformat ändern MIXED
.
Aber laut dem MySQL-Dokument:
Das Umschalten des Replikationsformats zur Laufzeit wird nicht empfohlen, wenn temporäre Tabellen vorhanden sind, da temporäre Tabellen nur bei anweisungsbasierter Replikation protokolliert werden, während sie bei zeilenbasierter Replikation nicht protokolliert werden.
Die Frage ist also, wie ich feststellen kann, ob temporäre Tabellen vorhanden sind, um das Binärprotokollformat sicher umzuschalten.
quelle
Antworten:
Da ein Binlog in dem Moment, in dem Sie dies tun, ein bestimmtes Format hat, können Sie sich dafür entscheiden, nicht mit den beiden Formaten zusammen zu spielen, obwohl MySQL (eh Oracle [kann mir immer noch nicht die Zunge abreißen]) diese Funktion erstellt hat.
Versuchen Sie Folgendes, um völlig sicher zu gehen, ohne dass ein Neustart von MySQL erforderlich ist:
Dies wird das letzte Binlog im 'MIXED'-Format belassen. Das vorletzte (vorletzte) Binlog existiert nur, um das letzte Binlog zu schließen, das im vorherigen Format war.
Alle vorhandenen Sitzungen vor der ersten
FLUSH LOGS;
werden ausgeführt und beginnen damit, in das letzte Binlog zu schreibenUNLOCK TABLES;
.Versuche es !!!
VORBEHALT
Wenn ich Kredit gebe, wo Kredit fällig ist, ist meine Antwort wirklich huckepack von @ Jonathans Antwort . Ich schließe und öffne darüber hinaus Binlogs. Er bekommt eine +1 dafür, dass er dies zuerst herausholt.
UPDATE 2011-10-12 13:58 EDT
Wenn Sie dies mit einem aktiven Master tun und es gibt einen oder mehrere Slaves, die von diesem Master repliziert werden, müssen Sie sich Sorgen machen, dass die Relay-Protokolle auch im neuen Format vorliegen. Folgendes können Sie tun:
Laufen Sie auf dem Slave
STOP SLAVE;
Auf dem Master laufen diese:
Laufen Sie auf dem Slave
START SLAVE;
Durch Ausführen
STOP SLAVE;
undSTART SLAVE;
Drehen der Relay-Protokolle werden die neuen Einträge unabhängig vom Format repliziert. Möglicherweise möchten Sie die binlog_format-Änderung auch im Slave anwenden.quelle
Um binlog_format zur Laufzeit zu wechseln, können Sie Folgendes tun:
Dadurch werden alle NEUEN Sitzungen auf das gemischte Binlog-Format eingestellt. Alle vorhandenen Sitzungen bleiben bis zu ihrem Ende unverändert.
Sie können auch
set session binlog_format = 'MIXED';
manuell vorgehen, um Probleme mit der Sitzung spezifisch zu lösen.quelle