고가용성 DBMS를 추구하는CUBRID 2008 R2.0

 

출처 : 월간 마이크로소프트웨어 8월호

 


CUBRID
는 국산 데이터베이스로 인터넷에 최적화된 플랫폼을 지향하는 엔터프라이즈급 오픈소스 DBMS이다.

2008 11월 오픈소스 선언 후, CUBRID 2008 R1.0을 출시하면서 국내 개발자들을 대상으로 오픈소스 프로젝트를 개설하고 꾸준히 업그레이드 버전을 출시하고 있다. 그리고 오는 2009년 가을 CUBRID 2008의 새로운 버전인 R2.0을 출시할 예정이다. CUBRID 2008 R2.0의 새로운 기능 중 두 가지를 꼽아보면 하나는 64비트 OS 지원이고 다른 하나는 High Availability 기능이다.

이 글에서는 CUBRID 2008 R2.0 High Availability 기능을 중심으로 하반기에 출시 예정인 CUBRID 2008에 대해 살펴 보고자 한다.

 

High Availability DBMS의 이해

인터넷, 무선통신, 전자상거래, 온라인 금융 서비스 등 우리는 IT 서비스를 익숙하게 제공 받으며 현재를 살아가고 있다. 급변하는 IT환경 속에서 살아가는 현대인들에게 이러한 서비스를 언제 어디서나 제공 받을 수 없다는 것은 상상조차 할 수 없는 일이 되었다.

이제 서비스 제공자들은 보다 양질의 서비스를 제공하고 고객 만족을 극대화하기 위해 1 365일 중단 없는 서비스가 가능한 기술력을 모으고 있다.

 

하지만 언제 발생할지 모르는 장애는 상당한 불안요소이다. 예를 들어 앞서 나열한 모든 서비스에는 데이터베이스관리시스템(DBMS)이 사용되며 하드웨어 장애로 데이터베이스가 손상되어 서비스가 중단되는 등의 긴급한 상황에서는 이를 복구하기까지 상당한 시간과 비용이 소요될 수도 있다. 이는 서비스 제공자에게 기업의 신뢰도를 잃고, 현실적으로는 매출과 같은 기업 실적에도 중요한 손실을 끼칠 수 있는 매우 위험한 일일 것이다. 예상하지 못한 장애가 아니더라도 불안 요소는 또 존재한다. 예를 들면 높아지는 사용자의 요구 수준을 충족시키기 위한 하드웨어나 소프트웨어 업그레이드와 같은 작업으로 인해 서비스가 중단될 수 있고 사용자는 이로 인해 불편함을 느끼게 될 것이다. 이러한 상황이 반복될 경우 불편함을 감수하는 사용자는 많지 않을 것이다. 이와 같이 예상치 못한 장애에 의한 서비스 중단 시간(Unplanned Downtime)이나 서비스 운용에 의한 예측된 서비스 중단 시간(Planned Downtime)의 증가는 서비스 제공자에게 위협적인 요소가 된다.

 

위와 같은 예상치 못한 장애로 인한 데이터베이스 손상에 대비하기 위해 대부분의 DBMS 벤더들은 자사의 제품에 백업 또는 복제 기능을 제공하여 안정성을 향상시키고 있으며, CUBRID 또한 2005년 출시된 7.3 버전부터 복제 기능을 제공하고 있다.

하지만 복제 기능만으로는 사용자가 불편함을 느끼지 못할 만큼 서비스 중단 시간을 단축시키기 어렵다. 따라서 서비스 중단 시간을 최소화시켜 서비스의 가용성을 최대한 확보하기 위한 기능이 필요한 것이다. 이것이 흔히고가용성 기능이라고 해석되는 High Availability 기능이며 데이터베이스관리시스템에 적용한 것이 High Availability DBMS이다.

High Availability DBMS는 여러 시스템에 동일한 데이터베이스를 유지하도록 데이터를 항상 동기화하여 서비스를 제공한다. 그리고 서비스를 제공 중인 시스템에 예상치 못한 장애가 발생하였을 경우에는 자동으로 다른 시스템이 서비스를 수행하도록 하여 서비스 중단 시간을 최소화시키는 기능이다. CUBRID 2008 R2.0에서는 기존의 복제 기능에서 한 단계 더 발전된 High Availability 기능을 추가해 신뢰성 및 가용성을 향상시키고자 한다.

 

CUBRID High Availability 기능

CUBRID High Availability(HA) 기능은 Shared-nothing 분산 아키텍처 기반이며 마스터 DB 서버로부터 슬레이브 DB 서버로의 데이터 동기화를 위해 다음과 같이 두 단계를 수행한다.

첫째는, 마스터 DB 서버에서 생성되는 트랜잭션 로그를 실시간으로 다른 node에 전송하는 트랜잭션 로그 다중화 단계이다.

