17.1.2 Replication Formats
복제가 기능하기는 바이너리 로그에 기록 된 이벤트가 마스터에서 읽은 슬레이브로 처리되기 때문입니다. 이벤트는 이벤트 유형에 따라 다양한 형식으로 바이너리 로그에 기록됩니다. 사용되는 다양한 복제 형식은 이벤트가 마스터의 바이너리 로그에 기록 된 데 사용 된 바이너리 로깅 형식으로 대응하고 있습니다. 바이너리 로깅 형식 및 복제에 사용되는 용어와의 관계는 다음과 같습니다.
명령문 기반 바이너리 로깅을 사용하는 경우, 마스터는 SQL 문을 바이너리 로그에 기록합니다. 마스터에서 슬레이브로 복제 슬레이브 SQL 문을 실행하여 작동합니다. 이것은 문 기반 복제 (SBR 단축되는 경우가 많다)라고하며, 표준 MySQL 명령문 기반 바이너리 로깅 형식을 지원합니다. MySQL 버전 5.1.4 이전의 복제 기능은이 형식 만 사용되었습니다.
행 기반 로깅을 사용하는 경우, 마스터는 각 테이블 행이 어떻게 변경되었는지를 나타내는 이벤트를 바이너리 로그에 기록합니다. 마스터에서 슬레이브로 복제 테이블 행이 변경된 것을 나타내는 이벤트를 슬레이브에 복사하는 방식으로 작동합니다. 이것은 행 기반 복제 (RBR 단축되는 경우가 많다)이라고합니다. 행 기반 복제에서는 마스터는 각 테이블 행이 어떻게 변경되었는지를 나타내는 이벤트를 바이너리 로그에 기록합니다.
변경 로그가 기록 될 때 명령문 기반 및 행 기반의 어느 쪽이 적합했는지에 따라 이러한 기록의 조합을 사용하도록 MySQL을 구성 할 수 있습니다. 이것은 혼합 형식의 로깅이라고합니다. 혼합 형식의 로깅을 사용하는 경우 기본적으로 문 기반 로깅이 사용됩니다. 문에 따라 또한 사용되는 스토리지 엔진에 따라 로그는 특정한 경우에 행 기반으로 자동으로 전환됩니다. 혼합 형식을 사용하는 복제는 종종 혼합 기반 복제 또는 혼합 형식의 복제라고합니다. 자세한 내용은 섹션 5.2.4.3 "혼합 형식의 바이너리 로깅 형식" 을 참조하십시오.
MySQL 5.6에서는 문 기반의 형식이 기본입니다.
MySQL Cluster 모든 MySQL Cluster NDB 7.3 및 MySQL Cluster NDB 7.4 릴리스에 대한 기본 바이너리 로깅 형식은 混合
입니다. MySQL Cluster Replication은 항상 행 기반 복제를 사용하고 NDB
스토리지 엔진은 문 기반 복제를 사용할 수 없습니다. 자세한 내용은 섹션 18.6.2 "MySQL Cluster 복제의 일반 요구 사항" 을 참조하십시오.
混合
형식을 사용하는 경우, 바이너리 로깅 형식은 사용되는 스토리지 엔진 실행되는 문에 의해 어느 정도 결정됩니다. 혼합 형식의 로깅 및 다른 로깅 형식의 지원을 관리하는 규칙의 자세한 내용은 섹션 5.2.4.3 "혼합 형식의 바이너리 로깅 형식" 을 참조하십시오.
실행중인 MySQL 서버의 로그 형식은 binlog_format
서버 시스템 변수를 설정하여 제어됩니다. 이 변수는 세션 또는 글로벌 범위에서 설정할 수 있습니다. 새로운 설정이 적용되는시기와 방법을 관리하는 규칙은 다른 MySQL 서버 시스템 변수와 동일합니다. 현재의 세션 변수를 설정하면 세션이 끝날 때까지 지속 변경은 다른 세션에 가시가 아니라 변수를 전역으로 설정하면 활성화하려면 서버를 다시 시작해야합니다. 자세한 내용은 섹션 13.7.4 "SET 구문" 을 참조하십시오.
런타임 바이너리 로깅 형식을 변경할 수 없다, 즉 그렇게하면 복제가 실패하는 경우가 있습니다. 섹션 5.2.4.2 "바이너리 로그 형식 설정" 을 참조하십시오.
글로벌 또는 세션 binlog_format
값을 설정하려면 SUPER
권한이 필요합니다.
문베이스 및 행 기반 복제 형식은 다른 문제 및 제한이 있습니다. 관련된 장점과 단점의 비교는 섹션 17.1.2.1 "문 기반 및 열 기반 리플리케이션의 장점과 단점" 을 참조하십시오.
문 기반 복제는 스토어드 루틴 또는 트리거의 복제 문제가 발생할 수 있습니다. 대신 행 기반 복제를 사용하면 이러한 문제를 해결할 수 있습니다. 자세한 내용은 섹션 20.7 "저장 프로그램의 바이너리 로깅" 을 참조하십시오.