Loading...
MySQL 9.5 Reference Manual 9.5의 19.2.5 How Servers Evaluate Replication Filtering Rules의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
19.2.5.1 Evaluation of Database-Level Replication and Binary Logging Options
19.2.5.2 Evaluation of Table-Level Replication Options
19.2.5.3 Interactions Between Replication Filtering Options
19.2.5.4 Replication Channel Based Filters
Replication source 서버가 어떤 스테이트먼트를 바이너리 로그에 기록하지 않으면, 그 스테이트먼트는 복제되지 않습니다. 서버가 그 스테이트먼트를 로그에 기록하는 경우, 그 스테이트먼트는 모든 레플리카로 전송되고 각 레플리카는 그것을 실행할지 무시할지 여부를 자체적으로 결정합니다.
source에서는, --binlog-do-db 및
--binlog-ignore-db 옵션을 사용하여 어떤 데이터베이스의 변경 사항을 로그에 기록할지 제어함으로써 바이너리 로깅을 제어할 수 있습니다. 서버가 이러한 옵션을 평가할 때 사용하는 규칙에 대한 설명은
Section 19.2.5.1, “Evaluation of Database-Level Replication and Binary Logging Options”을 참조하십시오. 이러한 옵션은 어떤 데이터베이스와 테이블이
복제되는지를 제어하는 데 사용하면 안 됩니다. 대신, 레플리카에서 필터링을 사용하여 레플리카에서 실행되는 이벤트를 제어하십시오.
레플리카 측에서는, source로부터 수신한 스테이트먼트를 실행할지 무시할지에 대한 결정이 레플리카가 시작될 때 지정된
--replicate-* 옵션에 따라 이루어집니다. (자세한 내용은 Section 19.1.6, “Replication and Binary Logging Options and Variables”을 참조하십시오.) 이러한 옵션에 의해 제어되는 필터는
CHANGE REPLICATION FILTER 스테이트먼트를 사용하여 동적으로 설정할 수도 있습니다.
이러한 필터를 제어하는 규칙은, 스타트업 시 --replicate-* 옵션을 사용하여 생성되었든 레플리카 서버가 실행 중일 때 CHANGE REPLICATION FILTER에 의해 생성되었든 동일합니다. Replication 필터는
Group Replication으로 구성된 MySQL 서버 인스턴스에서 Group Replication 전용 채널에는 사용할 수 없습니다. 일부 서버에서 트랜잭션을 필터링하면, 그룹이 일관된 상태에 대한 합의에 도달할 수 없게 되기 때문입니다.
가장 단순한 경우, 어떤 --replicate-* 옵션도 없으면 레플리카는 source로부터 수신한 모든 스테이트먼트를 실행합니다. 그렇지 않은 경우, 결과는 지정된 특정 옵션에 따라 달라집니다.
데이터베이스 레벨 옵션
( --replicate-do-db,
--replicate-ignore-db)이 먼저 검사됩니다.
이 프로세스에 대한 설명은 Section 19.2.5.1, “Evaluation of Database-Level Replication and Binary Logging Options”을 참조하십시오. 데이터베이스 레벨 옵션이 사용되지 않으면, 사용 중일 수 있는 테이블 레벨 옵션의 검사로 진행합니다 (이에 대한 논의는 Section 19.2.5.2, “Evaluation of Table-Level Replication Options”을 참조하십시오). 하나 이상의 데이터베이스 레벨 옵션이 사용되지만 어느 것도 일치하지 않는 경우, 해당 스테이트먼트는 복제되지 않습니다.
데이터베이스에만 영향을 미치는 스테이트먼트
(즉,
CREATE DATABASE,
DROP DATABASE, 및
ALTER DATABASE)의 경우, 데이터베이스 레벨
옵션은 항상 어떤
--replicate-wild-do-table 옵션보다 우선합니다.
즉, 이러한 스테이트먼트의 경우,
--replicate-wild-do-table 옵션은, 적용 가능한 데이터베이스 레벨 옵션이 전혀 없을 때에만 검사됩니다.
주어진 옵션 집합이 어떤 효과를 가지는지 더 쉽게 파악할 수 있도록, do-*
옵션과 ignore-* 옵션, 또는 와일드카드를 포함하는 옵션과 그렇지 않은 옵션을 섞어 사용하는 것은 피하는 것이 좋습니다.
--replicate-rewrite-db
옵션이 지정된 경우, 이들은
--replicate-* 필터링 규칙이 테스트되기 전에 적용됩니다.
참고
모든 Replication 필터링 옵션은 MySQL 서버의 다른 곳에서 데이터베이스 및 테이블 이름에 적용되는 것과 동일한 대소문자 구분 규칙을 따르며,
lower_case_table_names 시스템
변수의 영향도 포함됩니다.
필터링 규칙은 어떤 권한 검사도 수행하기 전에 적용됩니다. 트랜잭션이 필터링되면, 해당 트랜잭션에 대해 권한 검사가 수행되지 않으며, 따라서 그로 인해 에러가 발생할 수 없습니다. 자세한 정보는 Section 19.5.1.30, “Replica Errors During Replication”을 참조하십시오.
19.2.4 Relay Log and Replication Metadata Repositories
19.3 Replication Security