적용 대상: SQL Server 2019(15.x)
Important
Microsoft SQL Server 2019 빅 데이터 클러스터는 사용 중지되었습니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일부터 종료되었습니다. 자세한 내용은 Microsoft SQL Server 플랫폼의 공지 블로그 게시물 및 빅 데이터 옵션을 참조하세요.
SQL Server 빅 데이터 클러스터는 Kubernetes에 컨테이너화된 애플리케이션으로 있으며 상태 저장 집합 및 영구 스토리지와 같은 기능을 사용하므로 이 인프라에는 클러스터 구성 요소가 서비스 상태를 유지하기 위해 활용하는 기본 제공 상태 모니터링, 오류 검색 및 장애 조치(failover) 메커니즘이 있습니다. 안정성 향상을 위해 고가용성 구성에서 추가 복제본과 함께 배포하도록 SQL Server 마스터 인스턴스 및/또는 HDFS 이름 노드 및 Spark 공유 서비스를 구성할 수도 있습니다. 모니터링, 오류 검색 및 자동 장애 조치(failover)는 빅 데이터 클러스터 관리 서비스, 즉 제어 서비스에서 관리됩니다. 이 서비스는 가용성 그룹 설정, 데이터베이스 미러링 엔드포인트 구성, 가용성 그룹에 데이터베이스 추가 또는 장애 조치(failover) 및 업그레이드 조정에 이르기까지 사용자 개입 없이 제공됩니다.
다음 이미지는 가용성 그룹이 SQL Server 빅 데이터 클러스터에 배포되는 방법을 나타냅니다.
가용성 그룹에서 사용할 수 있는 몇 가지 기능은 다음과 같습니다.
고가용성 설정이 배포 구성 파일에 지정된 경우 명명
containedag
된 단일 가용성 그룹이 만들어집니다. 기본적으로 주 복제본을containedag
포함하여 3개의 복제본이 있습니다. 가용성 그룹 만들기 또는 만들어진 가용성 그룹에 복제본 조인을 포함하여 가용성 그룹에 대한 모든 CRUD 작업은 내부적으로 관리됩니다. 빅 데이터 클러스터의 SQL Server 마스터 인스턴스에는 추가 가용성 그룹을 만들 수 없습니다.모든 사용자 및 시스템 데이터베이스(예:
master
및msdb
)를 포함하여 모든 데이터베이스가 가용성 그룹에 자동으로 추가됩니다. 이 기능은 가용성 그룹 복제본 전체에서 단일 시스템 보기를 제공합니다. 추가 모델 데이터베이스인model_replicatedmaster
및model_msdb
는 시스템 데이터베이스의 복제된 부분을 시드하는 데 사용됩니다. 이러한 데이터베이스 외에도 인스턴스에 직접 연결하는 경우containedag_master
및containedag_msdb
데이터베이스가 표시됩니다.containedag
데이터베이스는 가용성 그룹 내의master
및msdb
를 나타냅니다.Important
데이터베이스 연결과 같은 워크플로의 결과로 인스턴스에서 만든 데이터베이스는 가용성 그룹에 자동으로 추가되지 않습니다. SQL Server 빅 데이터 클러스터 관리자는 이 작업을 수동으로 수행해야 합니다. SQL Server 인스턴스 마스터 데이터베이스에 임시 엔드포인트를 사용하도록 설정하는 방법을 알아보려면 SQL Server 인스턴스에 연결을 참조하세요. SQL Server 2019 CU2 릴리스 전에는 복원 문의 결과로 생성된 데이터베이스의 동작이 동일했으며 데이터베이스를 포함된 가용성 그룹에 수동으로 추가해야 했습니다.
PolyBase 구성 데이터베이스는 각 복제본과 관련된 인스턴스 수준 메타데이터를 포함하므로 가용성 그룹에 포함되지 않습니다.
외부 엔드포인트는 가용성 그룹 내의 데이터베이스에 연결하기 위해 자동으로 프로비저닝됩니다. 이
master-svc-external
엔드포인트는 가용성 그룹 수신기의 역할을 수행합니다.두 번째 외부 엔드포인트는 읽기 워크로드를 확장하기 위해 보조 복제본에 대한 읽기 전용 연결을 위해 프로비전됩니다.
Deploy
가용성 그룹에 SQL Server 마스터를 배포하려면 다음을 수행합니다.
-
hadr
기능을 활성화하십시오 - AG에 대한 복제본 수 지정(최소값: 3)
- 읽기 전용 보조 복제본에 연결하기 위해 만든 두 번째 외부 엔드포인트의 세부 정보 구성
aks-dev-test-ha
또는 kubeadm-prod
기본 제공 구성 프로필을 사용하여 빅 데이터 클러스터를 사용자 지정하기 시작할 수 있습니다. 이러한 프로필에는 추가 고가용성을 구성할 수 있는 리소스에 필요한 설정이 포함됩니다. 예를 들어 아래는 SQL Server 마스터 인스턴스에 bdc.json
가용성 그룹을 사용하도록 설정하는 것과 관련된 구성 파일의 섹션입니다.
{
...
"spec": {
"type": "Master",
"replicas": 3,
"endpoints": [
{
"name": "Master",
"serviceType": "LoadBalancer",
"port": 31433
},
{
"name": "MasterSecondary",
"serviceType": "LoadBalancer",
"port": 31436
}
],
"settings": {
"sql": {
"hadr.enabled": "true"
}
}
}
...
}
다음 단계에서는 프로필을 시작하고 aks-dev-test-ha
빅 데이터 클러스터 배포 구성을 사용자 지정하는 방법에 대한 예제를 안내합니다.
kubeadm
클러스터에 배포하는 경우, 비슷한 단계가 적용되지만 NodePort
섹션에서 serviceType
사용 시 endpoints
가 사용되고 있는지 확인합니다.
대상 프로필 복제
azdata bdc config init --source aks-dev-test-ha --target custom-aks-ha
필요에 따라 사용자 지정 프로필을 편집합니다.
위에서 만든 클러스터 구성 프로필을 사용하여 클러스터 배포 시작
azdata bdc create --config-profile custom-aks-ha --accept-eula yes
가용성 그룹의 SQL Server 데이터베이스에 연결
SQL Server 마스터에 대해 실행하려는 워크로드 유형에 따라 읽기/쓰기 워크로드의 주 데이터베이스 또는 읽기 전용 유형의 워크로드에 대한 보조 복제본의 데이터베이스에 연결할 수 있습니다. 각 연결 유형에 대한 개요는 다음과 같습니다.
주 복제본의 데이터베이스에 연결
주 복제본에 대한 연결의 경우 엔드포인트를 사용합니다 sql-server-master
. 이 엔드포인트는 AG의 수신기이기도합니다. 이 엔드포인트를 사용하는 경우 모든 연결은 가용성 그룹 내의 데이터베이스 컨텍스트에 있습니다. 예를 들어, 이 엔드포인트를 사용하는 기본 연결은 SQL Server 인스턴스 master
데이터베이스가 아닌 가용성 그룹 내의 master
데이터베이스에 연결되게 됩니다. 이 명령을 실행하여 엔드포인트를 찾습니다.
azdata bdc endpoint list -e sql-server-master -o table
Description Endpoint Name Protocol
------------------------------------ ------------------- ----------------- ----------
SQL Server Master Instance Front-End 11.11.111.111,11111 sql-server-master tds
Note
장애 조치(failover) 이벤트는 HDFS 또는 데이터 풀과 같은 원격 데이터 원본의 데이터에 액세스하는 분산 쿼리 실행 중에 발생할 수 있습니다. 장애 전환으로 인해 연결이 끊어질 경우 애플리케이션에 연결 재시도 로직이 포함되도록 설계해야 합니다.
보조 복제본의 데이터베이스에 연결
보조 복제본의 데이터베이스에 대한 읽기 전용 연결의 경우 엔드포인트를 sql-server-master-readonly
사용합니다. 이 엔드포인트는 모든 보조 복제본에서 부하 분산 장치처럼 작동합니다. 이 엔드포인트를 사용하는 경우 모든 연결은 가용성 그룹 내의 데이터베이스 컨텍스트에 있습니다. 예를 들어, 이 엔드포인트를 사용하는 기본 연결은 SQL Server 인스턴스 master
데이터베이스가 아닌 가용성 그룹 내의 master
데이터베이스에 연결되게 됩니다.
azdata bdc endpoint list -e sql-server-master-readonly -o table
Description Endpoint Name Protocol
--------------------------------------------- ------------------ -------------------------- ----------
SQL Server Master Readable Secondary Replicas 11.11.111.11,11111 sql-server-master-readonly tds
SQL Server 인스턴스에 연결
서버 수준 구성을 설정하거나 가용성 그룹에 데이터베이스를 수동으로 추가하는 등의 특정 작업의 경우 SQL Server 인스턴스에 연결해야 합니다. SQL Server 2019 CU2 이전에는 DDL과 같은 sp_configure
RESTORE DATABASE
작업 또는 가용성 그룹에 이 유형의 연결이 필요합니다. 기본적으로 빅 데이터 클러스터는 인스턴스 연결을 사용하도록 설정하는 엔드포인트를 포함하지 않으며 이 엔드포인트를 수동으로 노출해야 합니다.
Important
SQL Server 인스턴스 연결에 대해 노출된 엔드포인트는 Active Directory가 활성화된 클러스터에서도 SQL 인증만 지원합니다. 기본적으로 빅 데이터 클러스터 배포 sa
중에는 로그인이 비활성화되고 배포 시 sysadmin
제공된 값과 AZDATA_USERNAME
환경 변수에 따라 새 AZDATA_PASSWORD
로그인이 프로비전됩니다.
Important
포함된 가용성 그룹 DDL은 BDC에서 단독으로 자체 관리됩니다. 포함된 가용성 또는 데이터베이스 미러링 엔드포인트를 삭제하려는 모든(외부 사용자) 시도는 지원되지 않으며 복구할 수 없는 BDC 상태가 될 수 있습니다.
다음은 이 엔드포인트를 노출한 다음 복원 워크플로를 사용하여 만든 데이터베이스를 가용성 그룹에 추가하는 방법을 보여 주는 예제입니다. 를 사용하여 서버 구성을 변경하려는 경우 SQL Server 마스터 인스턴스에 대한 연결을 설정하는 방법에 대한 유사한 지침이 적용됩니다 sp_configure
.
Note
SQL Server 2019 CU2부터 복원 워크플로의 결과로 만든 데이터베이스가 포함된 가용성 그룹에 자동으로 추가됩니다.
sql-server-master
엔드포인트에 연결하고 주 복제본을 호스팅하는 Pod를 확인하려면 다음을 실행하세요.SELECT @@SERVERNAME
새 Kubernetes 서비스를 만들어 외부 엔드포인트 노출
클러스터
kubeadm
에 대해 아래 명령을 실행합니다.podName
를 이전 단계에서 반환된 서버의 이름으로 바꾸고,serviceName
를 생성된 Kubernetes 서비스에 대한 선호 이름으로 바꾸며namespaceName
*를 빅 데이터 클러스터의 이름으로 바꾸세요.kubectl -n <namespaceName> expose pod <podName> --port=1533 --name=<serviceName> --type=NodePort
aks 클러스터를 실행하기 위해, 서비스의 종류가
LoadBalancer
인 것을 제외하고 동일한 명령을 실행합니다. For example:kubectl -n <namespaceName> expose pod <podName> --port=1533 --name=<serviceName> --type=LoadBalancer
다음은 aks에 대해 실행되는 이 명령의 예입니다. 여기서 기본을 호스팅하는 Pod는 다음과 같습니다
master-0
.kubectl -n mssql-cluster expose pod master-0 --port=1533 --name=master-sql-0 --type=LoadBalancer
생성한 Kubernetes 서비스의 IP를 가져옵니다.
kubectl get services -n <namespaceName>
Important
가장 좋은 방법은 다음 명령을 실행하여 위에서 만든 Kubernetes 서비스를 삭제하여 정리해야 합니다.
kubectl delete svc master-sql-0 -n mssql-cluster
가용성 그룹에 데이터베이스를 추가합니다.
AG에 데이터베이스를 추가하려면 전체 복구 모델에서 실행해야 하며 로그 백업을 수행해야 합니다. 위에서 만든 Kubernetes 서비스의 IP를 사용하고 SQL Server 인스턴스에 연결한 다음 아래와 같이 T-SQL 문을 실행합니다.
ALTER DATABASE <databaseName> SET RECOVERY FULL; BACKUP DATABASE <databaseName> TO DISK='<filePath>' ALTER AVAILABILITY GROUP containedag ADD DATABASE <databaseName>
다음 예제에서는 인스턴스에 복원된
sales
라는 데이터베이스를 추가합니다.ALTER DATABASE sales SET RECOVERY FULL; BACKUP DATABASE sales TO DISK='/var/opt/mssql/data/sales.bak' ALTER AVAILABILITY GROUP containedag ADD DATABASE sales
Known limitations
다음은 빅 데이터 클러스터의 SQL Server 마스터에 대한 포함된 가용성 그룹의 알려진 문제 및 제한 사항입니다.
- 빅 데이터 클러스터를 배포할 때 고가용성 구성을 만들어야 합니다. 배포 후 가용성 그룹에서 고가용성 구성을 사용하도록 설정할 수 없습니다. 현재는 동기 커밋 복제본에 대해 사용하도록 설정된 구성만 있습니다.
Warning
동기화 모드를 쿼럼 커밋의 복제본에 대한 비동기 커밋으로 업데이트하면 고가용성을 위한 구성이 잘못됩니다. 주 복제본에 영향을 주는 오류 이벤트의 경우 자동 장애 조치(failover)가 트리거되지 않으며 사용자가 수동 장애 조치(failover)를 실행할 때 데이터 손실 위험을 감수해야 하므로 이 구성에서 실행하면 데이터 손실 위험이 발생합니다.
- 다른 서버에서 만든 백업에서 TDE 사용 데이터베이스를 성공적으로 복원하려면 SQL Server 인스턴스 마스터와 포함된 AG 마스터 모두에서 필요한 인증서 가 복원되었는지 확인해야 합니다. 인증서를 백업하고 복원하는 방법에 대한 예제는 여기 를 참조하세요.
- 서버 구성 설정을
sp_configure
실행하는 것과 같은 특정 작업은 가용성 그룹이master
아닌 SQL Server 인스턴스master
데이터베이스에 연결해야 합니다. 해당 기본 엔드포인트는 사용할 수 없습니다. 지침에 따라 엔드포인트를 노출하고 SQL Server 인스턴스에 연결하고 실행sp_configure
합니다. 수동으로 엔드포인트를 노출하여 SQL Server 인스턴스master
데이터베이스에 연결할 때만 SQL 인증을 사용할 수 있습니다. - 포함된 msdb 데이터베이스가 가용성 그룹에 포함되고 SQL 에이전트 작업이 복제되는 동안 작업은 주 복제본에서 일정에 따라만 실행됩니다.
- 포함된 가용성 그룹에는 복제 기능이 지원되지 않습니다. 포함된 AG의 SQL Server 인스턴스 부분은 인스턴스 수준 또는 포함된 AG 수준에서 배포자 또는 게시자로 작동할 수 없습니다.
- 데이터베이스를 만드는 동안 파일 그룹을 추가하는 것은 지원되지 않습니다. 해결 방법으로 먼저 데이터베이스를 만든 다음 ALTER DATABASE 문을 실행하여 파일 그룹을 추가할 수 있습니다.
- SQL Server 2019 CU2 이전에는 워크플로 이외의
CREATE DATABASE
RESTORE DATABASE
CREATE DATABASE FROM SNAPSHOT
결과로 만든 데이터베이스가 가용성 그룹에 자동으로 추가되지 않습니다. 인스턴스에 연결 하고 데이터베이스를 가용성 그룹에 수동으로 추가합니다. - Service Broker 및 데이터베이스 메일은 현재 고가용성으로 배포된 빅 데이터 클러스터에서 지원되지 않습니다.
Next steps
- 빅 데이터 클러스터 배포에서 구성 파일을 사용하는 방법에 대한 자세한 내용은 Kubernetes에서 SQL Server 빅 데이터 클러스터를 배포하는 방법을 참조하세요.
- SQL Server의 가용성 그룹 기능에 대한 자세한 내용은 Always On 가용성 그룹 개요(SQL Server)를 참조하세요.