17.2.3.3 Replication 규칙 적용
이 섹션에서는 복제 필터링 옵션의 다양한 조합의 추가 설명 및 예제를 보여줍니다.
다음 표는 복제 필터 규칙의 일부 전형적인 조합을 일부 보여줍니다.
조건 (옵션 유형) | 결과 |
---|---|
--replicate-* 옵션이 전혀 없다 | 슬레이브는 마스터로부터받는 모든 이벤트를 실행합니다. |
--replicate-*-db 옵션, 그러나 테이블 옵션이없는 | 슬레이브 데이터베이스 옵션을 사용하여 이벤트를 받아들이거나 무시합니다. 테이블 제약이 없기 때문에 이러한 옵션에서 허용되는 모든 이벤트를 실행합니다. |
--replicate-*-table 옵션 되나 데이터베이스 옵션이없는 | 데이터베이스 조건이 없기 때문에 데이터베이스 검사 단계에서 모든 이벤트가 허용됩니다. 슬레이브는 테이블 옵션에만 따라 이벤트를 실행하거나 무시합니다. |
데이터베이스 및 테이블 옵션의 조합 | 슬레이브 데이터베이스 옵션을 사용하여 이벤트를 받아들이거나 무시합니다. 그 때 테이블 옵션에 따라이 옵션이 허용하는 모든 이벤트를 평가합니다. 이것은 직관에 반대되는 것처럼 보이거나, 명령문 기반 또는 열 기반 리플리케이션 중 어느 것을 사용 하느냐에 따라 다른 결과가되거나하는 경우가 있습니다. 예 텍스트를 참조하십시오. |
더 복잡한 예를 보여줍니다. 문 기반 및 행 기반 모두의 설정 결과를 확인합니다.
데이터베이스 db1
에 mytbl1
데이터베이스 db2
에 mytbl2
두 개의 테이블이 마스터에 있고 슬레이브가 다음 옵션에서 작동하고 있다고 가정합니다 (다른 복제 필터링 옵션은 없다).
replicate-ignore-db = db1 replicate-do-table = db2.tbl2
여기에서 다음 문을 마스터에서 실행합니다.
USE db1; INSERT INTO db2.tbl2 VALUES (1);
slave의 결과는 바이너리 로그 형식에 따라 크게 달라, 어느 경우 당초의 예측과 일치하지 않을 수 있습니다.
문 기반 복제 USE
문에서 db1
가 디폴트 데이터베이스입니다. 따라서 --replicate-ignore-db
옵션이 일치하고 INSERT
문이 무시됩니다. 테이블 옵션은 검사되지 않습니다.
행 기반 복제 기본 데이터베이스는 열 기반 리플리케이션을 사용하면 슬레이브 데이터베이스 옵션을 어떻게 읽는지에 영향을주지 않습니다. 그 결과, USE
문은 --replicate-ignore-db
옵션이 어떻게 처리되는지에 차이를 가져 오지 않습니다. 이 옵션에 지정된 데이터베이스는 INSERT
문이 데이터를 변경하는 데이터베이스와 일치하지 않기 때문에 슬레이브는 테이블 옵션 검사를 진행합니다. --replicate-do-table
로 지정되는 테이블은 업데이트 할 테이블에 일치하는 행이 삽입됩니다.