MySQL 8 Replication

복제 기능을 사용하면 하나의 MySQL 데이터베이스 서버 (마스터)의 데이터를 하나 이상의 MySQL 데이터베이스 서버 (슬레이브)에 복사 할 수 있습니다. 복제는 기본적으로 비동기입니다. 슬레이브는 마스터로부터 업데이트를 받기 위해 영구적으로 연결될 필요가 없습니다. 구성에 따라 모든 데이터베이스, 선택한 데이터베이스 또는 데이터베이스 내의 선택된 테이블을 복제 할 수 있습니다.

MySQL에서의 복제의 장점은 다음과 같습니다.

  • 수평 확장 솔루션 - 여러 슬레이브간에로드를 분산하여 성능을 향상시킵니다. 이 환경에서는 모든 쓰기 및 업데이트가 마스터 서버에서 수행되어야합니다. 그러나 읽기는 하나 이상의 노예에서 일어날 수 있습니다. 이 모델은 마스터가 업데이트 전용이므로 쓰기 성능을 향상시킬 수 있으며 증가하는 슬레이브 수에 따라 읽기 속도를 크게 높입니다.
  • 데이터 보안 - 데이터가 슬레이브에 복제되고 슬레이브가 복제 프로세스를 일시 중지 할 수 있기 때문에 슬레이브에서 해당 마스터 데이터를 손상시키지 않고 백업 서비스를 실행할 수 있습니다.
  • 분석 - 마스터에서 라이브 데이터를 생성 할 수 있으며 마스터의 성능에 영향을주지 않고 슬레이브에서 정보 분석을 수행 할 수 있습니다.
  • 장거리 데이터 배포 - 복제를 사용하여 마스터에 영구적으로 액세스하지 않고 원격 사이트가 사용할 로컬 데이터 복사본을 만들 수 있습니다.

MySQL 8 에서 지원되는 복제 방법은 아래와 같습니다.

  • Binary log replication
  • General Transaction ID(GTID) replication

GTID복제 방법은 8에서 새롭게 선보이는 기능입니다.

MySQL 8 에서 지원되는 동기화 방법은 아래와 같다.

  • One-way asynchronous (단방향 비동기 복제)
  • Semi-synchronous (반동기 복제)
  • Delayed replication (지연 복제)
  • Synchronous (동기 복제 - NDB Cluster)

MySQL 8 에서 는 아래와 같은 복제 형식을 지원합니다.

  • Statement Based Replication (SBR) - SQL행 전체 복제
  • Row Based Replication (RBR) - 변경된 ROW 만 복제
  • Mixed Based Replication (MBR) - 혼합 복제 방식

바이너리 로그 파일 기반 복제 설정방법에 대해 설명한다.
전체 과정은 아래와 같은 순서로 진행된다.

  1. Master 서버에서 바이너리 로그 설정을 진행하고 server-id 를 설정한다. (재기동 필요)
  2. Slave 서버에서 server-id 를 설정한다. (재기동 필요)
  3. 복제를 수행할 사용자 계정을 구성한다.
  4. Master에서 Slave로 복제하기 위한 Binary log position을 확인한다.

Master 설정하기

  • server-id 설정을 추가한다.
  • InnoDB트랜잭션과 함께 사용하는 복제 설정에서 최대한의 내구성과 일관성을 유지 하려면 복제 마스터 my.cnf 파일 에서 innodb_flush_log_at_trx_commit=1sync_binlog=1를 사용해야 합니다.
my.cnf
[mysqld]
server-id = 1
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

Slave 설정하기

  • server-id 설정을 추가한다.
my.cnf
[mysqld]
server-id = 2

참조링크

로그인하면 댓글을 남길 수 있습니다.
  • mysql_8_replication.txt
  • 마지막으로 수정됨: 2019/06/14 17:12
  • 저자 koov