Loading...
MySQL 9.5 Reference Manual 9.5의 19.4.6 Replicating Different Databases to Different Replicas의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
하나의 source 서버가 있고, 서로 다른 데이터베이스를 서로 다른 replica로 복제하려는 상황이 있을 수 있습니다. 예를 들어, 데이터 분석 시 부하를 분산하기 위해 서로 다른 부서에 서로 다른 sales 데이터 분산해서 제공하고자 할 수 있습니다. 이러한 구조의 예시는 Figure 19.2, “Replicating Databases to Separate Replicas”에 나와 있습니다.
Figure 19.2 서로 다른 Replica로 Database 복제하기

이러한 분리를 달성하려면 source와 replica를 일반적인 방식으로 구성한 다음, 각 replica에서 --replicate-wild-do-table 구성 옵션을 사용하여 각 replica가 처리하는 바이너리 로그 statement를 제한하면 됩니다.
주의
statement 기반 복제를 사용할 때에는 이 목적을 위해 --replicate-do-db를 사용해서는 안 됩니다. statement 기반 복제는 현재 선택된 데이터베이스에 따라 이 옵션의 동작이 달라지게 하기 때문입니다. 이는 일부 update가 statement 기반 포맷을 사용해 복제되도록 하는 mixed 포맷 복제에도 적용됩니다.
그러나 row 기반 복제만 사용하는 경우에는 이 목적을 위해 --replicate-do-db를 사용하는 것이 안전합니다. 이 경우에는 현재 선택된 데이터베이스가 이 옵션의 동작에 아무런 영향을 미치지 않기 때문입니다.
예를 들어, Figure 19.2, “Replicating Databases to Separate Replicas”에 표시된 것과 같은 분리를 지원하려면, START REPLICA를 실행하기 전에 각 replica를 다음과 같이 구성해야 합니다:
Replica 1은 --replicate-wild-do-table=databaseA.%를 사용해야 합니다.
Replica 2는 --replicate-wild-do-table=databaseB.%를 사용해야 합니다.
Replica 3은 --replicate-wild-do-table=databaseC.%를 사용해야 합니다.
이 구성에서 각 replica는 source로부터 전체 바이너리 로그를 수신하지만, 각 replica에서 적용 중인 --replicate-wild-do-table 옵션에 의해 포함되는 데이터베이스와 테이블에 해당하는 event만 바이너리 로그에서 실행합니다.
복제가 시작되기 전에 replica와 동기화해야 할 데이터가 있는 경우, 다음과 같은 여러 가지 선택지가 있습니다:
모든 데이터를 각 replica에 동기화한 다음, 유지하지 않으려는 데이터베이스나 테이블(또는 둘 모두)을 삭제합니다.
[mysqldump](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program)를 사용하여 각 데이터베이스에 대해 별도의 dump 파일을 생성하고, 각 replica에 적절한 dump 파일을 로드합니다.
raw 데이터 파일 dump를 사용하고, 각 replica에 필요한 특정 파일과 데이터베이스만 포함시킵니다.
참고
innodb_file_per_table를 사용하지 않는 한, 이는 InnoDB 데이터베이스에서는 작동하지 않습니다.
19.4.5 Using Replication for Scale-Out
19.4.7 Improving Replication Performance