제17장 Replication
복제를 통해 하나의 MySQL 데이터베이스 서버 (마스터)의 데이터를 하나 이상의 MySQL 데이터베이스 서버 (슬레이브)에 복제 할 수 있습니다. 복제는 기본적으로 비동기이기 때문에 슬레이브는 마스터에서 업데이트를 받기 위하여 영구적으로 연결되어있을 필요는 없습니다. 이것은 장거리 연결에서도 더 전화 접속 서비스와 같은 일시적 또는 간헐적으로 연결에서도 업데이트가 가능하다는 것을 의미합니다. 구성에 따라 모든 데이터베이스 선택한 데이터베이스, 데이터베이스에서 선택된 테이블을 복제 할 수 있습니다.
MySQL Replication을 처음 사용하는 사람들이 자주하는 질문에 대한 답변 내용은 섹션 A.13 "MySQL 5.6 FAQ : 복제" 를 참조하십시오.
MySQL 복제의 장점은 다음과 같습니다.
스케일 아웃 솔루션 - 성능 향상을 위해 복수의 슬레이브에 부하를 분산합니다. 이 환경에서는 모든 기록 및 업데이트를 마스터 서버에서 실행해야합니다. 그러나 읽기의 경우, 하나 이상의 슬레이브로 실행해도 괜찮습니다. 이 모델에서는 쓰기 성능을 향상시키면서 (마스터가 업데이트 전용이므로) 슬레이브 수가 증가하더라도 스캔 속도를 획기적으로 높일 수 있습니다.
데이터 보안 - 데이터는 슬레이브에 복제 된 슬레이브 복제 프로세스를 일시 정지 할 수 있기 때문에 해당 마스터 데이터를 깨지 않고 슬레이브에서 백업 서비스를 실행할 수 있습니다.
분석 - 마스터에서 라이브 데이터를 작성하면서 슬레이브에서 정보 분석을 수행 할 수 있기 때문에 마스터의 성능에 영향을주지 않습니다.
장거리 데이터 배포 - 지점에서 주요 데이터의 복사본을 사용하여 작업하는 경우 복제를 사용하여 데이터의 로컬 복사본을 만들고 그들을 사용할 수 있습니다 (마스터에 대한 지속적인 액세스는 제외).
MySQL 복제의 특징은 단방향 비동기 복제를 지원하는 것이며, 하나의 서버가 마스터 역할을하는 하나 이상의 서버가 슬레이브로 작동합니다. 이것은 MySQL 클러스터의 특징 인 동기식 복제와는 대조적입니다 ( 제 18 장 "MySQL Cluster NDB 7.3 및 MySQL Cluster NDB 7.4" 을 참조하십시오). MySQL 5.6에서는 기본 제공 비동기 복제 이외에 준 동기 복제에 대한 인터페이스를 지원하고 있습니다. 준 동기 복제에서는 마스터 측에서 실행 된 커밋 트랜잭션을 실행 한 세션에 돌아 오기 전에 적어도 1 개의 슬레이브가 트랜잭션 이벤트를 받아 기록되었음을 통지 할 때까지 블록됩니다. 섹션 17.3.8 "준 동기 복제" 를 참조하십시오. MySQL 5.6은 슬레이브 서버가 적어도 지정된 시간만큼 의도적으로 마스터보다 늦게 지연 복제도 지원하고 있습니다. 섹션 17.3.9 "지연 복제" 를 참조하십시오.
두 서버간에 복제를 설정하는 데 사용할 수있는 솔루션에는 여러 가지가 있지만 최선의 방법은 데이터의 존재 나 사용하는 엔진 유형에 따라 다릅니다. 사용 가능한 옵션에 대한 자세한 내용은 섹션 17.1.1 "복제 설정 방법" 을 참조하십시오.
복제 형식의 주요 유형은 두 가지, 하나는 SQL 문 전체를 복제하는 Statement Based Replication (SBR : 문 기반 복제), 다른 하나는 변경된 행만을 복제하는 Row Based Replication (RBR : 열 기반 리플리케이션)입니다. 세 번째 Mixed Based Replication (MBR : 믹스 기반 복제)을 사용할 수도 있습니다. 다양한 복제 형식에 대한 자세한 내용은 섹션 17.1.2 "복제 형식" 을 참조하십시오. MySQL 5.6에서는 문 기반의 형식이 기본입니다.
MySQL 5.6.5 이후 버전에서는 글로벌 트랜잭션 ID (GTID)에 기반 트랜잭션 복제를 지원합니다. 이 유형의 복제를 사용하는 경우 로그 파일 또는이 파일의 위치와 직접 연계 할 필요가 없기 때문에 일반적인 많은 복제 작업이 크게 단순화됩니다. GTID을 사용하는 복제는 완전히 트랜잭션 대응이기 때문에 마스터에서 확정 된 모든 트랜잭션이 슬레이브에서도 적용되는 한 마스터와 슬레이브 일관성이 보장됩니다. GTID 및 GTID 기반 복제에 대한 자세한 내용은 섹션 17.1.3 "글로벌 트랜잭션 식별자를 사용한 복제" 를 참조하십시오.
복제는 몇 가지 옵션과 변수에 의해 제어됩니다. 이들은 복제 제한, 데이터베이스 및 데이터베이스와 테이블에 적용 할 수있는 필터의 핵심 작업을 제어합니다. 사용 가능한 옵션에 대한 자세한 내용은 섹션 17.1.4 "복제 및 바이너리 로깅 옵션과 변수" 를 참조하십시오.
복제를 사용하여 여러 가지 문제를 해결할 수 있습니다 (성능 문제, 다른 데이터베이스 백업 지원, 더 큰 솔루션의 일부로 시스템 장애를 완화하는 등). 이러한 문제의 해결 방법은 섹션 17.3 "복제 솔루션" 을 참조하십시오.
복제 기능에 대한 자세한 버전 호환성, 업그레이드 및 문제 해결 (FAQ 포함) 등 다양한 데이터 형과 문을 복제하는 동안 어떻게 처리되는지에 대한 설명 및 팁, 섹션 17.4 " 복제 주석과 팁 " 을 참조하십시오.
복제 구현 복제 메커니즘 바이너리 로그의 과정과 내용, 백업 스레드 및 문의 기록 및 복제 방법을 결정하는 데 사용되는 규칙에 대한 자세한 내용은 섹션 17.2 "복제 구현" 을 참조 바랍니다.