생계/기타2018. 10. 8. 16:05

장애 시 다운타임을 줄이거나, 또는 zero down time 을 목적으로 각 벤더사들은 

저마다 다른 구성의 DB를 사용한다.


대표적으로 많이 쓰이는 구조들을 정리 및 비교 해보자. 


  • Oracle

     - rac


특징 : 다수의 인스턴스가 하나의 스토리지를 공유.

        다수의 인스턴스 중 한쪽 인스턴스가 장애가 나도 나머지 인스턴스에서 서비스가 지속된다.

        

제약 : 다수의 인스턴스가 하나의 스토리지를 사용하기에 중복작업이 발생하지 않기 위한 overhead 가 필요.



  • MariaDB

     - replication  




   특징 : 2대 이상의 서버로 구성. Master 에서만 R/W 가능 Slave 에서는 Read 만 가능.

   제약 : Slave 에서는 Read 만 가능하므로 Read 부하만 줄여줄수 있다. 

           두대의 장비로 두대 만큼의 성능개선 효과를 볼수가 없다. 

           장애시 아주 짧은 순간이라 할지라도 failover 되는 down time 이 발생한다. 

       

           

    - galera cluster 





  특징 : 최소 3대 이상의 서버로 구성. 서버별 별도의 스토리지. 

          하나의 서버에 이상이 생겨도 다른 서버에서 서비스 지속 가능. 

          무중단 운영 가능. 

  제약 :  각각 서버들이 중복된 DB 를 갖는 구조이기 때문에 스토리지 측면에서 비효율 적임.

           Replication 구조를 asynchronous 라고 하는데 갈레라 클러스터는 다수의 스토리지이기때문에 

           asynchronous 라고 할수 있을것 같지만 synchronous 라고 분류한다. 


  • MSSQL


    - MSCS (Microsoft Cluster Server)



    특징 : MS 서버의 기능인 클러스터링으로 두서버를 묶어서 이중화 하는 기술. 

            한쪽서버가 down 이되면 failover 되어 passive 가 active 가 됨.

            스토리지는 하나의 스토리지를 쓴다.

 

    제약 : 스토리지가 하나인 점에서는 Rac 와 유사하지만 passive 에서는 write 불가하다.

            Master-slave 구조라는 점에서는 Replication 과 유사.



벤더마다 고가용성을 위한 DB 구조의 구현방식이나 용어들이 조금씩 다르다.

그렇지만 공유 스토리지를 사용하는가? 아닌가? multi-master 인가? master-slave? 인가 에 따라 특징을 나눌수있다. 


대개 master-slave 구조에서는 failover 시 down time 이 발생할수 밖에 없고, 

Slave 에서 조회업무는 분산해줄수 있지만 실질적으로 AP 에서 조회만 따로 분리내기가 쉽지않다.

그래서 Slave 의 활용도가 떨어지기 때문에 메인 업무의 DB 구조를 master-slave 로 하는 곳은 많지않다.

mariadb 의 galera cluster 는 무중단 운영이 가능한 멀티마스터 구조를 무료로 사용할 수 있는 것이 강점이다. 

물론 상용에서는 무료로 운영하는데 어려움이 있겠지만..


## 몽고db 추가해보자


반응형
Posted by 돌고래트레이너