둘째는, 실시간으로 전송되는 트랜잭션 로그를 분석하여 슬레이브 DB 서버로 데이터를 반영하는 트랜잭션 로그 반영 단계이다.

그림 1과 같이 CUBRID HA 기능은 두 단계의 동기화 기능을 수행하여 마스터 DB와 슬레이브 DB간에 항상 동일한 데이터를 유지한다.

1.PNG
<
그림 1 CUBRID HA의 트랜잭션 로그 다중화를 이용한 데이터 동기화의 예>

 

Shared Nothing 분산 아키텍처 기반의 여러 제품도 복제 또는 HA 기능을 제공하기 위해 로그 전송을 이용한 데이터 동기화를 수행한다. 제품별로 지원하는 로그 전송 방식을 비교하면 1과 같으며 CUBRID HA 기능에서는 다양한 로그 전송 방식을 지원함으로써 서비스 운용 정책에 따라 유연하고 선택적인 동기화 수행이 가능하다.

 

 

DBMS

지원하는 트랜잭션 로그 전송 방식

CUBRID 2008 Replication

Asynchronous

CUBRID 2008 R2.0 HA

Synchronous / Asynchronous / Semi synchronous

MySQL 5.x Replication

Asynchronous

MySQL Cluster

Synchronous / Asynchronous

Informix Dynamic Server HDR

Synchronous / Asynchronous

Postgres Plus (enterprisedb)

Asynchronous

DB2 HADR

Synchronous / Asynchronous / Near synchronous

<1 여러 DBMS 제품의 동기화 방식>

 

앞서 설명한 바와 같이, CUBRID HA 기능으로 구성된 모든 DB 서버는 트랜잭션 로그 다중화와 트랜잭션 로그 반영 단계를 수행해 동일한 데이터를 소유하도록 실시간으로 동기화가 이루어진다.

따라서 수행 중이던 마스터 DB 서버에 예상치 못한 장애가 발생하였을 경우 슬레이브 DB 서버가 마스터 DB 서버를 대신하여 서비스를 수행하면 이미 동기화된 데이터를 통해 중단 없는 서비스를 제공할 수 있다. 또한 장애 복구 후에도 동기화 과정이 자동으로 수행되어 항상 동일한 데이터가 유지된다.

이를 위해 CUBRID HA 구성에서는 장애와 구성 요소(리소스)들을 실시간으로 감시하고 관리하여 시스템 관리자의 작업 없이 자동으로 절체 기능(failover/failback)을 수행한다.

그림 2 Master DB가 존재하던 Node A에 장애가 발생하면 Node S에서 장애를 감지하고 슬레이브 DB 서버를 마스터 DB 서버로 전환하여 서비스를 중단 없이 제공하는 예이다.
2.PNG

<그림 2 Node A 장애 발생 시 자동 절체 (Failover)>

 

서비스 제공자와 사용자를 위한 CUBRID HA 기능

서비스 제공자는 앞서 설명한 CUBRID HA 기능을 사용하여 다음과 같은 다양한 혜택을 얻을 수 있다.

l  장애 발생 및 장애 복구 시 자동 절체를 통해 중단 없는 고가용성 서비스 제공이 가능하다.

l  서비스 중단 없이 OS, 소프트웨어 업그레이드 및 장비 교체, 확장 등의 시스템 관리 작업이 가능하다.

l  쓰기 전용 Active DB node와 읽기 전용 Standby DB node를 분리하여 부하 분산용 구성으로 운영이 가능하다

l  비동기식 로그 다중화를 이용하여 지역적으로 분산된 원격 IDC 간에도 성능 저하 없는 HA 구성을 제공한다.

l  여러 대의 마스터 DB node와 하나 이상의 슬레이브 DB node로 구성하여 하드웨어 비용을 절감할 수 있다. (그림 3)

3.PNG
<
그림 3 CUBRID HA 구성도 - N+1 DB 구성의 예>

이외에도 다단계 장애에 대비하는 다양한 구성을 통해 높은 안정성 및 가용성을 확보하여 사용자에게 수준 높은 서비스를 제공할 수 있다.

 

결론

과거에는 백업이나 복제와 같은 기능을 이용하여 안정성을 확보하였으나 현재의 사용자는 안정성뿐만 아니라 장애에 대비한 높은 안정성과 가용성, 다양한 구성 및 운용상의 편의성을 요구한다. 이러한 사용자의 요구를 충족시키고 인터넷 서비스에 최적화된 DBMS를 만들고자 CUBRID 2008 R2.0에서 HA 기능이 개발된 것이다. CUBRID는 앞으로도 클러스터와 같은 기능 개발을 통하여 한 단계 더 높은 도약을 준비하고 있다. 또한 CUBRID는 개인이나 기업이 부담 없이 사용할 수 있는 오픈소스 라이선스 정책을 가진 국산 DBMS, 오픈소스 프로젝트에 참여하는 많은 개발자들과 “함께” 만들어가는 세계적인 DBMS가 되길 희망한다.