เนื่องจาก binlog จะมีรูปแบบเฉพาะในขณะที่คุณทำเช่นนี้คุณอาจตัดสินใจที่จะไม่เล่นการพนันกับทั้งสองรูปแบบด้วยกันแม้ว่า MySQL (eh Oracle (ยังไม่สามารถรีดลิ้นของฉัน]) ได้สร้างคุณลักษณะนี้ขึ้นมา
หากต้องการเล่นอย่างปลอดภัยโดยไม่ต้องรีสตาร์ท mysql ให้ลองทำดังนี้:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
การดำเนินการนี้จะทำให้ binlog สุดท้ายอยู่ในรูปแบบ 'MIXED' binlog แบบย่อ (ถัดจากครั้งสุดท้าย) มีอยู่เพียงแค่นำการปิด binlog ล่าสุดที่อยู่ในรูปแบบก่อนหน้านี้
เซสชันที่มีอยู่ทั้งหมดก่อนหน้าแรกFLUSH LOGS;
จะเริ่มเขียนใน binlog ล่าสุดเมื่อUNLOCK TABLES;
มีการดำเนินการ
ให้มันลอง !!!
ข้อแม้
การให้เครดิตที่เป็นเครดิตเนื่องจากคำตอบของฉันเป็นจริง piggybacking ออกจาก@ คำตอบที่โจนาธาน ฉันเพิ่งปิดและเปิด binlogs ที่ด้านบนของที่ เขาได้รับ +1 สำหรับการนำสิ่งนี้ออกก่อน
อัพเดท 2011-10-12 13:58 EDT
หากคุณทำสิ่งนี้กับ Master ที่มีการใช้งานอยู่และมี Slaves หนึ่งตัวหรือมากกว่าเลียนแบบจาก Master นั้นคุณต้องกังวลเกี่ยวกับบันทึกการถ่ายทอดที่อยู่ในรูปแบบใหม่เช่นกัน นี่คือสิ่งที่คุณสามารถทำได้:
บน Slave ให้เรียกใช้ STOP SLAVE;
ที่อาจารย์ใช้สิ่งเหล่านี้:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
บน Slave ให้เรียกใช้ START SLAVE;
การเรียกใช้STOP SLAVE;
และSTART SLAVE;
หมุนล็อกรีเลย์และทำให้รายการใหม่ถูกจำลองแบบไม่ว่าจะมาในรูปแบบใด คุณอาจต้องการใช้การเปลี่ยนแปลง binlog_format ในสลาฟเช่นกัน