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의 경우)입니다.
...하지만 수백 개의 미러링 된 데이터베이스를 포함 할 수있는 서버 인스턴스로 어떻게 확장됩니까?