- Replication
- 설명
- master 노드에서 쓰기 작업을 수행한다
- master 노드는 데이터를 저장하고 트랜잭션 로그를 파일(BIN LOG)에 기록한다
- slave 노드의 IO 쓰레드는 master 노드의 로그 파일(BIN LOG)을 파일(Relay Log)에 복사한다
- slave 노드의 SQL 쓰레드는 파일(Relay Log)를 한 줄씩 읽으며 데이터를 저장한다
- 장점
- DB 요청의 대부분이 읽기 작업이기때문에 replication으로도 충분히 성능을 끌어올릴 수 있다
- 비동기 방식으로 운영되어 지연시간이 거의 없다
- 단점
- 노드간의 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수도 있다
- master 노드가 죽으면 복구 및 대처가 까다롭다
- 설명
- Clustering
-
설명
- 여러 개의 DB를 수평적인 구조로 구축하는 방식이다
- failover 시스템을 구축하기 위해 사용한다
- 동기 방식으로 노드간의 데이터를 동기화한다
- 1개의 노드에 쓰기 작업을 하고
COMMIT
을 실행한다 - 실제 디스크에 내용을 쓰기 전에 다른 노드로 데이터 복제를 요청한다
- 다른 노드에서 복제 요청을 수락했다는 신호를 보내고, 디스크에 쓰기 싲가한다
- 다른 노드로부터 신호를 받음녀 실제 디스크에 데이터를 저장한다
- 클러스터링은 DB간의 데이터 무결성 검사를 하는 방식으로 데이터를 동기화한다
-
장점
- 노드간의 데이터를 동기화하여 항상 일관성있는 데이터를 얻을 수 있다
- 1개의 노드가 죽어도 다른 노드가 살아있어 시스템을 계속 장애없이 운영할 수 있다
-
단점
- 여러 노드간의 데이터를 동기화하는데 시간이 필요하므로 레플리카에 비해 쓰기 성능이 떨어진다
- 장애가 전파된 경우 처리가 까다로우며, 데이터 동기화에 의해 스케일링에 한계가 있다
-
방식
- active-active: 클러스터를 항상 가동해 가용가능한 상태로 두는 방식
- active-standby: 일부 클러스터는 가동하고, 일부 클러스터는 대기 상태로 구성하는 방식
-