5.2.4.1 바이너리 로깅 형식
서버는 바이너리 로그에 정보를 기록하기 위해 몇 가지 로깅 형식을 사용합니다. 채용되는 형식은 사용되는 MySQL의 버전에 따라 다릅니다. 기록 형식은 3 가지가 있습니다.
MySQL의 원래의 복제 기능은 마스터에서 슬레이브로 SQL 명령문의 전파에 따라있었습니다. 이것은 명령문 기반 로깅이라고합니다.
--binlog-format=STATEMENT
를 사용하여 서버를 시작하여이 형식을 사용할 수 있습니다.행 기반 로깅은 마스터는 개별 테이블 행에 미치는 영향을 나타내는 이벤트를 바이너리 로그에 기록합니다.
--binlog-format=ROW
를 사용하여 서버를 시작하면 서버가 행 기반 로깅을 사용하도록 할 수 있습니다.세 번째 옵션 인 혼합 형식 로깅도 선택할 수 있습니다. 혼합 형식 로깅의 경우 기본적으로 명령문 기반 로깅이 사용되지만 다음과 같은 특정 상황에서는 로깅 모드가 자동으로 행 기반으로 전환됩니다.
--binlog-format=MIXED
옵션을 지정해 mysqld를 시작하여 MySQL에 혼합 형식 로깅을 사용 할 수 있습니다.
MySQL 5.6에서는 기본 바이너리 로깅 형식은 STATEMENT
입니다.
기록 형식은 사용되는 스토리지 엔진에 의해 설정되거나 제한 될 수 있습니다. 따라서 다른 스토리지 엔진을 사용하는 마스터와 슬레이브 사이에서 특정 명령문을 복제 할 때 문제를 제거하는 데 도움이됩니다.
문 기반 복제는 비 결정적인 문 복제에 문제가있을 수 있습니다. 소정의 문이 문 기반 복제에 대한 안전 여부를 판단하기 위해 MySQL은 명령문 기반 로깅을 사용하여 문을 복제 할 수있는 것을 보장 할 수 있는지 여부를 결정합니다. MySQL이이를 보증 할 수없는 경우 잠재적으로 신뢰할 수없는 문에 표시하고 경고 Statement may not be safe to log in statement format을 발행합니다.
이러한 문제는 대신 MySQL의 행 기반 복제를 사용하여 해결할 수 있습니다.