one of a kind scene

4-2 데이터 처리 기술_분산 데이터 저장 기술 part2_데이터베이스 클러스터 본문

ADP/이론

4-2 데이터 처리 기술_분산 데이터 저장 기술 part2_데이터베이스 클러스터

specialscene 2019. 11. 22. 00:58

분산 데이터 저장 기술 part2_데이터베이스 클러스터

데이터베이스 클러스터

 

1. 개념

    ① 데이터베이스 클러스터는 하나의 데이터베이스를 여러 개의 서버(또는 가상 서버) 상에 구축하는 것을 의미

    ② 데이터베이스 파티셔닝은 데이터베이스를 여러 부분으로 분할하는 것을 의미. 분할된 각 요소는 파티션이라고 함.

    ③ 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션을 수행

 

2. 데이터베이스 파티셔닝 구현의 효과

    ① 병렬처리 : 파티션 사이의 병렬처리를 통해 빠른 데이터 검색 및 처리 성능을 얻을 수 있음

    ② 고가용성 : 특정 파티션에서 장애가 발생하더라도 서비스가 중단되지 않는다

    ③ 성능향상 : 성능의 선형적인 증가 효과를 볼 수 있다.

 

3. 데이터베이스 클러스터의 구분

   

   <데이터베이스 시스템을 구성하는 형태>

    ① 단일 서버 내의 파티셔닝

    ② 다중 서버 사이의 파티셔닝

 

    <리소스 공유 관점>

    ① 무공유 디스크

         • 각 데이터베이스 인스턴스(=노드)는 자신이 관리하는 데이터 파일을 자신의 로컬 디스크에 저장

         • 파일들은 노드간에 공유하지 않는다

         • 각 인스턴스나 노드는 완전히 분리된 데이터의 서브 집합에 대한 소유권을 가지고 있음

         • 대부분의 데이터베이스 클러스터가 무공유 방식을 채택

 

         <장점>

         • 노드 확장에 제한이 없다

 

         <단점>

         • 각 노드에 장애가 발생할 경우 별도의 폴트톨러런스(fault-tolerance)를 구성해야함

            ※ 폴트톨러런스 : 시스템에 고장이 발생하더라도 모든 기능 혹은 기능의 일부를 기존과 같이 유지하는 기술

 

    ② 공유 디스크 : Oracle RAC 데이터베이스 서버 꼭! 기억!!!

         • 공유 디스크 (데이터베이스) 클러스터에서 모든 (데이터베이스) 인스턴스(=노드)들은 데이터 파일을 논리적으로 공유하며, 각 인스턴스는 모든 데이터에 접근 가능

         • 데이터를 공유하려면 SAN(Storage Area Network)과 같은 네트워크가 반드시 필요

         • 모든 노드가 데이터 수정 가능

         • 노드간의 동기화 작업 수행을 위한 별도의 커뮤니케이션 채널 필요

 

         <장점>

         • 높은 수준의 폴트톨러런스(fault-tolerance)를 제공

         • 클러스터를 구성하는 노드 중 하나만 살아있어도 서비스 가능

 

         <단점>

         • 클러스터가 커지면 디스크 영역에서 병목현상 발생

 

 

