본문 바로가기

Developer/DataBase

[MySQL] Replication(복제)

레플리케이션 이란?

Replication은 단어 그대로 복제를 의미

하나의 마스터 DB에서 하나 이상의 슬레이브 DB로 데이터를 비동기적으로 복제하는 기능.

  -> 읽기 부하 분산 또는 고가용성이 목적

 

레플리케이션의 목적

  • 스케일-아웃(Scale-out)을 위한 솔루션
    마스터 DB : DML(INSERT, UPDATE, DELETE ... ) 쿼리 전용으로 사용
    슬레이브 DB : 읽기(SELECT) 쿼리 전용
  • 데이터의 안정성 보장
    마스터 DB에 영향을 주지않고, 슬레이브 DB로 레플리케이션 시킨다.
  • 데이터 분석
    슬레이브 DB에 레플리케이션된 실시간 데이터로 분석 작업 가능

레플리케이션 설정 - 마스터 DB

  1. 마스터 DB에서 my.cnf 파일을 확인한다.
  2. log-bin이 활성화 되어 있어야한다. mysql-bin으로 설정할 경우, 바이너리 로그 파일이 mysql-bin.00001과 같이 생성된다.
  3. 레플리케이션 구성 내에서 각 서버를 구분하기 위한 server id를 설정한다. (1~2^32 -1)
  4. mysql 재시작

레플리케이션 설정 - 슬레이브 DB

  1. 슬레이브 DB에서 my.cnt 파일을 확인한다.
  2. server-id 는 마서트 DB와 다르게 사용해야한다.
  3. relay-log 에 설정하는 파일명으로, 릴레이 로그 파일 이름을 설정할 수 있다.
  4. read_only는 읽기 전용으로 사용할 수 있도록 설정한다.

레플리케이션 구성

마스터 DB에 레플리케이션 용도의 계정 생성

CREATE USER '[USER_NAME]'@'[HOST]' IDENTIFIED BY '[PASSWORD]';
GRANT REPLICATION SLAVE ON *.* to '[USER_NAME]'@'[HOST]';

 

마스터 DB의 바이너리 로그 파일과 포지션 확인

show master status;

 

슬레이브 DB를 마스터 DB로 연결

CHANGE MASTER TO
-> MATER_HOST = '10.1.1.1'                -- 마스터 DB 서버의 IP
-> MASTER_USER = '[USER_NAME]'            -- 레플리케이션 접속 계정의 사용자명
-> MASTER_PASSWORD = '[PASSWORD]'         -- 레플리케이션 접속 계정의 패스워드
-> MASTER_PORT = 3306                     -- 마스터 DB에 접속할 포트번호
-> MASTER_LOG_FILE = 'mysql-bin.00001'    -- 마스터 DB의 현재 바이너리 로그 파일명
-> MASTER_LOG_POS = 120;                  -- 마스터 DB의 현재 바이너리 로그 포지션

 

슬레이브 DB 스타트

start slave;

 

 

'Developer > DataBase' 카테고리의 다른 글

MySQL Query 추적  (0) 2021.01.13
[MySQL] 백업 도구 - mysqldump  (0) 2021.01.03
[MySQL] 타입 변환 함수 - 문자를 숫자로 CAST  (0) 2020.08.26
[MySQL] MySQL 파티션 주의사항  (0) 2020.08.06
[MySQL] MySQL 파티션 개요  (0) 2020.08.05