17.2.3 서버가 Replication 필터링 규칙을 평가하는 방법
마스터 서버가 바이너리 로그에 명령문을 기록하지 않으면 문은 복제되지 않습니다. 서버가 문을 기록하면 명령문은 모든 슬레이브에 전송되고 각 슬레이브는 그것을 실행하거나 무시할지 여부를 결정합니다.
마스터는 --binlog-do-db
및 --binlog-ignore-db
옵션을 사용하여 바이너리 로깅을 제어하는 것으로, 어떤 데이터베이스가 변경 로그를 기록할지 여부를 제어 할 수 있습니다. 이러한 옵션을 평가할 때 서버가 사용하는 규칙의 자세한 내용은 섹션 17.2.3.1 "데이터베이스 수준 복제 옵션 및 바이너리 로깅 옵션의 평가" 를 참조하십시오. 복제 데이터베이스와 테이블을 제어하기 위해이 옵션을 사용하지 마십시오. 대신 슬레이브에서 필터링을 사용하여 슬레이브에서 실행되는 이벤트를 제어합니다.
슬레이브는 마스터로부터받는 문을 실행하거나 무시하거나 판단은 노예를 시작할 때 사용되는 --replicate-*
옵션에 따라 이루어집니다. 섹션 17.1.4 "복제 및 바이너리 로깅 옵션과 변수" 를 참조하십시오.
--replicate-*
옵션이없는 경우 (가장 간단한 경우), 슬레이브는 마스터로부터받는 모든 문을 실행합니다. 그렇지 않은 경우, 결과는 지정된 특정 옵션에 따라 달라집니다.
데이터베이스 수준 옵션 ( --replicate-do-db
, --replicate-ignore-db
)이 먼저 확인됩니다. 이 프로세스에 대한 설명은 섹션 17.2.3.1 "데이터베이스 수준 복제 옵션 및 바이너리 로깅 옵션의 평가" 를 참조하십시오. 데이터베이스 수준 옵션이 사용되지 않는 경우는 옵션 체크는 테이블 수준 옵션 (사용되는 경우가있다)의 체크를 진행합니다 (이러한 설명은 섹션 17.2.3.2 "테이블 수준 복제 옵션의 평가」 를 참조 하십시오). 하나 이상의 데이터베이스 수준 옵션이 사용되어 있지만 일치하는 항목이 없으면 문은 복제되지 않습니다.
데이터베이스에만 영향을 문 경우 (즉, CREATE DATABASE
, DROP DATABASE
, 그리고 ALTER DATABASE
) 데이터베이스 수준 옵션은 --replicate-wild-do-table
옵션보다 항상 우선됩니다. 즉, 이러한 문의 경우 적용하는 데이터베이스 수준 옵션이없는 경우에 한해, --replicate-wild-do-table
옵션을 선택합니다. 이것은 MySQL의 이전 버전의 동작에서의 변경입니다. 슬레이브가 --replicate-do-db=dbx
--replicate-wild-do-table=db%.t1
에서 시작 된 경우에는 문 CREATE DATABASE dbx
는 복제되지 않았습니다. (Bug # 46110)
옵션 세트에 무슨 영향을 미치는지 판단을 단순화하기 위해 "do"와 "ignore"옵션 또는 와일드 카드와 비 와일드 카드 옵션을 혼합시키는 것을 피하는 것이 좋습니다.
--replicate-rewrite-db
옵션이 지정된 경우, 그들은 --replicate-*
필터링 규칙이 테스트되기 전에 적용됩니다.
MySQL 5.6에서는 모든 복제 필터링 옵션은 lower_case_table_names
시스템 변수의 영향을 포함하여 MySQL 서버의 다른 위치 데이터베이스 및 테이블의 이름에 적용되는 것과 동일한 대소 문자의 구별에 관한 규칙을 따릅니다 .
이것은 이전 버전의 MySQL에서의 변경 사항입니다. (Bug # 51639)