[database] 데이터베이스 클러스터 및로드 밸런싱

데이터베이스 클러스터링이란 무엇입니까? 동일한 데이터베이스를 두 개의 다른 서버에 두도록 허용하는 경우 데이터를 동기화하는 방법은 무엇입니까? 그리고 이것이 데이터베이스 서버 관점에서로드 밸런싱과 어떻게 다릅니 까?



답변

데이터베이스 클러스터링은 다소 모호한 용어입니다. 일부 공급 업체는 둘 이상의 서버가있는 클러스터가 동일한 스토리지를 공유한다고 생각하고 일부는 클러스터를 복제 된 서버 세트라고합니다.

복제는 지리적으로 분산 될 수있는 스토리지를 공유 할 필요없이 서버 세트가 동기화 된 상태를 유지하는 방법을 정의합니다. 두 가지 주요 방법이 있습니다.

  • 마스터-마스터 (또는 다중-마스터) 복제 : 모든 서버가 데이터베이스를 업데이트 할 수 있습니다. 일반적으로 데이터베이스 내의 다른 모듈 (또는 경우에 따라 그 위에 실행되는 완전히 다른 소프트웨어)에 의해 처리됩니다.

    단점은 잘하기가 매우 어렵고 일부 시스템은이 복제 모드에있을 때 ACID 속성을 잃는다는 것입니다.

    거꾸로 유연성이 뛰어나므로 데이터베이스를 업데이트하면서 서버의 장애를 지원할 수 있습니다.

  • 마스터-슬레이브 복제 : 신뢰할 수있는 데이터의 단일 사본 만 있으며, 이는 슬레이브 서버로 푸시됩니다.

    단점은, 내결함성이 적고, 마스터가 죽으면 슬레이브에 더 이상 변화가 없다는 것입니다.

    거꾸로 다중 마스터보다 수행하기가 쉽고 일반적으로 ACID 속성을 유지한다는 것입니다.

부하 분산은 다른 개념으로, 해당 서버로 전송 된 쿼리를 분산하여 부하가 가능한 한 고르게 분산되도록 구성됩니다. 일반적으로 응용 프로그램 계층 (또는 연결 풀)에서 수행됩니다. 복제와로드 밸런싱 간의 직접적인 관계는로드 밸런싱을 수행하기 위해 일부 복제가 필요하다는 것입니다. 그렇지 않으면 단일 서버가 있습니다.


답변

SQL Server 관점에서 :

클러스터링은 능동-수동 구성을 제공합니다. 2 노드 클러스터에서 의미하는 것은 그 중 하나가 활성 (서빙)이고 다른 하나는 수동적입니다 (활성 노드가 실패하면 인수 대기 중). 하드웨어 관점에서 고 가용성입니다.

활성-활성 클러스터가있을 수 있지만 각 노드에서 실행중인 SQL Server의 여러 인스턴스가 필요합니다. (즉, 노드 A의 인스턴스 1은 노드 B의 인스턴스 2로 장애 조치되고 노드 B의 인스턴스 1은 노드 A의 인스턴스 2로 장애 조치됩니다).

최소한 SQL Server 관점에서 볼 때 부하 분산이 존재하지 않습니다 (적어도 동일한 웹 서버 부하 분산의 의미에서). 그런 식으로 부하를 분산시킬 수 없습니다. 그러나 응용 프로그램을 분할하여 서버 1의 일부 데이터베이스에서 실행하거나 서버 2의 일부 데이터베이스에서 실행할 수도 있습니다. 이는 SQL 세계에서 “로드 밸런싱”의 주요 수단입니다.


답변

클러스터링은 일종의 공유 스토리지 (예 : 드라이브 케이지 또는 SAN)를 사용하고 두 개의 데이터베이스 프런트 엔드를 배치합니다. 프런트 엔드 서버는 클라이언트가 연결하는 데 사용하는 IP 주소와 클러스터 네트워크 이름을 공유하며 현재 클라이언트 요청을 담당하는 담당자를 결정합니다.

특정 데이터베이스 서버에 대해 질문하는 경우 질문에 추가하고 구현에 대한 세부 정보를 추가 할 수 있지만 그 핵심은 클러스터링입니다.


답변

데이터베이스 클러스터링은 실제로 시스템에 추가 된 내결함성 기능이있는 둘 이상의 노드 간 동기 복제 모드이며 공유 아키텍쳐도 아닙니다. 아무것도 공유하지 않는다는 것은 개별 노드가 실제로 디스크 나 메모리와 같은 물리적 자원을 공유하지 않음을 의미합니다.

데이터를 동기화 상태로 유지하는 한, 모든 데이터 노드가 SQL 노드와 함께 연결되어이를 달성하기 위해 관리 서버가 있습니다 (특히 MySQL에 대해 이야기).

차이점은 다음과 같습니다.로드 밸런싱은 클러스터링을 통해 달성 할 수있는 하나의 결과 일 뿐이며, 다른 하나는 고 가용성, 확장 성 및 내결함성을 포함합니다.


답변