IT 기초/Infra

DB availability

데이터 세상 2021. 12. 27. 11:40

Availability

  • 서비스 제공시간에 장애없이 서비스를 계속 지속할 수 있는 비율

 

DB 가용성 확보 방안 (DB  full  경우 확보 방안)

가용성을 높이는 2가지 전략

1. 심장전략(고품질-소수전략)

  • 시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 억제하여 가용성을 높임

2. 신장전략(저품질-다수전략)

  • 시스템을 구성하는 각 컴포넌트는 언젠가 망가진다는 전제하에 여분을 준비해두는 방식

 

Clustering

  • 동일한 기능의 컴포넌트를 복수 개 준비해 한 개의 기능을 실현
  • 다중화

 

MySQL 이중화 방식

 

Replication

MySQL은 데이터를 읽고 쓰고 할 수 있는 Master DB 와 읽기 전용인 Slave DB 구조로 되어 있다.


Master DB의 Binary log를 읽어서 Slave DB의 Relay log로 복사 후 반영하여 변경된 데이터를 동기화하는 방식이 잘 알려진 Replication이다. 실시간 동기화는 아니고 Asynchronous 방식과 Semi-Sync 방식으로 구성 가능이 가능하다. Slave 대수에 따라 수 초의 Delay가 발생할 수 있어 실시간이 매우 중요한 데이터 읽기 트랜잭션은 Master DB에서 읽게 하고 Slave DB는 이외 읽기 트랜잭션을 적용하는 것이 일반적이다.


Master가 하나이기 때문에 Standby Master – Slave 를 별도로 두고 CDC(Change Data Capture) 같은 솔루션으로 데이터 동기화 시킨다. 장애가 발생하면 Master를 대체하는 방식을 사용하거나, Mater가 fault 가 나면 Slave를 Master로 승격시키는 방식을 적용한다.

 

MHA for replication

장애 시 수동으로 하는 Master를 변경하는 방식은 사람이 개입되어 서비스 중단 시간이 길어지므로 자동화할 수 있는 기능을 제공하는데, MHA(MySQL High Availability) 와 MMM(Multi-Master replication Manager) 등을 활용할 수 있다.


MHA는 Master의 상태를 실시간 감시하고 있다가 장애가 발생하면 순서에 의하여 해당 Slave를 Master로 자동 승격시킨다. 이와 비슷하게 Passive Master를 두고 평시에는 Read only DB로 사용하고 있다가 장애 시 MMM가 자동 인식하여 Active Master로 변경하고 Slave를 이동 종속시키는 방식도 적용할 수 있다.


MHA, MMM 등은 이중화가 안되는 단점이 있어 MHA 등의 장애 시 실시간 감시에 어려움이 있다. MHA는 별도의 서버에 두어야 하드웨어, 운영체제의 문제 발생 시에도 DBMS 감시를 할 수 있다.

 

Galera Cluster

Galera Cluster는 Synchronous 방식으로 동작하는 다중 마스터 클러스터이다. 2개 이상의 Multi Master를 두고 wsrep API 를 통하여 실시간으로 데이터 동기화를 할 수 있다. 특정 노드 장애 시 자동으로 해당 노드 제거할 수 있고, HAProxy(High Availability Proxy)를 같이 적용하면 소프트웨어 기반의 부하 분산을 통하여 성능을 개선할 수 있다.


Galera Cluster를  MySQL 엔진인 innodb에 적용한 DB엔진 Appliance 형태의 Percona Xtradb 도 있으며, 카카오뱅크에 적용하여 순수 오픈소스 DBMS 운영의 어려움을 전문업체 기술지원의 형태로 보완하였다.
* wsrep 는 https://launchpad.net/codership-mysql 에서 시작한 오픈소스 프로젝트 이다.

반응형

'IT 기초 > Infra' 카테고리의 다른 글

Host disk 모니터링 툴  (0) 2021.12.27
SAN/NAS/DAS  (0) 2021.12.27
git vs svn  (0) 2021.12.27
Hadoop  (0) 2021.12.27
RDBMS vs NoSQL  (0) 2021.12.27