My SQL Replication이란?
Replication은 해석 그대로 복제를 뜻한다. 2대 이상의 DBMS를 누나 우서 데이터를 저장하는 방식을 의미한다.
- 최소 구성 : Master, Slaves - Slaves는 Master로부터 업데이트된 데이터를 받기 위해 영구적으로 연결될 필요는 없다.
- default : asynchronous
Master DBMS :
웹 서버로부터 CRUD 요청 시 바이너리 로그를 생성하여 Slaves 서버로 전달
Slaves DBMS :
Master DBMS로부터 전달받은 바이너리 로그를 데이터로 반영
My SQL Replication의 목적
1. 백업
Master 서버에 등록/수정/삭제 가 발생하는 즉시 Slaves 서버에 변경된 데이터를 전달하게 된다. 이 결과 데이터를 백업할 수 있으므로
Master DBMS에 장애가 생겼을 때 백업해둔 Slaves 서버로 변경하여 사용이 가능하다.
2. 부하분산
트래픽이 발생하여 DB 한대로는 도무지 처리할 수 없을 때 리플리케이션을 사용하면 같은 DB 데이터를 여러 개 만들 수 있기 때문에 트래픽을 분산시킬 수 있다.
Replication 구성 실습
MySQL 설정 파일에 수정
bind-address = 192.168.121.59
server-id = 1
log_bin = mysql-bin
설정 파일의 위치는 PC 제각각이므로 find로 찾아보길 바란다.
find / -name my.cnf
MySQL restart 실행
mysql.server restart
계정 생성 및 권한 부여
1. relica 이름의 계정 생성
CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
2. the REPLICATION SLAVE privilege을 부여한다.
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
Slave 서버 설정
bind-address = 192.168.121.14
server-id = 2
log_bin = mysql-bin
다시 재부팅...!
SLAVE의 스레드를 멈추고 MASTER DBMS를 SLAVE로 이관
CHANGE MASTER TO
MASTER_HOST='192.168.121.59',
MASTER_USER='replica',
MASTER_PASSWORD='strong_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1427;
SLAVE 재실행 - START SLAVE;
TEST 실행
Master에 테이블을 생성하고 SLAVE에도 반영되어있는지 확인
REPLICATEST라는 테이블을 마스터 서버에 생성
CREATE DATABASE REPLICATESTING;
SLAVE 서버 해당 테이블 생성 확인!!
'CS > DataBase' 카테고리의 다른 글
(MySQL) MMM, MHA (0) | 2020.04.05 |
---|---|
(MySQL) Transaction Isolation Levels (0) | 2020.03.29 |
(MySQL) Direct I/O (0) | 2020.03.08 |
(MySQL) Adaptive Hash Index (0) | 2020.03.08 |
(MySQL) ACID : 트랜잭션을 통한 동시성 제어 (0) | 2020.03.08 |