복제 기능을 사용하면 하나의 MySQL 데이터베이스 서버 (마스터)의 데이터를 하나 이상의 MySQL 데이터베이스 서버 (슬레이브)에 복사 할 수 있습니다. 복제는 기본적으로 비동기입니다. 슬레이브는 마스터로부터 업데이트를 받기 위해 영구적으로 연결될 필요가 없습니다. 구성에 따라 모든 데이터베이스, 선택한 데이터베이스 또는 데이터베이스 내의 선택된 테이블을 복제 할 수 있습니다.
MySQL에서의 복제의 장점은 다음과 같습니다.
수평 확장 솔루션
- 여러 슬레이브간에로드를 분산하여 성능을 향상시킵니다. 이 환경에서는 모든 쓰기 및 업데이트가 마스터 서버에서 수행되어야합니다. 그러나 읽기는 하나 이상의 노예에서 일어날 수 있습니다. 이 모델은 마스터가 업데이트 전용이므로 쓰기 성능을 향상시킬 수 있으며 증가하는 슬레이브 수에 따라 읽기 속도를 크게 높입니다.데이터 보안
- 데이터가 슬레이브에 복제되고 슬레이브가 복제 프로세스를 일시 중지 할 수 있기 때문에 슬레이브에서 해당 마스터 데이터를 손상시키지 않고 백업 서비스를 실행할 수 있습니다.분석
- 마스터에서 라이브 데이터를 생성 할 수 있으며 마스터의 성능에 영향을주지 않고 슬레이브에서 정보 분석을 수행 할 수 있습니다.장거리 데이터 배포
- 복제를 사용하여 마스터에 영구적으로 액세스하지 않고 원격 사이트가 사용할 로컬 데이터 복사본을 만들 수 있습니다.MySQL 8 에서 지원되는 복제 방법은 아래와 같습니다.
GTID복제 방법은 8에서 새롭게 선보이는 기능입니다.
MySQL 8 에서 지원되는 동기화 방법은 아래와 같다.
MySQL 8 에서 는 아래와 같은 복제 형식을 지원합니다.
바이너리 로그 파일 기반 복제 설정방법에 대해 설명한다.
전체 과정은 아래와 같은 순서로 진행된다.
server-id
설정을 추가한다.my.cnf
파일 에서 innodb_flush_log_at_trx_commit=1
와 sync_binlog=1
를 사용해야 합니다.[mysqld] server-id = 1 innodb_flush_log_at_trx_commit = 1 sync_binlog = 1
server-id
설정을 추가한다.[mysqld] server-id = 2