클러스터링 vs. 트랜잭션 복제 및 가용성 그룹


47

한 서버 시스템에 장애가 발생하더라도 데이터베이스 백엔드로 데이터베이스 백엔드를 사용할 수 있으므로 SQL Server 2012를 사용하는 응용 프로그램을 확인해야한다고 가정합니다.

DBA가 아닌 개발자로서 장애 조치 / 고 가용성에 어떤 시나리오를 사용해야하는지 이해하기 위해 고심하고 있습니다.

  • Windows 장애 조치 (failover) 클러스터의 두 개 이상의 서버, 클러스터 된 인스턴스 인 SQL Server
  • 트랜잭션 복제를 통해 최신 상태로 유지되는 2 개 이상의 SQL Server 인스턴스
  • 동기 커밋 모드로 구성된 SQL Server 가용성 그룹의 두 개 이상의 SQL Server

각 시나리오 중 어떤 시나리오가 어떤 종류의 워크로드에 작동하며, 이러한 시나리오로 처리 할 수있는 장애 / 정지 유형은 무엇입니까? 그것들은 비교 가능하고 교환 가능합니까?

답변:


50

항상 고 가용성 솔루션을 시각화하는 방법은 다음과 같습니다.

SQL Server 장애 조치 클러스터 인스턴스 (FCI)

고 가용성이란 무엇입니까? 전체 인스턴스 여기에는 모든 서버 개체 (로그인, SQL Server 에이전트 작업 등)가 포함됩니다. 여기에는 데이터베이스 및 포함 엔티티도 포함됩니다. 고 가용성 SQL Server 인스턴스에 적합한 솔루션입니다.이 솔루션이 포함 된 수준으로 유지되기 때문입니다.

보고는 어떻습니까? 없음, NULL, 존재하지 않습니다. 장애 조치 클러스터 인스턴스에는 인스턴스, VNN 등을 포함하는 클러스터 그룹을 제공하는 활성 노드가 있으며 다른 모든 노드는 수동적이며 유휴 상태 (현재 클러스터 그룹에 관한 한)에 있고 장애 조치를 기다리고 있습니다.

장애 조치가 발생하면 어떻게됩니까? FCI의 중단 시간은 수동 노드가 클러스터 리소스를 가져 와서 SQL Server 인스턴스를 실행 상태로 만드는 데 걸리는 시간에 따라 결정됩니다. 일반적으로 시간이 최소화됩니다.

클라이언트 추상화? 예. 장애 조치 클러스터 인스턴스의 가상 네트워크 이름으로 기본 제공됩니다. 항상 현재 SQL Server 클러스터 리소스를 제공하는 활성 노드를 가리 킵니다.

AlwaysOn 가용성 그룹

고 가용성이란 무엇입니까? 가용성 그룹은 여기서 고 가용성을 논리적으로 포함하는 반면 가용성 그룹은 여러 데이터베이스와 가상 네트워크 이름 (리스너, 선택적 클러스터 리소스)으로 구성됩니다. 로그인 및 SQL Server 에이전트 작업과 같은 서버 개체는 HA 솔루션의 일부가 아니며 가용성 그룹으로 올바르게 구현되도록 특별히 고려해야합니다. 지나치게 부담이되는 요구 사항은 아니지만주의를 기울여야합니다.

보고는 어떻습니까? 아마도보고 복제본으로 동기 복제본을 사용하지 않더라도보고를위한 훌륭한 솔루션입니다. 동기 및 비동기의 두 가지 확약 관계가 있습니다. 제 생각에 실제로 본 것은 동기 보조 복제본이 재난을 기다리고 있다는 것입니다. 문제 발생시 데이터 손실없이 장애 조치를 수행 할 준비가 된 복제본으로 생각하십시오. 그런 다음 해당보고 워크로드를 처리 할 수있는 비동기 복제본이 있습니다. 이 복제본을 위에서 언급 한 솔루션으로 사용하지 않고보고와 같은 용도로 사용합니다. 보고 워크로드는이 복제본을 가리킬 수 있습니다 (리스너를 통한 읽기 전용 라우팅을 통해 직접 또는 간접적으로).

장애 조치가 발생하면 어떻게됩니까? 자동 장애 조치와 쌍을 이루는 동기 커밋 보조 복제본의 경우 복제본 역할 상태가 SECONDARY_NORMAL에서 PRIMARY_NORMAL로 변경됩니다. 자동 장애 조치가 이루어 지려면 현재 동기화 된 동기 보조 복제본 이 있어야하며 실제로 장애 조치가 발생할시기를 결정 하는 탄력적 장애 조치 정책 이 구현 됩니다. 이 정책은 실제로 구성 가능합니다.

