레플리케이션 이란?
Replication은 단어 그대로 복제를 의미
하나의 마스터 DB에서 하나 이상의 슬레이브 DB로 데이터를 비동기적으로 복제하는 기능.
-> 읽기 부하 분산 또는 고가용성이 목적
레플리케이션의 목적
- 스케일-아웃(Scale-out)을 위한 솔루션
마스터 DB : DML(INSERT, UPDATE, DELETE ... ) 쿼리 전용으로 사용
슬레이브 DB : 읽기(SELECT) 쿼리 전용 - 데이터의 안정성 보장
마스터 DB에 영향을 주지않고, 슬레이브 DB로 레플리케이션 시킨다. - 데이터 분석
슬레이브 DB에 레플리케이션된 실시간 데이터로 분석 작업 가능
레플리케이션 설정 - 마스터 DB
- 마스터 DB에서 my.cnf 파일을 확인한다.
- log-bin이 활성화 되어 있어야한다. mysql-bin으로 설정할 경우, 바이너리 로그 파일이 mysql-bin.00001과 같이 생성된다.
- 레플리케이션 구성 내에서 각 서버를 구분하기 위한 server id를 설정한다. (1~2^32 -1)
- mysql 재시작
레플리케이션 설정 - 슬레이브 DB
- 슬레이브 DB에서 my.cnt 파일을 확인한다.
- server-id 는 마서트 DB와 다르게 사용해야한다.
- relay-log 에 설정하는 파일명으로, 릴레이 로그 파일 이름을 설정할 수 있다.
- 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 |