これを行うと、binlogには特定の形式があるので、MySQL(Oracleはまだ私の舌を転がすことはできません)がこの機能を構築したにもかかわらず、2つの形式を一緒にギャンブルしないことを決定できます。
mysqlを再起動せずに完全に安全にプレイするには、次を試してください。
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
これにより、最後のバイナリログは「MIXED」形式のままになります。最後の(最後の隣の)binlogが存在するのは、単に以前の形式にあった最後のbinlogをクローズするだけです。
最初のセッションより前のすべての既存のセッションは、実行されるとFLUSH LOGS;
最後のbinlogに書き込みを開始しUNLOCK TABLES;
ます。
試してみる !!!
警告
クレジットが支払われるべき場所にクレジットを与えると、私の答えは本当に@Jonathan の答えに便乗します。その上でbinlogを閉じて開きます。彼はこれを最初に引き出したために+1を受け取ります。
更新2011年10月12日13時58分EDT
アクティブなマスターに対してこれを行い、そのマスターから複製する1つ以上のスレーブがある場合、リレーログも新しい形式であることに注意する必要があります。できることは次のとおりです。
スレーブで、実行します STOP SLAVE;
マスターで次を実行します。
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
スレーブで、実行します START SLAVE;
リレーログを実行STOP SLAVE;
およびSTART SLAVE;
ローテーションし、新しいエントリがどの形式になっても複製されます。binlog_formatの変更をスレーブにも適用することもできます。