SQL Server 고 가용성-MSCS를 사용한 미러링?


2

SQL Server 기반 응용 프로그램의 고 가용성 옵션을 찾고 있습니다.

요구 사항은 다음과 같습니다.

  • 스토리지 장애로부터 HA 보호.
  • DB 서버 중 하나에서 소프트웨어 업데이트가 진행중인 경우 데이터 액세스 가능성 (예 : Windows Update / SQL Server 서비스 팩의 계획된 중단)
  • 하드웨어 조달에 많은 관여를해서는 안됩니다.
  • 응용 프로그램은 ASP.NET 웹 응용 프로그램입니다.
  • 웹 애플리케이션 사용자는 자신의 데이터베이스 인스턴스를 가지고 있습니다.

SQL Server 장애 조치 클러스터링과 SQL Server 미러링의 두 가지 주요 옵션을 보았습니다.

SQL Server 장애 조치 (Failover) 클러스터링에는 공유 디스크 배열을 구입해야하며 공유 저장소가 다운 될 경우 보호 기능을 제공하지 않는다는 것을 이해합니다 (따라서 설명서에서는 두 클러스터간에 미러링을 설정하는 것이 좋습니다).

데이터베이스 미러링은 두 개의 데이터베이스 서버와 간단한 감시 상자 만 필요하므로 더 저렴한 옵션으로 보이지만 많은 데이터베이스가있을 때는 제대로 작동하지 않는다고 들었습니다. 내가 개발중인 응용 프로그램에는 각 클라이언트에 응용 프로그램에 대한 자체 데이터베이스를 제공하는 것이 포함됩니다. 수백 개의 데이터베이스가있을 수 있습니다. 우리가 설치 한 자동화 시스템 덕분에 미러링 설정은 문제가되지 않습니다.

마지막 요점은 클라이언트 연결과 관련하여 장애 조치가 작동하는 방식에 관한 것입니다. SQL Server 장애 조치 (Failover) 클러스터링은 MSCS를 사용하여 클라이언트가 클러스터를 볼 수 없음을 의미합니다. 장애 조치 중에 연결 시도가 실패 할 수 있지만 간단한 재 연결이 다시 작동합니다. 그러나 내가 아는 한 미러링에는 클라이언트가 미러링 된 파트너를 인식해야합니다. 클라이언트가 기본 서버에 연결할 수 없으면 보조 서버를 시도합니다.

ASP.NET 응용 프로그램의 연결 풀링과 관련하여 이것이 어떻게 작동하는지 궁금합니다. 클라이언트 연결 장애 조치는 연결 풀이 모든 연결에서 기본 서버를 시도 할 때 잠재적 인 2 초 (2000ms TCP 시간 초과 정책 가정) 일시 중지가 있음을 의미합니까 시도?

MSCS 위에서 미러링을 사용할 수있는 곳을 읽었습니다. 즉, 클라이언트가 미러링을 인식 할 필요가 없습니다. 따라서 연결 중에 잠재적 인 지연이 없으며 변경 될 필요가 없습니다. 클라이언트, 연결 문자열이 아님)-그러나이 접근법에 대한 문서 또는 백서를 얻는 것이 어렵다는 것을 알았습니다. 그러나 사실 인 경우 가장 좋은 방법은 MSCS (클라이언트 무지 및 연결 성능)를 사용한 미러링 (HA의 경우)입니다.

...하지만 수백 개의 미러링 된 데이터베이스를 포함 할 수있는 서버 인스턴스로 어떻게 확장됩니까?

답변:


1

미러링과 클러스터링을 함께 사용할 수 있다고 생각하지만 작동 방식에 대한 개념은 약간 벗어난 것 같습니다. 응용 프로그램이 미러링을 인식하도록하려면 페일 오버 파트너가 지정되도록 연결 문자열을 설정해야합니다. 이제 클러스터 장애 조치 (failover)가있는 경우 미러링 설정 방법에 따라 달라집니다. 자동 장애 조치로 설정 한 경우 미러가 대신하여 응용 프로그램이 미러링 파트너에 연결됩니다. 수동 장애 조치로 설정 한 경우 기본 노드의 클러스터에있는 다른 노드 중 하나가 SQL 서비스를 시작하고 기본 노드는 계속 트래픽을 제공합니다. 자세한 내용은 http://technet.microsoft.com/en-us/library/ms191309.aspx 를 확인하십시오 .

그 외에도 SQL 2012는 "Always On"이라는 새로운 방법을 도입했습니다. 적은 노력으로 문제를 해결할 수 있습니다.


SQL Server 2012의 "AlwaysOn"기능은 내가 원하는 것 같습니다. 클라이언트 비가 시적 복원력을 위해 MSCS와 미러링을 결합합니다. 감사.
다이

미러링에 대한 것 중 하나는 미러 된 각 데이터베이스가 제한된 (및 다른 것들과 공유되는) 스레드 풀에서 2 개 또는 3 개의 SQL 서버 스레드를 사용하므로 단일 인스턴스에서 "수백 개의 데이터베이스"를 모두 미러링하기가 어렵다는 것입니다. KB 기사 2001270을 참조하십시오. 빠른 인터넷 검색을 통해 AlwaysOn 및 스레드 사용에 대한 정보를 찾을 수 없었지만 미러링 또는 "항상 켜기"해야하는 많은 데이터베이스를 배치하기 전에 매우 신중해야합니다. 단일 인스턴스.
darin strait

100 + 데이터베이스가있는 인스턴스에서 미러링을 사용했으며 스레드 문제는 실제로 문제이지만 스레드를 늘리기위한 빠른 구성 변경으로 문제가 해결됩니다. 참고로 AlwaysOn은 Enterprise Edition 전용 기능이지만 매우 훌륭한 솔루션입니다.
Jason Cumberland
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.