Loading...
MySQL 9.5 Reference Manual 9.5의 19.2.1 Replication Formats의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
19.2.1.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
19.2.1.2 Usage of Row-Based Logging and Replication
19.2.1.3 Determination of Safe and Unsafe Statements in Binary Logging
Replication은 binary log에 기록된 이벤트가 source에서 읽혀 replica에서 처리되기 때문에 동작합니다. 이벤트는 이벤트 유형에 따라 서로 다른 포맷으로 binary log 안에 기록됩니다. 사용되는 서로 다른 replication 포맷은 이벤트가 source의 binary log에 기록될 때 사용된 binary logging 포맷에 해당합니다.
binary logging 포맷과 replication 중에 사용되는 용어 간의 상관관계는 다음과 같습니다:
statement-based binary logging을 사용할 때, source는 SQL 문장을 binary log에 기록합니다. source에서 replica로의 replication은 replica에서 이 SQL 문장들을 실행하는 방식으로 동작합니다. 이는 statement-based replication(줄여서 SBR이라 할 수 있음)이라고 하며, MySQL statement-based binary logging 포맷에 해당합니다.
row-based logging을 사용할 때, source는 개별 테이블 행이 어떻게 변경되었는지를 나타내는 이벤트를 binary log에 기록합니다. source에서 replica로의 replication은 테이블 행에 대한 변경을 나타내는 이벤트를 replica로 복사하는 방식으로 동작합니다. 이는 row-based replication(줄여서 RBR이라 할 수 있음)이라고 합니다.
Row-based logging이 기본(default) 방식입니다.
mixed format을 사용하는 replication은 mixed-based replication 또는 mixed-format replication이라 불립니다. 자세한 내용은 Section 7.4.4.3, “Mixed Binary Logging Format”을 참조하십시오.
NDB Cluster.
MySQL NDB Cluster 9.5에서 기본 binary logging 포맷은 ROW입니다. NDB Cluster Replication은 row-based replication을 사용하며, NDB 스토리지 엔진은 statement-based replication과 호환되지 않습니다. 자세한 내용은 Section 25.7.2, “General Requirements for NDB Cluster Replication”을 참조하십시오.
MIXED 포맷을 사용할 때, binary logging 포맷은 부분적으로 사용 중인 스토리지 엔진과 실행 중인 문장에 의해 결정됩니다. mixed-format logging과 서로 다른 logging 포맷 지원을 규정하는 규칙에 대한 자세한 내용은 Section 7.4.4.3, “Mixed Binary Logging Format”을 참조하십시오.
실행 중인 MySQL server에서 logging 포맷은 binlog_format 서버 시스템 변수(server system variable)를 설정함으로써 제어됩니다. 이 변수는 세션 또는 글로벌 범위로 설정할 수 있습니다. 새로운 설정이 언제, 어떤 방식으로 적용되는지에 대한 규칙은 다른 MySQL 서버 시스템 변수와 동일합니다.
현재 세션에 대해 변수를 설정하면 해당 세션이 종료될 때까지만 유효하며, 이 변경은 다른 세션에서는 보이지 않습니다. 변수를 글로벌하게 설정하면, 변경 이후에 접속하는 클라이언트에는 적용되지만, 변경 시점에 이미 존재하는 어떤 클라이언트 세션(변경을 수행한 세션 포함)에는 적용되지 않습니다. 글로벌 시스템 변수 설정을 서버 재시작 간에도 지속적으로 적용되도록 하려면 옵션 파일에 설정해야 합니다. 자세한 내용은 Section 15.7.6.1, “SET Syntax for Variable Assignment”을 참조하십시오.
runtime 중에 binary logging 포맷을 변경할 수 없거나, 변경 시 replication이 실패하게 되는 조건들이 있습니다. 이에 대해서는 Section 7.4.4.2, “Setting The Binary Log Format”을 참조하십시오.
글로벌 binlog_format 값을 변경하려면 글로벌 시스템 변수를 설정하기에 충분한 권한이 필요합니다. 세션 binlog_format 값을 변경하려면 제한된 세션 시스템 변수를 설정하기에 충분한 권한이 필요합니다. Section 7.1.9.1, “System Variable Privileges”를 참조하십시오.
참고
binary logging 포맷(binlog_format 시스템 변수)을 변경하는 기능은 MySQL 8.0에서 deprecated되었습니다. 향후 MySQL 버전에서는 binlog_format이 완전히 제거되고, row-based 포맷이 MySQL에서 사용되는 유일한 logging 포맷이 될 것으로 예상할 수 있습니다.
statement-based 및 row-based replication 포맷은 서로 다른 이슈와 제한 사항을 가집니다. 이들의 상대적인 장단점 비교는 Section 19.2.1.1, “Advantages and Disadvantages of Statement-Based and Row-Based Replication”을 참조하십시오.
statement-based replication을 사용할 때, 저장 루틴이나 트리거를 replication하는 데에 문제가 발생할 수 있습니다. 이러한 문제는 대신 row-based replication을 사용하여 피할 수 있습니다. 자세한 내용은 Section 27.9, “Stored Program Binary Logging”을 참조하십시오.
19.2 Replication Implementation
19.2.2 Replication Channels