클라이언트 추상화? 예, 선택적으로 AlwaysOn 가용성 그룹 수신기를 구성 할 수 있습니다. 기본적으로 현재 기본 복제본을 가리키는 가상 네트워크 이름 (AG 클러스터 그룹에서 클러스터 리소스로 WSFC를 통해 볼 수 있음)입니다. 이는 읽기 전용 트래픽을 리디렉션하려는 서버에서 읽기 전용 라우팅 목록을 설정하고보고 워크로드를 전환하는 데 중요한 부분입니다 (SQL 용 .NET Framework Provider를 사용하여 연결 문자열을 통해 설정 됨) 서버, 이것은 Application Intent 매개 변수이며 ReadOnly로 설정됩니다 . 보조 복제본 역할을 수행하는 동안이보고 작업을 수신하려는 각 복제본에 대해 읽기 전용 라우팅 URL을 설정해야합니다.

트랜잭션 복제

고 가용성이란 무엇입니까? 이것은 논쟁의 여지가 있지만, 아무 말도하지 않을 것 입니다. 복제를 고 가용성 솔루션으로 보지 못했습니다. 예, 데이터 수정이 가입자에게 제공되고 있지만 출판 / 문서 수준에서 논의 중입니다. 이것은 데이터의 하위 집합이 될 것입니다 (모든 데이터를 포함 할 수는 있지만 시행되지는 않습니다. 즉 게시자 데이터베이스에 새 테이블을 만들고 구독자에게 자동으로 푸시되지는 않습니다). HA가 진행되는 한, 이것은 배럴의 최하위이며, 견고한 HA 솔루션으로 그룹화하지는 않을 것입니다.

보고는 어떻습니까? 데이터 하위 집합에 대한보고를위한 훌륭한 솔루션입니다. 트랜잭션이 많은 1TB 데이터베이스가 있고 해당보고 작업 부하를 OLTP 데이터베이스에서 유지하려면 트랜잭션 복제를 사용하여보고 작업 부하를 위해 데이터의 하위 집합을 구독자 (또는 구독자)에게 푸시 할 수 있습니다. 1TB의 데이터 중보고 작업량이 50GB에 불과하면 어떻게됩니까? 이 솔루션은 현명한 솔루션이며 비즈니스 요구를 충족하도록 비교적 구성 할 수 있습니다.

요약

요약하자면 (부분적으로 비즈니스에서) 대답해야 할 몇 가지 질문이 있습니다.

  1. 고 가용성이 필요한 것은 무엇입니까 ?
  2. SLA 는 HA / DR에 대해 무엇을 지시합니까?
  3. 어떤 종류의 보고 가 이루어지고 어떤 지연이 허용됩니까?
  4. 지리적으로 분산 된 HA를 어떻게 처리해야 합니까? (스토리지 복제는 비용이 많이 들지만 FCI를 사용해야합니다. AG는 독립형 인스턴스의 공유 스토리지가 필요하지 않으며 쿼럼에 파일 공유 감시를 사용하여 공유 스토리지가 필요하지 않을 수 있습니다)

좋은 답변 주셔서 감사합니다, 토마스! 따라서 올바르게 이해하면 주 컴퓨터가 다운되면 FCI가 자동으로 "핫 스탠바이"서버로 전환됩니다. AlwaysOn은 어떻습니까? 이것도 일종의 자동 "페일 오버"를 제공합니까, 아니면 데이터베이스의 보조 사본 일 뿐입니 까? 그러나 일부 관리자는 장애 발생시 수동으로 전환해야합니까?
marc_s

+1-보고에 대한 훌륭한 답변과 좋은 정보. 교차 게시에 대해 죄송하지만 답변을 공유했을 때 3/4로 끝났습니다 :-)
Mike Walsh

1
@marc_s 도와 드리겠습니다! WSFC 자체가 다운되지 않고 (즉 쿼럼이 손실 됨) 장애 조치시 SQL Server 클러스터 리소스 그룹을 사용할 수있는 수동 노드가있는 경우 FCI에 대한 이해가 정확합니다. AlwaysOn AG의 경우 자동 장애 조치가 가능합니다. 해당 정보를 포함하도록 답변을 편집했지만 기본적으로 자동 장애 조치를 위해 구성된 동기화 된 보조 복제본이 필요합니다. 동기화 된 두 번째 복제본에 대한 데이터 손실없이 수동 장애 조치를 수행 할 수 있습니다.
토마스 스트링거

@ThomasStringer-이것은 매우 도움이됩니다. 감사합니다! 세 가지 옵션 각각에 대해 스키마 변경을 처리 할 수 ​​있는지 궁금합니다. 게시자 는 스키마 변경이 실제로 어렵다는 것을 알기 위해서만 트랜잭션 복제를 설정했습니다 . AlwaysOn은 어떻습니까? 여기서도 같은 문제가 발생합니까?
Casey Crookston

