보통 데이터베이스 구축의 경우 1개의 서버로 하나의 데이터베이스를 구축해서 사용하는 편이다.
그런데 이렇게 1개의 서버가 하나의 데이터베이스를 사용할 경우 이 서버가 죽으면 서비스가 죽는 현상이 발생하게 됩니다.
또는 사용자가 엄청나게 유입되었을 때 이에 대한 처리나 서버 하나가 처리할려고 하면 서버는 견디지 못하고 뻗어버립니다.
이런 여러가지 이유로 하나의 데이터베이스를 여러 서버가 나눠서 구축하게 됩니다.
이처럼 하나의 데이터베이스를 여러개의 서버로 구추고디는 경우를 클러스터라고 합니다.
- 고가용성
- 병렬처리
- 성능향상
데이터베이에서 가용성이란 데이터베이스가 동작하기 있는 시간과 정지한 시간의 비율을 뜻합니다.
즉, 1년 동안 몇 분이 정지했음을 비율로 나타낸 것이 가용성이다.
데이터베이스도 컴퓨터 위에서 돌아간다. 컴퓨터는 여러 이유로 멈출때가 있다.
이런 현상이 일어났을 때 서버가 하나뿐이라면 서비스는 데이터베이스가 복구될 때까지 정지되는 크나큰 장애가 발생한다.
이런 현상이 일어났을 때 서버가 하나뿐이라면 서비스는 데이터베이스가 복구될 때까지 정지되는 크나큰 장애가 발생하게 된다.
이처럼 **한 부분에 문제가 전체 시스템을 정지시켜 버리는 것을 SPOF(SIngle Point Of Failure)**이라고 한다. 이를 해결하기 위해서 고가용성 클러스터를 사용해야 한다.
고가용성이란?
: 데이터베이스 장비(서버나 스토리지등)를 각 2대 이상으로 구성하여 한쪽에 장애가 발생하면 동일한 데이터를 가진 복제 데이터베이스(이중화된 데이터베이스)로 빠른 시간 내에 서비스를 재개할 수 있도록 하는 것을 의미한다.
데이터베이스 클러스터 시스템은 이 고가용성을 만족시킬 수 있어야한다.
테이블에 데이터도 엄청 많고 컬럼도 엄청 많아 SQL 문이 복잡하게 처리될 경우 SQL문을 실행하는데 많은 시간이 걸리게 됩니다.
이런 상황에서 데이터베이스를 여러개의 단위별로 병렬처리해서 결과를 통합하여 넘겨준담녀 훨씬 빠르게 결과를 얻을 수 있습니다.
복제 데이터베이스는 항상 원본 데이터베이스와 같은 데이터를 가지고 있기 때문에 DML을 고려해 분산시키면 전체적인 성능향상을 시킬 수 있습니다.
데이터베이스를 사용하는 사용자가 엄청나게 많아질 경우 데이터베이스의 복제본을 만들어서 참조 처리의 경우 복제 데이터베이스를 사용하면 사용자가 많아져도 대비를 할 수 있습니다.
데이터베이스 클러스터는 이러한 성능향상을 만족시킬 수 있어야 합니다.
- 데이터베이스 클러스터란 여러개의 서버가 하나의 데이터베이스를 나눠 처리하는 형태를 뜻한다.
- 고가용성, 병렬처리, 성능향상 이러한 3가지를 만족하는 시스템의 구성을 데이터베이스 클러스터라고한다.