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:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
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 schreiben UNLOCK 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:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
Laufen Sie auf dem Slave START SLAVE;
Durch Ausführen STOP SLAVE;
und START 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.