Azure SQL 계획, 배포, 확인
Azure SQL로 마이그레이션하거나 Azure SQL에서 만들 워크로드를 선택한 후에는 배포를 계획하고 그에 따라 배포하고 배포가 성공했는지 확인해야 합니다. 이 단원에서는 프로세스의 각 단계에 대한 다양한 방법을 알아봅니다.
배포 전 계획
Azure에서 배포를 시작하기 전에 요구 사항과 Azure SQL의 제품에 요구 사항이 매핑되는 방식을 이해해야 합니다. Azure SQL 소개 모듈에서 배운 내용을 활용하여 계획을 세웁니다. 다음 질문에 대답해야 합니다.
- 배포 방법: Azure Portal 또는 명령줄 인터페이스
- 배포 옵션: 가상 머신, 데이터베이스, 탄력적 풀, 관리되는 인스턴스 또는 인스턴스 풀?
- 구매 모델(Azure SQL Database에만 해당): DTU 또는 vCore
- 서비스 계층: 범용, 중요 비즈니스용 또는 하이퍼스케일
- 하드웨어: Gen5 또는 새로운 항목
- 크기 조정: vCore 수 및 데이터 최대 크기란?
앞의 질문에 답하기 전에 Azure SQL로 마이그레이션하거나 클라우드에서 생성할 워크로드를 선택해야 할 수도 있습니다. 마이그레이션할 경우 데이터베이스 및 애플리케이션을 계획, 평가, 마이그레이션 및 최적화하는 데 도움이 되는 많은 도구 및 리소스를 사용할 수 있습니다. 이 모듈의 끝에 리소스를 제공합니다.
리소스 제한
Azure SQL 소개 모듈에서는 IOPS 또는 메모리 내 OLTP와 같은 제한, 속도 및 기능을 설명했습니다. Azure SQL Managed Instance, Azure SQL Database 또는 해당 선택 항목 내 옵션을 선택할 경우 영향을 받는 다른 리소스 제한이 있습니다.
- 메모리
- 최대 로그 크기
- 트랜잭션 로그 속도
- 데이터 IOPS
- tempdb의 크기
- 최대 동시 작업자 수
- 백업 보존
Azure SQL Managed Instance 및 Azure SQL Database의 제한은 선택한 구매 모델, 서비스 계층 및 vCore 수 또는 Azure SQL Database의 DTU에 따라 달라집니다.
Azure SQL Managed Instance 및 SQL Database는 PaaS(Platform as a Service) 제품입니다. 해당 선택 항목을 제한하더라도 SQL Server 관리형 서비스를 방해 없이 완전히 사용할 수 있어야 합니다.
범용 Azure SQL Database 인스턴스 내에서 프로비전된 컴퓨팅 또는 서버리스 컴퓨팅을 선택하면 이러한 제한에도 영향을 줍니다. 배포하기 전에 계획된 배포에 포함된 항목을 검토하여 필요한 항목으로 시작하는지 확인합니다.
Azure SQL 리소스에는 구독당 및 지역당 전체 리소스 제한이 있습니다. 제한을 늘려야 하는 경우 Azure Portal에서 할당량 증가를 요청할 수 있습니다.
배포
배포 전 계획을 완료한 이후에 계획을 실천해야 합니다. 이 단계에서는 Azure Portal 또는 명령줄을 사용하여 Azure SQL을 배포하고, 네트워크 구성을 확인하고, 초기 연결을 설정합니다.
Azure SQL Database 및 Azure SQL Managed Instance의 경우 배포 중에 Azure Portal에 기본적으로 입력할 6개 창이 있습니다.
서버
Azure SQL 관리되는 인스턴스를 만들 때 서버 이름을 제공하는 것은 SQL Server와 동일합니다. 데이터베이스 및 탄력적 풀의 경우 Azure SQL Database 서버가 필요합니다. Azure SQL Database 서버는 단일 또는 풀링된 데이터베이스의 중앙 관리 지점으로 사용되는 논리 서버입니다. 여기에는 로그인, 방화벽 규칙, 감사 규칙, 위협 탐지 정책, 장애 조치(failover) 그룹이 포함됩니다. 이러한 요소에 대해서는 나중에 자세히 알아봅니다.
이 논리 서버는 Azure SQL Managed Instance처럼 인스턴스 수준 액세스 또는 기능을 노출하지 않습니다. Azure SQL Database 서버의 경우 서버 이름은 모든 Azure에서 고유해야 합니다.
컴퓨팅 및 스토리지
이 학습 경로의 이전 모듈에서는 서비스 계층, 구매 모델 및 하드웨어 세대를 포함하여 컴퓨팅 및 스토리지에 대한 옵션 및 권장 사항에 대해 알아보았습니다. 배포하는 동안 원하는 구성을 선택해야 합니다. 또한 vCore 수와 데이터 최대 크기를 결정해야 합니다.
일반적으로 마이그레이션하는 경우 온-프레미스에서 사용하는 것과 비슷한 크기를 사용합니다. Data Migration Assistant SKU 추천 같은 도구를 사용하여 현재 워크로드를 기반으로 vCore 수 및 데이터 최대 크기를 예상할 수도 있습니다.
데이터 최대 크기가 현재 데이터의 크기일 필요는 없습니다. 데이터베이스에 할당할 수 있는 데이터 공간의 최대 크기입니다. 또한 데이터 최대 크기에 따라 크기 조정되는 로그 공간 할당을 이해하는 데도 도움이 됩니다.
네트워킹 구성
Azure SQL Database 및 Azure SQL Managed Instance에 대한 네트워킹 선택은 서로 다릅니다. Azure SQL Database를 배포할 때 현재 기본값은 액세스 권한 없음입니다.
공용 엔드포인트 또는 프라이빗 엔드포인트를 선택할 수 있습니다. 이 단원을 다음 연습에서는 공용 엔드포인트를 사용하고 Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용하는 옵션을 예로 설정합니다. 그런 다음 다른 Azure 서비스는 데이터베이스에 액세스할 수 있습니다(예: Azure Data Factory 또는 Azure Virtual Machines). Azure SQL Database를 배포하는 데 사용한 클라이언트 컴퓨터의 IP 주소에서 연결하려면 현재 클라이언트 IP 주소 추가를 선택할 수도 있습니다.
Azure SQL Managed Instance를 사용하여 관리형 인스턴스 전용 서브넷 및 Azure 가상 네트워크 내에 배포합니다. 이를 통해 보안 개인 IP 주소를 유지할 수 있습니다. Azure SQL Managed Instance를 사용하면 관리되는 인스턴스에 온-프레미스 네트워크를 연결하고, 관리되는 인스턴스를 연결된 서버 또는 다른 온-프레미스 데이터 저장소에 연결하고, 관리되는 인스턴스를 다른 리소스에 연결할 수 있습니다.
VPN(가상 사설망)을 사용하지 않고 인터넷에서 관리되는 인스턴스에 연결할 수 있도록 퍼블릭 엔드포인트를 추가적으로 사용하도록 설정할 수도 있습니다. 이 액세스는 기본적으로 사용하지 않도록 설정되어 있습니다.
데이터 원본
Azure SQL Database에는 배포 중에 AdventureWorksLT
데이터베이스를 Azure Portal에서 샘플로 선택할 수 있는 옵션이 있습니다. Azure SQL Managed Instance에서는 인스턴스를 배포한 다음에 인스턴스 내부에 데이터베이스를 배포합니다. 배포 시 샘플 데이터베이스를 사용할 수 있는 옵션이 없습니다(SQL Server와 유사). GitHub의 AdventureWorks
샘플 데이터베이스에 대해 자세히 알아볼 수 있습니다.
또한 지역에서 복제된 백업에서 복원을 기반으로 하는 데이터베이스를 만들거나 빈 데이터베이스를 배포할 수도 있습니다.
데이터베이스 데이터 정렬
SQL Server 및 Azure SQL의 데이터 정렬은 특정 문자와 언어를 처리하는 방법을 데이터베이스 엔진에 알려 줍니다. 데이터 정렬은 데이터에 대한 정렬 규칙과 대/소문자 및 악센트 구분 속성을 제공합니다.
새 SQL 데이터베이스 또는 SQL Managed Instance를 만들 때 데이터의 로캘 요구 사항을 고려합니다. 데이터 정렬 집합은 데이터베이스의 많은 작업 특성에 영향을 미칩니다. SQL Server 상자 제품에서는 일반적으로 운영 체제 로캘에 따라 기본 데이터 정렬이 결정됩니다.
Azure SQL Managed Instance에서 인스턴스 만들 때 서버 데이터 정렬을 설정합니다. 나중에 변경할 수도 없습니다. 서버 데이터 정렬은 해당 SQL Managed Instance의 모든 데이터베이스에 대한 기본값을 설정하지만 데이터베이스 및 열 수준에서 데이터 정렬을 수정할 수 있습니다.
Azure SQL Database에서 서버 데이터 정렬을 설정할 수 없습니다. 서버 데이터 정렬은 SQL_Latin1_General_CP1_CI_AS
의 기본 및 가장 일반적인 데이터 정렬에서 설정되지만 데이터베이스 데이터 정렬을 설정할 수 있습니다. 해당 값을 여러 단위로 나누려면 다음을 수행합니다.
SQL
은 Windows 또는 이진 데이터 정렬이 아닌 SQL Server 데이터 정렬임을 의미합니다.Latin1_General
은 정렬 시 사용할 알파벳이나 언어를 지정합니다.CP1
은 데이터 정렬에서 사용하는 코드 페이지를 참조합니다.CI
는 대/소문자를 구분하지 않음을 의미합니다.CS
는 대/소문자를 구분함을 의미합니다.AS
는 악센트를 구분함을 의미합니다.AI
는 악센트를 구분하지 않음을 의미합니다.
다른 옵션을 사용할 수 있습니다. 예를 들면 문자 너비 및 UTF-8 인코딩입니다. Azure SQL로 수행할 수 있는 작업과 수행할 수 없는 작업에 관한 자세한 내용은 설명서에서 확인할 수 있습니다.
클라우드용 Microsoft Defender에 대한 옵트인
Azure Portal에서 Azure SQL Database를 배포하면 평가판에서 클라우드용 Microsoft Defender를 사용하도록 설정할지 여부를 묻는 메시지가 표시됩니다. 무료 평가판 시작을 선택합니다. 평가판 이후 클라우드용 Defender는 클라우드용 Microsoft Defender 표준 계층 가격 책정에 따라 요금이 청구됩니다.
이 기능을 사용하도록 설정한 후에는 잠재적 데이터베이스 취약성 식별과 완화 및 위협 탐지와 관련된 기능을 사용할 수 있습니다. 이 학습 경로의 다음 보안 모듈에서 이러한 기능에 대해 자세히 알아볼 수 있습니다.
Azure SQL Managed Instance에서 배포 후에 인스턴스에 대해 클라우드용 Microsoft Defender를 사용하도록 설정할 수 있습니다.
선택 항목 검토
검토 및 만들기 창에서 배포 선택 사항과 Azure Marketplace 약관을 검토합니다.
팁
또한 구성 가능하고 반복 가능한 배포를 위해 ARM 템플릿(Azure Resource Manager 템플릿)을 제공하는 자동화를 위한 템플릿 다운로드 옵션도 있습니다. 이 단원에서 ARM 템플릿은 다루지 않습니다. 관심이 있는 경우 템플릿 사양에 대해 자세히 알아보세요.
키 배포 구현 세부 정보
Azure에서 배포를 처리하지만 알아야 할 몇 가지 배포 구현 세부 정보가 있습니다. 모든 서비스는 Azure Service Fabric이라는 Azure 백본을 기반으로 합니다. 해당 서비스 중 일부를 Azure Service Fabric에 배포하고 스케일링하는 방법의 백 엔드를 이해하면 표시되는 다양한 동작을 이해하는 데 도움이 됩니다.
Azure SQL Managed Instance
백그라운드에서 Azure는 사용자의 서비스에 대한 Azure SQL Managed Instance( 가상 클러스터라고도 함)에 대한 전용 링을 배포합니다. 이 아키텍처는 보안 및 네이티브 가상 네트워크 지원을 제공하는 데 도움이 됩니다.
해당 아키텍처 때문에 배포 및 스케일링 작업 시간이 더 오래 걸릴 수 있습니다. 예를 들어 스케일 업 또는 스케일 다운할 때 Azure에서 새 가상 클러스터를 자동으로 배포하고 이 클러스터에 데이터를 시드합니다. 모든 인스턴스가 단일 가상 머신에서 실행하는 것으로 간주할 수 있습니다.
긴 배포 시간에 도움이 되도록 Azure SQL 인스턴스 풀이 도입되었습니다. 전용 리소스의 풀을 사전 배포할 수 있습니다. 풀에 배포하고 풀 내에서 스케일링하는 것이 기존 배포보다 빠릅니다. 또한 단일 가상 머신 내에서 여러 인스턴스를 배포할 수 있으므로 패킹 밀도가 높아집니다.
Azure SQL Database
Azure SQL Database는 논리 데이터베이스 서버에 포함됩니다. 대부분의 경우 전용 SQL Server 인스턴스가 SQL 데이터베이스를 호스팅하지만 인스턴스 관리에 대해 걱정할 필요가 없습니다.
논리 데이터베이스 서버는 연결할 항목을 제공합니다. 또한 특정 권한과 구성을 함께 그룹화하고 관리할 수 있습니다. 각 논리적 데이터베이스 서버 내에는 인스턴스 수준 진단을 제공할 수 있는 논리적 주 데이터베이스가 있습니다.
Azure SQL Database - 하이퍼스케일
Azure SQL Managed Instance에서 사용할 수 없는 Azure SQL Database 내의 하이퍼스케일 계층에는 Azure SQL에 대한 고유한 아키텍처가 있습니다. Azure SQL 팀은 클라우드용 하이퍼스케일을 다시 설계했습니다. 이 아키텍처에는 속도와 규모 모두에 도움이 되는 다층 캐싱 시스템이 포함되어 있습니다. 스케일링 및 기타 작업은 데이터의 크기와 더 이상 관련되지 않으며 일정한 시간(분) 내에 완료할 수 있습니다. 원격 스토리지를 사용하면 스냅샷 백업도 허용됩니다.
Azure SQL 기본 사항 학습 경로의 후속 모듈에서는 아키텍처 및 아키텍처가 성능 및 가용성에 미치는 영향에 대해 자세히 알아봅니다. 배포 단계 중에 고려할 한 가지 사항은 데이터베이스를 하이퍼스케일 계층으로 이동한 후에는 범용 또는 중요 비즈니스용 계층으로 되돌릴 수 없다는 것입니다.
리소스 거버넌스
서비스 계층의 리소스를 늘리거나 줄이면 CPU, 스토리지, 메모리 등의 차원에 대한 제한이 특정 임계값까지 변경될 수 있습니다. Azure SQL의 거버넌스에 대한 다각적 접근 방법이 있지만 주로 다음 세 가지 기술을 사용하여 Azure SQL의 리소스 사용량을 제어합니다.
- Windows 작업 개체를 사용하면 프로세스 그룹을 하나의 단위로 관리 및 제어할 수 있습니다. 작업 개체는 파일의 가상 메모리 커밋, 작업 집합 한도, CPU 선호도, 속도 한도를 제어하는 데 사용됩니다.
sys.dm_os_job_object
동적 관리 뷰를 사용하여 적용된 제한을 확인할 수 있습니다. - Resource Governor는 사용자(이 경우 Azure)가 CPU, 물리적 I/O, 메모리 같은 리소스를 제어하는 데 도움이 되는 SQL Server 기능입니다. 또한 Azure SQL Managed Instance는 Resource Governor의 사용자 정의 워크로드 그룹 및 풀을 허용합니다.
- 파일 서버 Resource Manager는 Windows Server에서 사용할 수 있습니다. 이는 데이터 최대 크기를 관리하는 데 사용되는 파일 디렉터리 할당량을 관리합니다.
트랜잭션 로그 속도를 제어하는 다른 구현은 트랜잭션 로그 속도 거버넌스를 통해 데이터베이스 엔진에 기본 제공됩니다. 해당 프로세스는 BULK INSERT
, SELECT INTO
, 인덱스 빌드와 같은 워크로드의 높은 수집 속도를 제한합니다. 해당 속도는 초 이하 수준으로 추적 및 적용됩니다. 현재 서비스 계층 내에서 선형적으로 스케일링됩니다.
확인
배포를 완료한 후에는 배포를 확인해야 합니다. 이 단계에서는 일반적으로 Azure Portal 또는 Azure CLI의 결과를 확인하고, 배포 구성을 확인하는 몇 가지 쿼리를 실행하고, 필요에 따라 조정합니다.
Azure SQL Managed Instance 및 Azure SQL Database의 경우 가장 먼저 Azure Portal 또는 Azure CLI를 사용하여 데이터베이스 또는 인스턴스의 상태를 확인합니다. 다음으로 배포 세부 정보와 활동 로그를 검토하여 실패나 활성 문제가 없는지 확인할 수 있습니다.
Azure SQL Managed Instance의 경우 SQL Server 온-프레미스나 Azure Virtual Machine에서 일반적으로 오류 로그를 확인할 수 있습니다. Azure SQL Database에서는 해당 기능을 사용할 수 없습니다.
마지막으로, 네트워크가 올바르게 구성되어 있는지 확인하고, 서버 이름을 가져오고, SQL Server Management Studio 또는 Azure Data Studio와 같은 도구에서 연결합니다. 다음 쿼리를 실행하여 배포된 항목을 더 잘 이해하고 올바르게 배포되었는지 확인할 수 있습니다.
SELECT @@VERSION
SELECT * FROM sys.databases
SELECT * FROM sys.objects
SELECT * FROM sys.dm_os_schedulers
SELECT * FROM sys.dm_os_sys_info
SELECT * FROM sys.dm_os_process_memory --Not supported in Azure SQL Database
SELECT * FROM sys.dm_exec_requests
SELECT SERVERPROPERTY('EngineEdition')
SELECT * FROM sys.dm_user_db_resource_governance -- Available only in Azure SQL Database and SQL Managed Instance
SELECT * FROM sys.dm_instance_resource_governance -- Available only in Azure SQL Managed Instance
SELECT * FROM sys.dm_os_job_object -- Available only in Azure SQL Database and SQL Managed Instance
OS 프로세스 메모리와 관련된 쿼리는 작동하는 것처럼 보일 수 있지만 Azure SQL Database에서 지원되지 않습니다. Azure SQL Database를 사용하면 운영 체제와 관련된 일부 사항이 추상화되어 사용자가 데이터베이스에 집중할 수 있으므로 이 쿼리는 지원되지 않습니다.
마지막 세 쿼리는 Azure SQL Database 및 Azure SQL Managed Instance에서만 사용할 수 있습니다. 우선 sys.dm_user_db_resource_governance
는 현재 데이터베이스 또는 탄력적 풀의 리소스 거버넌스 메커니즘에서 사용되는 구성과 용량 설정을 반환합니다. 두 번째 sys.dm_instance_resource_governance
를 사용하여 Azure SQL Managed Instance에 대한 비슷한 정보를 얻을 수 있습니다. 세 번째 sys.dm_os_job_object
는 SQL Server 프로세스를 관리하는 작업 개체의 구성을 설명하는 단일 행과 리소스 소비 통계를 반환합니다.
다음 두 연습에서는 Azure SQL Database 또는 Azure SQL Managed Instance 배포와 관련된 모든 세부 정보를 살펴봅니다. Azure 구독을 사용하여 Azure SQL Database를 배포합니다. 배포 후에 다양한 확인 쿼리를 사용하고 Azure Data Studio에서 SQL Notebooks를 미리 실행하여 SQL Database, SQL Managed Instance 및 SQL Server 2019를 비교합니다.