본문으로 바로가기

RECENT POST

TAG

rss   |   mail

Mysql 데이터베이스 이중화, 어렵지 않아요!

호스팅 | Posted at 2013.01.02 10:13

카페24 The 퍼펙트한 호스팅 _ Service overview
Mysql 데이터베이스 이중화 방법

사용자 삽입 이미지



인터넷 서비스를 하는 기업들은 사이트의 부하 분산과 중단없는 서비스 운영을 위해 데이터베이스 이중화를 꼭 해야 한다고 앞서 설명드렸는데요~ 이어서 이번에는 호스팅 이용자들이 가장 많이 사용하는 Mysql 데이터베이스 이중화 방법에 대해 알아보려 합니다.
☞ 다시보기: 접속 지연과 서비스 중단, 데이터베이스 이중화로 해결하세요


다양한 방법들이 있겠지만 Mysql Replication, DRBD + HeartBeat, 클러스터매니저 + 공유스토리지, Mysql Cluster 등 가장 많이 이용되는 Mysql 데이터베이스 이중화 방법을 중심으로 살펴보겠습니다. 


어떤 방법이 가장 효과적일지 판단은 여러분의 몫입니다. ^^ 그리고 이어지는 Technical Advice에서는 카페24에서 Mysql Replication, DRBD + HeartBeat 방법으로 데이터베이스를 이중화 한 고객 사례도 공개될 예정입니다. 평소 Mysql 데이터베이스 이중화에 관심이 있었다면, 이번 기회에 카페24에서 소개해드리는 방법을 참고해서 실제 적용까지 꼭 해보시기 바랍니다. 



1. Mysql Replication


가장 많이 사용하는 방법으로 2대 이상의 Mysql 서버만 있으면 별도의 패키지나 장비없이 구축이 가능합니다.


Mysql Replication은 1대의 Master 서버와 1대 또는 여러대의 slave 서버로 구성되며, Master 서버에 데이터가 기록되면 Slaver 서버가 Master 서버의 로그를 읽어서 데이터를 업데이트 하는 방식입니다. 이 경우 Master 서버에만 데이터를 기록하고 나머지 Slaver 서버들은 Master 서버를 통해서 데이터가 업데이트 되기 때문에 읽기만 가능합니다. 



사용자 삽입 이미지

<Mysql Replication>



Master 서버에 장애 발생 시 3대의 Slaver 서버들 가운데 1대가 데이터를 넘겨받은 후 서비스에 투입되어 바로 복구가 이뤄집니다. 또한 데이터를 읽고 쓰는데 Master 서버에 부하가 많이 걸리면 Slaver 서버를 이용해 ‘Master 서버에 쓰고 Slaver 서버로 읽는’ 식으로 부하를 분산할 수 있습니다.



2. DRBD + HeartBeat


DRBD(Distributed Replicated Block Device)는 네트워크상에서 양쪽 서버에 동일한 데이터를 미러링하여 저장하는 ‘데이터 동기화’ 기능을 말합니다. 쉽게 말해 네트워크상에서 동작하는 RAID Level 1 (동일한 데이터를 미러링하여 두개의 디스크에 각각 저장하여 보관하는 방식) 이라고 생각하시면 됩니다.


HeartBeat는 서버의 health check를 진행하여 Master 서버가 다운되거나 서비스에 이상이 있을 경우 Slave 서버로 자동으로 서비스를 옮겨주는 ‘서비스 이중화’ 기능을 말합니다.
 



사용자 삽입 이미지

< DRBD + HeartBeat >



평상시 DRBD를 통해 데이터를 동기화하고 HeartBeat로 Master 서버가 다운되거나 서비스에 이상이 있는지 체크해서 이상이 있을 경우 자동으로 서비스가 Slave 서버로 넘겨가도록 합니다.


Mysql Replication은 자동으로 서비스를 가져오는 기능이 없는 반면, DRBD + HeartBeat는 자동으로 서비스를 가져올 수 있다는 게 차이점이라고 할 수 있습니다. 



3. 클러스터매니저 + 공유스토리지


리눅스 패키지에 포함되는 클러스터매니저(cman) 프로그램과 공유 스토리지를 이용해서 이중화를 하는 방법입니다. 데이터베이스 엔진은 각 서버에서 구동되고 데이터는 공유 SAN 스토리지에 저장하는 방식입니다.

클러스터매니저는 HeartBeat 처럼 Master 서버가 다운되거나 서비스에 이상이 있는지 체크해서 이상이 있을 경우 자동으로 서비스가 Slave 서버로 넘겨가는 역할을 합니다.


Master 서버에서 공유스토리지를 연결해서 데이터를 읽고 쓰면서 서비스가 구동되고, 클러스터매니저가 Master 서버와 Slave 서버 간의 health check를 합니다. 만약, Master 서버에 문제가 발생하는 경우 Slave 서버가 공유스토리지를 연결해서 서비스를 구동하게 됩니다.
 



사용자 삽입 이미지

< 클러스트매니저 + SAN 스토리지 >



이 방법은 공유 SAN 스토리지 구축에 많은 비용이 들어가고, 서버 또한 IPMI(Intelligent Platform Management Interface)가 지원되는 서버일 경우만 구현 가능합니다. 구축 비용 외에 운영 비용도 비교적 많이 들어가는 편이라서 호스팅 서비스를 받은 업체들 보다는 대기업, 통신사, 금융사 등에서 주로 구축하고 있습니다.



4. Mysql Cluster


Mysql Cluster는 별도 구매가 필요한 고가 제품으로 Mysql 서비스가 실행되는 SQL node, 데이터가 저장되는 DATA node, 다른 node들을 관리하는 MGM node 세가지 서버군으로 구성됩니다.

사용자 삽입 이미지

MGM node에서 데이터를 저장하는 서버가 다운되거나 서비스에 이상이 있는지 체크하여 이상이 있을 경우 다른 서버로 서비스가 넘어가도록 합니다. 또 1대의 서버에 부하가 걸리면 다른 서버로 접속이 이뤄지도록 부하를 분산시켜 줍니다.


이 방식은 구성이 복잡하고, 구축 운영에 많은 비용이 들어간다는 점도 참조하시길 바랍니다.  

Posted by cafe24