모든 DB는 싱글로 쓸 수 없다...
그래서 현재 업무에서 복제를 하고있는 MariaDB복제방법 대해서 간단히 말해보려한다.
그리고 중요한 업무라면 고가용성(HA)를 위하여 2노드 이상의 DB를 구축한다.
Galera Cluster
모든 노드가 master노드로서 작동이 된다.

장점
- 어디든 읽고 쓰기가 가능하여 편리하다.
- 장애시 다운타임 X
- slave노드가 없음. 고로 복제 지연발생x
- LB나 스플릿의 필요가 없음
- 모든 노드가 같은 status로 유지가 된다.
단점
- 만약 3노드의 서버 성능이 다 다르다면 가장 안좋은 서버의 성능을 따라감
- innodb엔진만 사용이 가능
내가 느끼기에는 galera방식이 가장 오라클의 RAC방식과 비슷하다.
물론 쿼리 분산은 안되지만 A-A구조이기 때문에 그렇게 생각이 된다.
Maxscale
단순 쿼리 라우터라고 생각하면 된다.
select이면 2번, dml은 1번으로 설정이 다 가능함.
GTID를 통하여 복제 체크

장점
- 쿼리의 분산이 이루어짐
- slave or master에 long query 발생시 maxscale이 판단하여 master->slave로, slave->master로 쿼리를 보낸다
단점
- maxscale용 서버 필요
- Enterprise버전이 필요함.(Community 지원X)
이외 Replication
MHA(Master High Availability)
- Master monitor서버 필요.
- Master 1 노드, Slave 1노드 이상
- Failover시 가장 최신 동기화 노드가 master
MMM(Multi-Master Replication Manager)
- MMM monitor 서버 필요
- monitor<->agent 통신방식
회고
현재 내가 운영 중인 서비스중 MariaDB를 사용중인 서비스는 2개이다.
1. maxscale 이중화
- LB->Maxscale1,2호기->MariaDB1,2호기
- 위 프로세스로 구성이 되어 DML과 Select의 구분이 있어 쿼리가 밀집되지않음
- MCCS방식(멘텍)
- 스토리지 복제방식
- MCCS agent가 Heartbeat체크
- Active-Standby 구성
OpenSource DB의 발전이 계속되면서 Oracle뿐아닌 이기종 DB도 계속 공부하는 중.