1.2.4. 서로 다른 데이터베이스를 서로 다른 슬레이브에 복제하기
마스터 서버와는 다른 데이터베이스를 가지고 있는 슬레이브와 리플리케이션을 구성해야
하는 경우도 있다.
Figure 1.2. 이종 DB 슬레이브 간의 리플리케이션
이렇게 구성하기 위해서는, 우선 마스터/슬레이브를 일반적인 방식으로 구성한 후에, replicate-wild-do-table 구성 옵션을 사용해서 각 슬레이브가 처리하는 바이너리 로그 명령문을 제한하면 된다.
그림 1.2를 구성하기 위해서는, START SLAVE를 사용해서 리플리케이션을 시작하기 전에 각 슬레이브를 다음과 같이 구성하도록 한다:
- MySQL 슬레이브 1을 다음과 같이 구성한다:
replicate-wild-do-table=sales.%
replicate-wild-do-table=finance.%
- MySQL 슬레이브 2를 다음과 같이 구성한다:
replicate-wild-do-table=support.%
- MySQL 슬레이브 3을 다음과 같이 구성한다:
replicate-wild-do-table=service.%
리플리케이션을 시작하기 전에 슬레이브에 동기화를 시켜야 하는 데이터가 있다면, 다음 과정을 진행한다:
- 각 슬레이브에 모든 데이터를 동기화 시킨 후에, 더 이상 관리하지 않아도 되는 데이터베이스 및/또는 테이블을 삭제한다.
- mysqldump를 사용해서 각각의 데이터베이스에 대한 개별 덤프 파일을 만든 후에 각 슬레이브 별로 덤프 파일을 전달한다.
- 각 슬레이브용 특정 파일 및 데이터베이스만을 가지고 있는 로우 데이터 파일 덤프를 사용한다. innodb_file_per_table 옵션을 사용하지 않으면 InnoDB 데이터베이스는 사용할 수 없을 것이다.
이렇게 하면, 마스터는 바이너리 로그 전체를 슬레이브에 전달하지만, 슬레이브는 자신의 데이터베이스 및 테이블에만 적용되는 이벤트만을 처리한다.