22

Windows 장애 조치 클러스터의 두 개 이상의 서버, 클러스터 된 인스턴스 인 SQL Server

  1. 어떤 종류의 작업량? "의존"-그러나 이것은 데이터 센터 고 가용성에 로컬이 필요한 온라인 애플리케이션에 유용합니다. 하나의 시스템 또는 하나의 운영 체제의 장애로부터 보호됩니다. 로그인, 작업, 새 데이터베이스, 유지 관리 등은 모두 동일한 스토리지를 공유하는 동일한 두 노드가있는 클러스터이므로 모두 동일한 시스템 데이터베이스를 갖기 때문에 자동으로 동기화됩니다. 장애 조치는 매우 빠르지 만 장애 조치가 발생할 때 여전히 SQL Server를 다시 시작하는 것처럼 보이는 딸꾹질이 있습니다.

  2. 단점 / 문제 -단일 실패 지점은 스토리지와 모든 구성 요소입니다. SAN 공급 업체는 항상 "SAN을 실패하지 않는다"하지만, 스토리지 영역 네트워크에서 움직이는 부분이 많이있다라고 나는에 대한 블로그로 여기에 , 그들은 할 수 있습니다. 또한-당신은 아무것도 할 수없고 걸어서 기다릴 수있는 2 차 서버에 대한 비용을 지불하고 있습니다. 이제 액티브 / 액티브 / 멀티 노드를 수행 할 수 있고 두 방향으로 장애 조치를 수행하고 두 번째 노드를 사용할 수있는 두 개의 활성 인스턴스를 가질 수 있습니다.

  3. 자동 장애 조치? "가장"자동입니다. 증인이 필요하지 않으며 클러스터입니다. 이것은 가능한 한 매끄럽게 만드는 클러스터의 역할입니다. 이제 이들 중 어떤 것이라도 장애 조치가 발생하면 SQL을 시작하거나 연결을 가리켜 야하기 때문에 장애를 느끼게됩니다. 이 상황이 발생하면 기본적으로 SQL이 다시 시작되는 것처럼 느껴지고 DB가 백업되어 복구 등을 실행합니다.

클라이언트에 다운 타임에 대한 허용 오차가 매우 낮기 때문에 로컬 데이터 센터의 고 가용성 환경에서 "모든 데이터베이스, 모든 로그인 등을 완벽하게 유지하고 싶습니다"라고 말하면 장애 조치 클러스터 인스턴스를 고려해야합니다. 마지막으로 언급 한 옵션은 강력한 경쟁자이며 일부 관리 오버 헤드를 수행하지 않아도됩니다). 사이트 오류나 SAN 오류로부터 보호하기 위해 로컬 FCI와 AG 비동기 보조를 수행 할 것입니다.

트랜잭션 복제를 통해 최신 상태로 유지되는 두 개 이상의 SQL Server 인스턴스

  1. 어떤 종류의 작업량? 솔직히 고 가용성 또는 재해 복구가 가장 필요한 경우에는 여기에 가지 않겠습니다. SQL 2012에는 없습니다. 그러나 기본적으로 가까운 거리에 있지 않은 데이터 센터로 가야한다면 AG를 사용할 수 없었습니다 (AG에 필요한 Windows 클러스터를 사용하지 못하게하는 도메인 문제 일 수 있음). SQL Server 표준에서는 복제를 수행 할 수 있지만 AG는 수행 할 수 없지만 여전히 보조를 읽고 비동기 적으로 처리 할 수있는 기능을 원했습니다.
  2. 단점 / 우려- 복제입니다. 오버 헤드가 있고 동기화되지 않을 수 있으며 소스 측의 성능 문제를 일으킬 수 있습니다.
  3. 자동 장애 조치 -아니요. 직접 관리해야합니다. 둘 중 하나를 가리키는 CNAME을 통해 이론적 으로이 작업을 수행 할 수는 있지만 즉시 사용할 수 있습니까? 여기를 참고하십시오.

동기 커밋 모드로 구성된 SQL Server 가용성 그룹의 두 개 이상의 SQL Server

