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.