4. 데이터베이스 클러스터의 종류

 

    ① Oracle RAC 데이터베이스 서버 : ★공유 디스크 방식

         • Oracle RAC는 공유 클러스터이기 때문에, 데이터는 공유 스토리지에 저장

         • 클러스터의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 엑세스

         • 특정 노드가 데이터를 '소유'하는 개념이 없다

         • 공유 디스크 방식이기 때문에 데이터를 파티셔닝할 필요가 없지만, 성능 향상을 위해 파티셔닝되는 경우가 빈번

         • 도입 비용 때문에 확장성이 중요한 데이터보다는 고가용성을 요구하는 데이터에 많이 사용

 

         <장점>

         • 가용성 : 높은 수준의 폴트톨러런스(fault-tolerance)를 제공, 노드 중 하나만 살아있어도 서비스 가능

         • 확장성 : 추가 처리 성능 필요시 application이나 데이터베이스를 수정할 필요 없이 새 노드를 클러스터에 쉽게 추가

         • 비용절감 : 저가형 상용 하드웨어의 클러스터로도 고가의 SMP 시스템만큼 효율이 남

            ex) 4CPU의 16노드 클러스터를 사용하면 동급 성능의 64CPU SMP 시스템 정도의 성능이 남

 

         <단점>

         • 클러스터가 커지면 디스크 영역에서 병목현상 발생

 

    ② IBM DB2 ICE(Integrated Cluster Environment)

         • DB2는 CPU/메모리/디스크를 파티션별로 독립적으로 운영하는 무공유 방식의 클러스터링

         • 애플리케이션은 여러 파티션에 분산된 데이터베이스를 하나의 데이터베이스(Single View Database)로 보게됨

         • 따라서, 데이터가 어느 파티션에 존재하고 있는지 알 필요가 없음(하나의 데이터베이스로 보니깐)

         • 사용자가 증가하면 기존 시스템에 노드를 추가하고 데이터를 재분배함으로써 시스템의 성능과 용량을 일정하게 유지 가능

         • 하나의 노드에 장애가 발생할 경우 해당 노드에서 서비스하는 데이터에 대한 별도의 페일오버(failover)메커니즘 필요

            ※ 페일오버 : 데이터베이스의 최신 버전을 백업해두어, 1차 시스템에 장애가 발생하였을 경우 대체 시스템을 작동시켜 장애를 극복하는 기능

         • 장애 상황이 발생하게 되면 다른 노드가 해당 데이터에 대한 서비스를 처리하는 방식으로 가용성을 보장

 

    ③ 마이크로소프트 SQL Server

         • SQL Server는 무공유 방식이며 연합(Federated) 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능 제공

         • 연합 데이터베이스는 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터베이스들 간의 논리적 결합이며, 네트워크를 이용하여 연결

         • 각 노드의 데이터베이스 인스턴스 사이에 링크를 구성한 후 모든 파티션에 대해 UNION ALL을 이용해 논리적인 뷰(VIEW)를 구성하는 방식으로 분산된 환경의 데이터에 대한 싱글 뷰를 제공 SQL Server에서는 이런 뷰를 DPV(Distirbuted Partitioned View)라고 한다

 

         <마이크로소프트 SQL Server 구성의 문제점>

         • DBA나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야 하고, 전역 스키마(Global schema) 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스 해야함

         • 노드의 개수가 작으면 간단하게 구성할 수 있지만, 노드가 많아지거나 노드의 추가/삭제가 발생하는 경우 파티션을 새로 구성해야함

         • 페일오버에 대해서는 별도로 구성해야함

         • SQL Server에서도 페일오버(failover) 메커니즘을 제공하지만, Active-Active가아닌 Active-Standby 방법을 사용

 

    ④ MySQL

         • MySQL 클러스터는 무공유 방식으로서 메모리(최근 디스크도 제공) 기반 데이터베이스의 클러스터링을 지원

         • 특정 하드웨어 및 소프트웨어를 요구하지 않고 병렬 서버구조로 확장 가능

         • 데이터의 가용성을 높이기 위해 데이터를 다른 노드에 복제시켜, 특정 노드에 장애가 발생하더라도 지속적인 데이터 서비스가 가능

         • 장애가 발생했던 노드가 복구되어 클러스터에 다시 투입된 경우에도 기존 데이터와 변경된 데이터에 대한 동기화 작업이 자동으로 수행됨

         •데이터는 동기화 방식으로 복제되며, 이를 위해 일반적으로 데이터 노드 간에는 별도의 네트워크를 구성 

 

         <MySQL 구성>

         • 관리 노드(Management Node), 데이터 노드(NDB Node), MySQL 노드 3가지로 구성

         • 관리 노드 : 클러스터를 관리하는 노드, 클러스터 시작과 재구성 시에만 관여

         • 데이터 노드 : 클러스터의 데이터를 저장하는 노드 

         • MySQL 노드 : 클러스터 데이터에 접근을 지원하는 노드 

         •총 노드최대 갯수는 255개이며, 데이터 노드의 최대 갯수는 48개  

 

         <MySQL 클러스터를 구성을 할 경우의 제한 사항>

         •모든 클러스터의 기종은 동일해야하며 기종에 따른 비트 저장방식이 다르면 문제가 발생 

운영 중에 노드를 추가/삭제할 수 없다       

         • 운영 중에 노드를 추가/삭제할 수 없다