이것이 사람들이 점점 더 최근에 구현하도록 돕고 있지만 때로는 여전히 클러스터링에갑니다.

  1. 어떤 종류의 작업? 관리 할 수있는 데이터베이스 세트가 동기화되어 있고 작업, 로그인, 새 데이터베이스 등이 동기화 상태를 유지할 수있는 리소스와 시간이있는 경우에 유용합니다 ( SQL Skills 팀 이 옵션을 더 강력하게 만들기 위해이 중 일부를 자동화하십시오.) 나는 물건을 완전히 분리하고 싶을 때 이것을 좋아합니다. 하드웨어 문제, OS 문제, SQL 설치 문제, 패치 문제 및 SAN / 스토리지 문제로부터 보호하고 있습니다. 또한 보조 라이센스 (엔터프라이즈 라이센스를 지불하려는 경우)를 읽을 수 있고 백업을 수행 할 수있는 활성 보조 라이센스로 사용할 수 있다는 이점도 얻습니다. 원격 사이트에서 비동기적이고 장애 조치 / DR이있는 보조
  2. 단점 / 문제점 최대 복제본 수, 최대 혜택 (액티브 2 차)을 활용하기위한 라이센스 비용, 엔터프라이즈 필요, 클러스터링보다 2 배 많은 스토리지가 필요합니다.
  3. 자동 장애 조치 -예. 이는 미러링 모니터 설정에서 발생할 수 있으며, 앱 개발자는 노드 대신 리스너에 연결할 수 있으므로 리스너가 가리키는 위치에서 장애 조치가 발생하므로 사용자는 그곳에 있어야합니다. 예, 여기서 할 수 있습니다. 물론 테스트해야합니다.

요약

HA와 DR은 다릅니다. 그리고이 기술들은 둘 중 하나를 제공하는 데 도움이됩니다. 고 가용성이란 한 시스템에 문제가 발생하면 복구 지점 목표 및 복구 시간 목표가 짧다는 것을 신속하게 복구 할 수 있음을 의미합니다. 그것은 클러스터링과 동기식 AG입니다.

재해 복구는 "HA 솔루션에서도 장애가 발생했을 때 일어날 수 있습니다. 다른 데이터 센터, 미러링 또는 복제로 갈 때 AG가 될 수 있습니다.


1
또 다른 위대한 답변 +1-감사합니다! 구름이 맑아지고 있습니다!
marc_s

2
감사. 각각의 자동 장애 조치에 대한 메모를 추가했습니다.
Mike Walsh

2
@marc_s clustering (FCI)과 AG는 상호 배타적이지 않습니다. Node1과 Node2를 동일한 데이터 센터 (공유 스토리지)에 클러스터링하고 원격 데이터 센터 (동일 클러스터에 있지만 스토리지를 공유하지 않음)의 세 번째 독립 인스턴스로 AG를 수행 할 수 있습니다.
DaniSQL

2
@DaniSQL 계약의 +1 ;-) 게다가 당신은 훨씬 적은 단어로 말했다.
Mike Walsh

1
나는 매우 훌륭하고 깊이있는 토마스와 당신의 대답을 받아 들일 수 있었으면 좋겠습니다. 감사합니다!
marc_s

9

공유 대상 을 고려하는 것도 중요합니다 .

장애 조치 클러스터링은 하나의 디스크 배열을 공유하는 둘 이상의 서버 노드를 사용합니다 . 디스크 어레이가 다운되면 서버 노드 수에 관계없이 서비스가 손실됩니다. 해당 디스크 어레이가있는 서버 실에서 화재 나 홍수가 발생하면 서비스를 잃게됩니다.

AlwaysOn 가용성 그룹 및 데이터베이스 미러링은 "공유 없음"클러스터링 기술입니다. 데이터베이스는 여러 서버의 여러 디스크 배열에 있습니다. 네트워크 연결 상태가 양호하면 여러 서빙이 여러 서버 실에있을 수있어 화재 나 홍수로부터 사용자를 보호 할 수 있습니다.


6

완전성을 위해 일반 오래된 미러링을 사용하는 옵션이 있습니다. 가용성 그룹 사용의 복잡성과 장애 조치 (failover) 클러스터링을위한 공유 저장소가 필요없는 두 개의 데이터베이스 복사본이 여기에 있습니다. 단점은 미미하지만 미러링은 더 이상 사용되지 않습니다.

응용 프로그램 코드는 장애 조치시 발생하는 모든 트랜잭션을 다시 시도 할 수 있어야하지만 미러링을 사용한 장애 조치 시간은 10 초 정도입니다.


2
+1 개별적이고 구체적으로 설명 해주신 분께 :) 즉, 미러링은 덜 복잡하며 AG에있는 클러스터 요구 사항, 그와 함께 제공되는 도메인 요구 사항 등이 없다고 주장 할 수 있습니다. 따라서 여전히 복잡하고 로그인, 작업, 새 데이터베이스 등을 AG와 동기화 할 필요가 있습니다. 그래서 그것은 같은 비용 중 일부를 가지고 있으며 당신이 말했듯이 더 이상 사용되지 않습니다. 하지만 난 여전히 설치 및 :) 사람들을 위해 오늘 새로운 거울을 배포
마이크 월시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.