17.3.4 다른 데이터베이스를 다른 Slave에 복제
마스터가 하나 다른 데이터베이스를 다른 슬레이브에 복제 할 수 있습니다. 예를 들어, 데이터 분석시의 부하를 분산하기 위해 다른 판매 데이터를 다른 부서에 분산되어있을 경우입니다. 이 레이아웃의 예를 그림 17.2 "데이터베이스를 별도의 리플리케이션 슬레이브에 복제하기 위해 복제를 사용하는" 입니다.
그림 17.2 데이터베이스를 별도의 리플리케이션 슬레이브에 복제하기 위해 복제를 사용하는
이 분산 마스터와 슬레이브를 정상적으로 구성하고 각 슬레이브에서 --replicate-wild-do-table
구성 옵션을 사용하여 각 슬레이브가 처리하는 바이너리 로그 문을 제한함으로써 실현 될 수 합니다.
문 기반 복제를 사용할 때이 목적을 위해 --replicate-do-db
를 사용해서는 없습니다. 문 기반 복제는이 옵션의 효과가 현재 선택되어있는 데이터베이스에 의해 다르기 때문입니다. 이것은 혼합 형식의 복제에도 적용됩니다. 일부 업데이트를 문 기반 형식을 사용하여 복제 있기 때문입니다.
그러나 열 기반 리플리케이션만을 사용하는 경우에는이 목적을 위해 --replicate-do-db
를 사용하여도 안전한 것입니다. 이 경우에는 현재 선택되어있는 데이터베이스 옵션의 동작에 영향을주지 않는 것입니다.
예를 들어, 그림 17.2 "데이터베이스를 별도의 리플리케이션 슬레이브에 복제하기 위해 복제 사용" 에서와 같이 분산을 지원하려면 START SLAVE
를 실행하기 전에 각 복제 슬레이브를 다음과 같이 구성 하십시오.
복제 슬레이브 1은
--replicate-wild-do-table=databaseA.%
를 사용한다.복제 슬레이브 2
--replicate-wild-do-table=databaseB.%
를 사용한다.복제 슬레이브 3은
--replicate-wild-do-table=databaseC.%
를 사용한다.
이 구성의 각 슬레이브는 마스터에서 바이너리 로그 전체를 받지만 그 바이너리 로그에서 슬레이브에서 유효한 --replicate-wild-do-table
옵션으로 포함 된 데이터베이스와 테이블에 적용되는 이벤트 만 실행 합니다.
복제가 시작하기 전에 슬레이브에 동기화 할 필요가있는 데이터가있는 경우, 몇 가지 선택이 있습니다.
모든 데이터를 각 슬레이브에 동기화 유지하지 않으려는 데이터베이스 또는 테이블 또는 둘 모두를 제거합니다.
mysqldump를 사용하여 데이터베이스에 대해 별도의 덤프 파일을 만들고 각 슬레이브에 해당하는 덤프 파일을로드합니다.
로우 데이터 파일 덤프를 사용하여 각 슬레이브에 필요한 관련 파일과 데이터베이스 만 포함합니다.
참고이것은
innodb_file_per_table
을 사용하지 않는 한,InnoDB
데이터베이스에서는 작동하지 않습니다.