AlwaysOn 가용성 그룹은 조건이 한 데이터베이스에서 장애 조치(failover)를 트리거할 때 함께 장애 조치(failover)되는 SQL Server 관계형 데이터베이스의 미리 정의된 컬렉션으로, 요청을 동일한 가용성 그룹의 다른 인스턴스에 있는 미러된 데이터베이스로 리디렉션합니다. 가용성 그룹을 고가용성 솔루션으로 사용하는 경우 Analysis Services 테이블 형식 또는 다차원 솔루션에서 해당 그룹의 데이터베이스를 데이터 원본으로 사용할 수 있습니다. 가용성 데이터베이스를 사용할 때는 데이터 처리 또는 가져오기, 관계형 데이터 직접 쿼리(ROLAP 스토리지 또는 DirectQuery 모드 사용) 및 쓰기 저장 등 모든 Analysis Services 작업이 예상대로 작동합니다.
처리 및 쿼리는 읽기 전용 워크로드입니다. 이러한 워크로드를 읽을 수 있는 보조 복제본으로 오프로드하여 성능을 향상시킬 수 있습니다. 이 시나리오에는 추가 구성이 필요합니다. 이 항목의 검사 목록을 사용하여 모든 단계를 수행합니다.
필수 조건
모든 복제본에 SQL Server 로그인이 있어야 합니다. 가용성 그룹, 수신기 및 데이터베이스를 구성하려면 sysadmin 이어야 하지만 사용자는 Analysis Services 클라이언트에서 데이터베이스에 액세스하기 위한 db_datareader 권한만 있으면 됩니다.
TDS(테이블 형식 데이터 스트림) 프로토콜 버전 7.4 이상(예: SQL Server Native Client 11.0 또는 .NET Framework 4.02의 SQL Server용 데이터 공급자)을 지원하는 데이터 공급자를 사용합니다.
(읽기 전용 워크로드의 경우). 읽기 전용 연결에 대해 보조 복제본 역할을 구성해야 하고, 가용성 그룹에 라우팅 목록이 있어야 하며, Analysis Services 데이터 원본의 연결에서 가용성 그룹 수신기를 지정해야 합니다. 지침은 이 항목에 나와 있습니다.
검사 목록: 읽기 전용 작업에 보조 복제본 사용
Analysis Services 솔루션에 쓰기 저장이 포함되어 있지 않으면 읽을 수 있는 보조 복제본을 사용하도록 데이터 원본 연결을 구성할 수 있습니다. 네트워크 연결 속도가 빠른 경우 보조 복제본의 데이터 대기 시간이 매우 짧아 주 복제본과 거의 동일한 데이터를 제공합니다. Analysis Services 작업에 보조 복제본을 사용하면 주 복제본에 대한 읽기-쓰기 경합을 줄이고 가용성 그룹에서 보조 복제본의 사용률을 높일 수 있습니다.
기본적으로 읽기-쓰기 및 읽기 의도 액세스는 모두 주 복제본에 허용되며 보조 복제본에 대한 연결은 허용되지 않습니다. 보조 복제본에 대한 읽기 전용 클라이언트 연결을 설정하려면 추가 구성이 필요합니다. 구성하려면 보조 복제본에서 속성을 설정하고 읽기 전용 라우팅 목록을 정의하는 T-SQL 스크립트를 실행해야 합니다. 다음 절차를 사용하여 두 단계를 모두 수행했는지 확인합니다.
비고
다음 단계에서는 기존 AlwaysOn 가용성 그룹 및 데이터베이스를 가정합니다. 새 그룹을 구성하는 경우 새 가용성 그룹 마법사를 사용하여 그룹을 만들고 데이터베이스에 조인합니다. 마법사는 필수 구성 요소를 확인하고, 각 단계에 대한 지침을 제공하고, 초기 동기화를 수행합니다. 자세한 내용은 가용성 그룹 마법사 사용(SQL Server Management Studio)을 참조하세요.
1단계: 가용성 복제본에 대한 액세스 구성
개체 탐색기에서 기본 복제본을 호스팅하는 서버 인스턴스에 연결하고 서버 트리를 펼칩니다.
비고
이러한 단계는 이 작업을 수행하기 위한 추가 정보 및 대체 지침을 제공하는 가용성 복제본(SQL Server)에서 Read-Only 액세스 구성에서 가져옵니다.
AlwaysOn 고가용성 노드 및 가용성 그룹 노드를 확장합니다.
복제본을 변경할 가용성 그룹을 선택하세요. 가용성 복제본을 확장합니다.
보조 복제본을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
가용성 복제본 속성 대화 상자에서 다음과 같이 보조 역할에 대한 연결 액세스를 변경합니다.
읽기 가능한 보조 드롭 목록에서 읽기 의도 전용을 선택합니다.
기본 역할 드롭 목록의 연결에서 모든 연결 허용을 선택합니다. 기본값입니다.
필요에 따라 가용성 모드 드롭 목록에서 동기 커밋을 선택합니다. 이 단계는 필요하지 않지만 설정하면 주 복제본과 보조 복제본 간에 데이터 패리티가 있는지 확인합니다.
이 속성은 계획된 장애 조치(failover)에 대한 요구 사항이기도 합니다. 테스트 목적으로 계획된 수동 장애 조치(failover)를 수행하려면 주 복제본과 보조 복제본 모두에 대해 가용성 모드 를 동기 커밋 으로 설정합니다.
2단계: 읽기 전용 라우팅 구성
주 복제본에 연결합니다.
비고
이러한 단계는 이 작업을 수행하기 위한 추가 정보 및 대체 지침을 제공하는 가용성 그룹(SQL Server)에 대한 Read-Only 라우팅 구성에서 가져옵니다.
쿼리 창을 열고 다음 스크립트에 붙여넣습니다. 이 스크립트는 세 가지 작업을 수행합니다. 즉, 보조 복제본에 대한 읽기 가능한 연결을 사용하도록 설정하고(기본적으로 꺼져 있음), 읽기 전용 라우팅 URL을 설정하고, 연결 요청의 방향에 우선 순위를 지정하는 라우팅 목록을 만듭니다. 읽기 가능한 연결을 허용하는 첫 번째 문은 Management Studio에서 속성을 이미 설정한 경우 중복되지만 완전성을 위해 포함됩니다.
ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433')); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01'))); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02'))); GO자리 표시자를 배포에 유효한 값으로 바꿔 스크립트를 수정합니다.
'Computer01'을 주 복제본을 호스트하는 서버 인스턴스의 이름으로 바꿉니다.
'Computer02'를 보조 복제본을 호스트하는 서버 인스턴스의 이름으로 바꿉니다.
'contoso.com'을 도메인 이름으로 바꾸거나 모든 컴퓨터가 동일한 도메인에 있는 경우 스크립트에서 생략합니다. 수신기가 기본 포트를 사용하는 경우 포트 번호를 유지합니다. 수신기에서 실제로 사용되는 포트는 Management Studio의 속성 페이지에 나열됩니다.
스크립트를 실행합니다.
다음으로, 방금 구성한 그룹의 데이터베이스를 사용하는 Analysis Services 모델에서 데이터 원본을 만듭니다.
AlwaysOn 가용성 데이터베이스를 사용하여 Analysis Services 데이터 원본 만들기
이 섹션에서는 가용성 그룹의 데이터베이스에 연결하는 Analysis Services 데이터 원본을 만드는 방법을 설명합니다. 이러한 지침을 사용하여 이전 섹션의 단계에 따라 구성한 주 복제본(기본값) 또는 읽을 수 있는 보조 복제본에 대한 연결을 구성할 수 있습니다. AlwaysOn 구성 설정과 클라이언트에 설정된 연결 속성은 주 복제본 또는 보조 복제본의 사용 여부를 결정합니다.
SQL Server Data Tools의 Analysis Services 다차원 및 데이터 마이닝 모델 프로젝트에서 데이터 원본 을 마우스 오른쪽 단추로 클릭하고 새 데이터 원본을 선택합니다. 새로 만들기를 클릭하여 새 데이터 원본을 만듭니다.
또는 테이블 형식 모델 프로젝트의 경우 모델 메뉴를 클릭한 다음 데이터 원본에서 가져오기를 클릭합니다.
연결 관리자의 공급자에서 TDS(테이블 형식 데이터 스트림) 프로토콜을 지원하는 공급자를 선택합니다. SQL Server Native Client 11.0은 이 프로토콜을 지원합니다.
연결 관리자의 서버 이름에서 가용성 그룹 수신기의 이름을 입력한 다음 그룹에서 사용할 수 있는 데이터베이스를 선택합니다.
연결 문자열에 읽기 의도를 지정하는 경우 가용성 그룹 수신기는 클라이언트 연결을 읽기/쓰기 요청을 위해 주 복제본으로 리디렉션하거나 보조 복제본으로 리디렉션합니다. 복제본 역할은 장애 조치(failover) 중에 변경되므로(주 복제본이 보조가 되고 보조 데이터베이스가 주 복제본이 되는 경우) 클라이언트 연결이 그에 따라 리디렉션되도록 항상 수신기를 지정해야 합니다.
가용성 그룹 수신기의 이름을 확인하려면 데이터베이스 관리자에게 문의하거나 가용성 그룹의 인스턴스에 연결하고 AlwaysOn 가용성 구성을 볼 수 있습니다. 아래 스크린샷에서 가용성 그룹 수신기는 AdventureWorks2입니다.
연결 관리자에서 왼쪽 탐색 창에서 [모두 ]를 클릭하여 데이터 공급자의 속성 표를 봅니다.
보조 복제본에 대한 읽기 전용 클라이언트 연결을 구성하는 경우 애플리케이션 의도 를 READONLY 로 설정합니다. 그렇지 않으면 READWRITE 기본값을 유지하여 연결을 주 복제본으로 리디렉션합니다.
가명 정보에서 특정 Windows 사용자 이름 및 암호 사용을 선택한 다음, 데이터베이스에 대해 최소 db_datareader 권한이 있는 Windows 도메인 사용자 계정을 입력합니다.
현재 사용자의 자격 증명 사용 또는 상속을 선택하지 마세요. 서비스 계정 사용을 선택할 수 있지만 해당 계정에 데이터베이스에 대한 읽기 권한이 있는 경우에만 선택할 수 있습니다.
데이터 원본을 완료하고 데이터 원본 마법사를 닫습니다.
MultiSubnetFailover=Yes를 연결 문자열에 추가하여 활성 서버에 대한 빠른 검색 및 연결을 제공합니다. 이 속성에 대한 자세한 내용은 고가용성 및 재해 복구에 대한 SQL Server Native Client 지원을 참조하세요.
이 속성은 속성 표에 표시되지 않습니다. 속성을 추가하려면 데이터 원본을 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택합니다. 연결 문자열에
MultiSubnetFailover=Yes를 추가합니다.
이제 데이터 원본이 정의됩니다. 이제 데이터 원본 뷰로 시작하거나 테이블 형식 모델의 경우 관계를 만드는 모델 빌드를 계속할 수 있습니다. 가용성 데이터베이스에서 데이터를 검색해야 하는 시점에 있는 경우(예: 솔루션을 처리하거나 배포할 준비가 된 경우) 구성을 테스트하여 보조 복제본에서 데이터에 액세스했는지 확인할 수 있습니다.
구성 테스트
Analysis Services에서 보조 복제본을 구성하고 데이터 원본 연결을 만든 후 처리 및 쿼리 명령이 보조 복제본으로 리디렉션되는지 확인할 수 있습니다. 계획된 수동 장애 조치(failover)를 수행하여 이 시나리오에 대한 복구 계획을 확인할 수도 있습니다.
1단계: 데이터 원본 연결이 보조 복제본으로 리디렉션되는지 확인
SQL Server Profiler를 시작하고 보조 복제본을 호스팅하는 SQL Server 인스턴스에 연결합니다.
추적이 실행되는 동안
SQL:BatchStarting및SQL:BatchCompleting이벤트는 데이터베이스 엔진 인스턴스에서 실행되는 Analysis Services에서 발급된 쿼리를 표시합니다. 이러한 이벤트는 기본적으로 선택되므로 추적을 시작하기만 하면 됩니다.SQL Server Data Tools에서 테스트하려는 데이터 원본 연결이 포함된 Analysis Services 프로젝트 또는 솔루션을 엽니다. 데이터 원본은 그룹 내의 인스턴스가 아닌 가용성 그룹 수신기를 명시해야 합니다.
이 단계는 중요합니다. 서버 인스턴스 이름을 지정하면 보조 복제본에 대한 라우팅이 발생하지 않습니다.
SQL Server Profiler 및 SQL Server Data Tools를 나란히 볼 수 있도록 애플리케이션 창을 정렬합니다.
솔루션을 배포하고 완료되면 추적을 중지합니다.
추적 창에 Microsoft SQL Server Analysis Services 애플리케이션의 이벤트가 표시됩니다. 보조 복제본을 호스트하는 서버 인스턴스의 데이터베이스에서 데이터를 검색하는
SELECT문을 확인할 수 있어야 하며, 이는 수신기를 통해 보조 복제본에 연결되었음을 증명합니다.
2단계: 계획된 장애 조치(failover)를 수행하여 구성 테스트
Management Studio에서 주 복제본과 보조 복제본을 확인하여 둘 다 동기-커밋 모드로 구성되고 현재 동기화되어 있는지 확인합니다.
다음 단계에서는 보조 복제본이 동기 커밋에 대해 구성되어 있다고 가정합니다.
동기화를 확인하려면 주 복제본과 보조 복제본을 호스트하는 각 인스턴스에 대한 연결을 열고 데이터베이스 폴더를 확장한 다음 데이터베이스에 각 복제본의 이름에 (동기화됨) 및 (동기화) 가 추가되었는지 확인합니다.
비고
이러한 단계는 이 작업을 수행하기 위한 추가 정보 및 대체 지침을 제공하는 가용성 그룹(SQL Server)의 계획된 수동 장애 조치(Failover) 수행에서 가져옵니다.
SQL Server Profiler에서 각 복제본에 대한 추적을 시작하고 추적을 나란히 봅니다. 다음 단계에서는 추적을 비교하여 Analysis Services에서 처리 또는 쿼리하는 데 사용되는 SQL 쿼리가 한 복제본에서 다른 복제본으로 전환되도록 확인합니다.
Analysis Services 내에서 처리 또는 쿼리 명령을 실행합니다. 읽기 전용 연결을 위해 데이터 원본을 구성했기 때문에 보조 복제본에서 명령이 실행되는 것을 볼 수 있습니다.
Management Studio에서 보조 복제본에 연결합니다.
AlwaysOn 고가용성 노드 및 가용성 그룹 노드를 확장합니다.
장애 조치할 가용성 그룹을 마우스 오른쪽 단추로 클릭하고 장애 조치(Failover) 명령을 선택합니다. 가용성 그룹 장애 조치 마법사가 시작됩니다. 마법사를 사용하여 새 주 복제본을 만들 복제본을 선택합니다.
장애 조치가 성공했는지 확인하세요.
Management Studio에서 가용성 그룹을 확장하여 (기본) 및 (보조) 지정을 봅니다. 이전에 주 복제본이었던 인스턴스는 이제 보조 복제본이어야 합니다.
대시보드를 확인하여 상태 문제가 감지되었는지 확인합니다. 가용성 그룹을 마우스 오른쪽 단추로 클릭하고 대시보드 표시를 선택합니다.
백 엔드에서 장애 조치(failover)가 완료되기까지 1~2분 정도 기다립니다.
Analysis Services 솔루션에서 처리 또는 쿼리 명령을 반복한 다음 SQL Server Profiler에서 추적을 나란히 확인합니다. 이제 새 보조 복제본인 다른 인스턴스에서 처리의 증거가 표시됩니다.
장애 조치(failover) 발생 후 발생하는 작업
장애 조치(failover) 중에 보조 복제본이 주 역할로 전환되고 이전 주 복제본이 보조 역할로 전환됩니다. 모든 클라이언트 연결이 종료되고, 가용성 그룹 수신기의 소유권이 주 복제본 역할과 함께 새 SQL Server 인스턴스로 이동하고, 수신기 엔드포인트는 새 인스턴스의 가상 IP 주소 및 TCP 포트에 바인딩됩니다. 자세한 내용은 가용성 복제본에 대한 클라이언트 연결 액세스 정보(SQL Server)를 참조하세요.
처리 중 장애 조치(failover)가 발생하면 로그 파일 또는 출력 창의 Analysis Services에서 다음 오류가 발생합니다: "OLE DB 오류: OLE DB 또는 ODBC 오류: 통신 링크 실패; 08S01; TPC 공급자: 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다." ; 08S01."
잠시 기다렸다가 다시 시도하면 이 오류가 해결됩니다. 가용성 그룹이 읽기 가능한 보조 복제본에 대해 올바르게 구성된 경우 처리를 다시 시도할 때 새 보조 복제본에서 처리가 다시 시작됩니다.
영구 오류는 구성 문제로 인해 발생할 가능성이 높습니다. T-SQL 스크립트를 다시 실행하여 라우팅 목록, 읽기 전용 라우팅 URL 및 보조 복제본의 읽기 전용 의도 문제를 해결할 수 있습니다. 또한 주 복제본이 모든 연결을 허용하는지 확인해야 합니다.
AlwaysOn 가용성 데이터베이스를 사용하는 경우 쓰기 저장
쓰기 저장은 Excel에서 What If 분석을 지원하는 Analysis Services 기능입니다. 사용자 지정 애플리케이션의 예산 및 예측 작업에도 일반적으로 사용됩니다.
쓰기 저장을 지원하려면 READWRITE 클라이언트 연결이 필요합니다. Excel에서 읽기 전용 연결에 다시 쓰려고 하면 다음 오류가 발생합니다. "외부 데이터 원본에서 데이터를 검색할 수 없습니다." "외부 데이터 원본에서 데이터를 검색할 수 없습니다."
항상 읽을 수 있는 보조 복제본에 액세스하도록 연결을 구성한 경우 이제 주 복제본에 대한 READWRITE 연결을 사용하는 새 연결을 구성해야 합니다.
이렇게 하려면 읽기/쓰기 연결을 지원하는 Analysis Services 모델에 추가 데이터 원본을 만듭니다. 추가 데이터 원본을 만들 때 읽기 전용 연결에서 지정한 것과 동일한 수신기 이름 및 데이터베이스를 사용하지만 애플리케이션 의도를 수정하는 대신 READWRITE 연결을 지원하는 기본값을 유지합니다. 이제 읽기-쓰기 데이터 원본을 기반으로 하는 데이터 원본 뷰에 새 팩트 또는 차원 테이블을 추가한 다음 새 테이블에서 쓰기 저장을 사용하도록 설정할 수 있습니다.
또한 참조하십시오
가용성 그룹 리스너, 클라이언트 연결, 및 애플리케이션 페일오버 (SQL Server)
활성 보조: 읽기 가능한 보조 복제(AlwaysOn 가용성 그룹)
AlwaysOn 가용성 그룹의 운영 문제에 대한 AlwaysOn 정책(SQL Server)
데이터 원본 만들기(SSAS 다차원)
차원 쓰기 되돌림 사용