binlog는이 작업을 수행하는 순간에 특정 형식을 가지므로 MySQL (eh Oracle [여전히 내 언어를 풀 수 없음])이이 기능을 구축했지만 두 형식을 함께 도박하지 않기로 결정할 수 있습니다.
mysql을 다시 시작하지 않고 완전히 안전하게 재생하려면 다음을 시도하십시오.
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
마지막 binlog는 'MIXED'형식으로 남습니다. penultimiate (마지막으로) binlog는 이전 형식의 마지막 binlog를 닫을뿐입니다.
첫 번째 이전의 모든 기존 세션 은 FLUSH LOGS;
한 번 UNLOCK TABLES;
실행 된 마지막 binlog에 쓰기를 시작 합니다.
시도 해봐 !!!
경고
크레딧이 필요한 곳에 크레딧을 제공하면 제 답변은 @Jonathan의 답변 에서 실제로 피기 백됩니다 . 나는 그 위에 binlogs를 닫고 엽니 다. 그는 이것을 먼저 가져 오면 +1을받습니다.
업데이트 2011-10-12 13:58 EDT
이 작업을 활성 마스터에 수행하고 해당 마스터에서 복제하는 하나 이상의 슬레이브가있는 경우 새 형식의 릴레이 로그도 염려해야합니다. 할 수있는 일은 다음과 같습니다.
슬레이브에서 실행 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 변경 사항을 슬레이브에도 적용 할 수 있습니다.