가용성 그룹은 원활한 장애 조치 (쿼리 실패없이)를 제공 할 수 있습니까?


9

SQL Server 2012에서 가용성 그룹 기능을 테스트 한 결과 기본 서버가 보조 서버로 장애 조치 될 때 약 15 초의 중지 시간이 있음을 발견했습니다. 이 시간 동안 실행 된 모든 SQL 쿼리는 장애 조치 전환이 완료 될 때까지 실패합니다.

이 값을 0 초로 낮추고 장애 조치 전환 중에 쿼리가 실패하지 않도록하는 방법이 있습니까?

즉, 실패하는 동안 실행되는 쿼리를 실패 대신 기본 서버로 리디렉션하는 방법이 있습니까? 그리고 실패하지 않고 보조 서버에 즉시 연결하기 위해 새 db 연결을 얻는 방법이 있습니까? 장애 조치 전환 중에 연결 하시겠습니까?

현재 가용성 그룹에 2 개의 서버가 설정되어 있습니다.


1
이 질문과 답변을 확인하십시오 : dba.stackexchange.com/questions/25124/…
Max Vernon

오직 Oracle RAC만이 그렇게 할 수 있습니다.
Richard Brown

또는 HAproxy와 같은 SQL Server 앞의 적절한 설정에서 Linux loadballancer를 사용해야합니다.
kakaz

답변:


9

아니요, AlwaysOn으로 (또는 내가 아는 한 일반적으로 SQL Server에서) 다운 타임 장애 조치를 수행 할 수있는 방법이 없습니다. 이를 위해서는 연결된 SQL Server가 쿼리 도중 다른 노드로 상태 전송을 수행해야하며 많은 장애 조치가 예상치 않기 때문에 불가능합니다.

그러나 AlwaysOn에서 "읽기 전용 보조 기능"을 활성화하면 주 서버가 장애 조치 될 때 독자는 다운 타임이 발생하지 않습니다. 어쨌든 보조 쿼리에 연결하여 SELECT 쿼리를 수행하기 때문입니다. 심지어 장애 조치에 주목하십시오. "쓰기"연결이 열려있는 사용자에게는 여전히 중단이 발생하지만 최소한 사용자층의 일부는 중단되지 않습니다.


"읽기 전용 보조 노드가"활성화하면, 할 모든 읽기 요청이 기본에 발생하거나 항상 세컨더리에 완료? 이 상황에서 보조 서버에 결함이 있으면 어떻게됩니까?
John

보조에 대한 읽기는 보조에 연결하도록 클라이언트를 구성한 경우에만 발생합니다.
Max Vernon

1
더 똑똑한 클라이언트 앱이 필요합니다.
John

@JohnHughes :이 Microsoft 문서 (5 페이지 중간) : tinyurl.com/9dtvndv 및이 블로그 게시물 : tinyurl.com/8cyr9za를 확인하십시오 . 더 똑똑한 앱이 필요하지는 않습니다.이 기능을 활성화하면 모든 응용 프로그램이 읽기 가능한 보조 서버에 연결할 수 있지만 DDL / DML 트랜잭션을 수행하려는 시도는 실패하도록 지정할 수 있습니다. 최신 기본 클라이언트를 사용하는 경우 "ReadIntent"를 지정할 수 있습니다. 즉, 최신 클라이언트는 보조 클라이언트에서 읽고 이전 클라이언트는 기본 클라이언트에 대한 모든 트랜잭션을 계속 수행합니다. 옵션이지만 약간의 독서가 필요합니다.
SqlRyan

SqlRyan은 정확하며 클라이언트 연결을 끊지 않고 AlwaysOn 가용성 그룹을 사용하여 SQL Server 인스턴스를 장애 조치 할 수있는 방법이 없습니다.
mrdenny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.