Karena sebuah binlog akan memiliki format spesifik pada saat Anda melakukan ini, Anda dapat memutuskan untuk tidak bertaruh dengan dua format tersebut secara bersamaan walaupun MySQL (eh Oracle [masih tidak dapat berbicara]] membangun fitur ini.
Untuk memainkannya benar-benar aman tanpa me-restart mysql, coba yang berikut ini:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
Ini akan meninggalkan binlog terakhir dalam format 'MIXED'. Binlog penultimiate (di sebelah terakhir) ada hanya membawa penutupan binlog terakhir yang ada dalam format sebelumnya.
Semua sesi yang ada sebelum yang pertama FLUSH LOGS;
akan mulai menulis di binlog terakhir setelah UNLOCK TABLES;
dijalankan.
Cobalah !!!
CAVEAT
Memberi kredit di mana kredit jatuh tempo, jawaban saya benar-benar mendukung jawaban Jonathan . Saya hanya menutup dan membuka binlog di atas itu. Dia mendapat +1 karena membawa ini dulu.
UPDATE 2011-10-12 13:58 EDT
Jika Anda melakukan ini pada Master yang aktif dan ada satu atau lebih Budak yang mereplikasi dari Master itu, Anda perlu khawatir tentang log relai yang berada dalam format baru juga. Inilah yang dapat Anda lakukan:
Di Budak, jalankan STOP SLAVE;
Pada Master jalankan ini:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
Di Budak, jalankan START SLAVE;
Menjalankan STOP SLAVE;
dan START SLAVE;
memutar log relai dan menyebabkan entri baru direplikasi dalam format apa pun. Anda mungkin ingin menerapkan perubahan binlog_format di dalam slave juga.