SQL Server 데이터베이스 마이그레이션을 위한 Azure 권장 사항 가져오기

Azure Data Studio용 Azure SQL 마이그레이션 확장은 데이터베이스 요구 사항을 평가하고, Azure 리소스에 대한 적절한 크기의 SKU 권장 사항을 얻고, SQL Server 데이터베이스를 Azure로 마이그레이션하는 데 도움이 됩니다.

이 통합 환경을 사용하여 원본 SQL Server 인스턴스에서 성능 데이터를 수집하여 Azure SQL 대상에 적합한 크기의 Azure 권장 사항을 가져오는 방법을 알아봅니다.

개요

Azure SQL로 마이그레이션하기 전에 Azure Data Studio의 SQL 마이그레이션 확장을 사용하여 Azure Virtual Machines 대상의 Azure SQL Database, Azure SQL Managed Instance 및 SQL Server에 대한 적절한 크기의 권장 사항을 생성할 수 있습니다. 이 도구를 사용하면 원본 SQL 인스턴스(온-프레미스 또는 다른 클라우드 실행)에서 성능 데이터를 수집하고 워크로드 요구 사항에 맞게 컴퓨팅 및 스토리지 구성을 권장할 수 있습니다.

이 다이어그램은 Azure Data Studio용 Azure SQL 마이그레이션 확장의 Azure 권장 사항에 대한 워크플로를 제공합니다.

Diagram that shows the workflow of the SKU recommendation process.

참고 항목

Azure Data Studio용 Azure SQL 마이그레이션 확장의 평가 및 Azure 권장 기능은 Windows 또는 Linux에서 실행되는 원본 SQL Server 인스턴스를 지원합니다.

필수 조건

SQL Server 데이터베이스 마이그레이션에 대한 Azure 권장 사항을 시작하려면 다음 필수 구성 요소를 충족해야 합니다.

지원되는 원본과 대상

다음 SQL Server 버전에 대해 Azure 권장 사항을 생성할 수 있습니다.

  • Windows 또는 Linux의 SQL Server 2008 이상 버전이 지원됩니다.
  • 다른 클라우드에서 실행되는 SQL Server가 지원될 수 있지만 결과의 정확도는 다를 수 있습니다.

다음 Azure SQL 대상에 대해 Azure 권장 사항을 생성할 수 있습니다.

  • Azure SQL Database
    • 하드웨어 제품군: 표준 시리즈(Gen5)
    • 서비스 계층: 범용, 중요 비즈니스용, 하이퍼스케일
  • Azure SQL Managed Instance
    • 하드웨어 제품군: 표준 시리즈(Gen5), 프리미엄 시리즈, 프리미엄 시리즈 메모리 최적화
    • 서비스 계층: 범용, 중요 비즈니스용
  • Azure Virtual Machine의 SQL Server
    • VM 제품군: 범용, 메모리 최적화
    • 스토리지 제품군: 프리미엄 SSD

성능 데이터 수집

권장 사항을 생성하려면 원본 SQL Server 인스턴스에서 성능 데이터를 수집해야 합니다. 이 데이터 수집 단계에서는 SQL Server 인스턴스의 여러 동적 시스템 뷰(DMV)를 쿼리하여 워크로드의 성능 특성을 캡처합니다. 이 도구는 30초마다 CPU, 메모리, 스토리지 및 IO 사용량을 포함한 메트릭을 캡처하고 성능 카운터를 CSV 파일 세트로 컴퓨터에 로컬로 저장합니다.

인스턴스 수준

이 성능 데이터는 SQL Server 인스턴스당 한 번씩 수집됩니다.

성능 차원 설명 DMV(동적 관리 뷰)
SqlInstanceCpuPercent SQL Server 프로세스에서 사용하고 있는 CPU 양(백분율) sys.dm_os_ring_buffers
PhysicalMemoryInUse SQL Server 프로세스의 전체 메모리 공간 sys.dm_os_process_memory
MemoryUtilizationPercentage SQL Server의 메모리 사용률 sys.dm_os_process_memory

데이터베이스 수준

성능 차원 설명 DMV(동적 관리 뷰)
DatabaseCpuPercent 데이터베이스에서 사용하는 CPU의 총 백분율 sys.dm_exec_query_stats
CachedSizeInMb 데이터베이스에서 사용하는 캐시의 총 크기(메가바이트) sys.dm_os_buffer_descriptors

파일 수준

성능 차원 설명 DMV(동적 관리 뷰)
ReadIOInMb 이 파일에서 읽은 총 메가바이트 수 sys.dm_io_virtual_file_stats
WriteIOInMb 이 파일에 기록된 총 메가바이트 수 sys.dm_io_virtual_file_stats
NumOfReads 이 파일에서 발급된 총 읽기 수 sys.dm_io_virtual_file_stats
NumOfWrites 이 파일에 발급된 총 쓰기 수 sys.dm_io_virtual_file_stats
ReadLatency 이 파일의 IO 읽기 대기 시간 sys.dm_io_virtual_file_stats
WriteLatency 이 파일의 IO 쓰기 대기 시간 sys.dm_io_virtual_file_stats

권장 사항을 생성하려면 최소 10분의 데이터 수집이 필요하지만 워크로드를 정확하게 평가하려면 사용량이 많을 때의 사용량과 사용량이 적을 때의 사용량을 모두 캡처할 수 있을 만큼 충분히 긴 기간 동안 데이터 수집을 실행하는 것이 좋습니다.

데이터 수집 프로세스를 시작하려면 먼저 Azure Data Studio에서 원본 SQL 인스턴스에 연결한 다음, SQL 마이그레이션 마법사를 시작합니다. 2단계에서 "Azure 권장 사항 가져오기"를 선택합니다. "지금 성능 데이터 수집"을 선택하고 수집된 데이터가 저장될 컴퓨터의 폴더를 선택합니다.

Screenshot that shows the wizard pane to collect performance data for SKU recommendations.

Important

데이터 수집 프로세스는 첫 번째 권장 사항을 생성하기 위해 10분 동안 실행됩니다. 활성 데이터베이스 워크로드가 프로덕션 시나리오와 유사한 사용량을 반영할 때 데이터 수집 프로세스를 시작하는 것이 중요합니다.

첫 번째 권장 사항이 생성되면 데이터 수집 프로세스를 계속 실행하여 권장 사항을 구체화할 수 있습니다. 이 옵션은 사용 패턴이 시간에 따라 달라지는 경우에 특히 유용합니다.

시작을 선택하면 데이터 수집 프로세스가 시작됩니다. 10분마다 수집된 데이터 요소가 집계되고 각 카운터의 최대, 평균 및 분산이 3개의 CSV 파일 세트로 디스크에 기록됩니다.

일반적으로 선택한 폴더에는 다음과 같은 접미사가 있는 CSV 파일 세트가 표시됩니다.

  • SQLServerInstance_CommonDbLevel_Counters.csv: 데이터베이스 파일 레이아웃 및 메타데이터에 대한 정적 구성 데이터를 포함합니다.
  • SQLServerInstance_CommonInstanceLevel_Counters.csv: 서버 인스턴스의 하드웨어 구성에 대한 정적 데이터를 포함합니다.
  • SQLServerInstance_PerformanceAggregated_Counters.csv: 자주 업데이트되는 집계된 성능 데이터를 포함합니다.

이 시간 동안 Azure Data Studio를 열어 두되 다른 작업을 계속할 수 있습니다. 언제든지 이 페이지로 돌아가서 데이터 수집 프로세스를 중지하고 데이터 수집 중지를 선택할 수 있습니다.

적절한 규모의 권장 사항 생성

이전 세션에서 성능 데이터를 이미 수집했거나 다른 도구(예: Database Migration Assistant)를 사용하는 경우 성능 데이터가 이미 있음 옵션을 선택하여 기존 성능 데이터를 가져올 수 있습니다. 계속 진행하여 성능 데이터(.csv 파일 3개)가 저장된 폴더를 선택하고 시작을 선택하여 권장 사항 프로세스를 시작합니다.

Screenshot that shows the pane to import performance data for a SKU recommendation.

참고 항목

SQL 마이그레이션 마법사의 1단계에서는 평가할 데이터베이스 세트를 선택하도록 요청하며, 이는 권장 사항 프로세스 중에 고려되는 유일한 데이터베이스입니다.

그러나 성능 데이터 수집 프로세스는 선택한 데이터베이스뿐만 아니라 원본 SQL Server 인스턴스의 모든 데이터베이스에 대한 성능 카운터를 수집합니다.

즉, 이전에 수집한 성능 데이터를 사용하여 1단계에서 다른 목록을 지정함으로써 데이터베이스의 다른 하위 집합에 대한 권장 사항을 반복적으로 다시 생성할 수 있습니다.

권장 사항 매개 변수

권장 사항에 영향을 줄 수 있는 여러 구성 가능한 설정이 있습니다.

Screenshot that shows the recommendation parameters section.

매개 변수 편집 옵션을 선택하여 필요에 따라 이러한 매개 변수를 조정합니다.

Screenshot that shows the different recommendation parameters.

  • 배율:
    이 옵션을 사용하면 각 성능 차원에 적용할 버퍼를 제공할 수 있습니다. 이 옵션은 계절별 사용량, 짧은 성능 기록 및 향후 사용량 증가와 같은 문제를 고려합니다. 예를 들어 vCore 4개 CPU 요구 사항의 배율이 150%인 경우 실제 CPU 요구 사항은 vCore 6개입니다.

    기본 배율 인자 볼륨은 100%입니다.

  • 사용률(%):
    성능 데이터로 사용할 데이터 포인트의 백분위수가 집계됩니다.

    기본값은 95번째 백분위수입니다.

  • 미리 보기 기능 사용:
    이 옵션을 사용하면 아직 모든 지역의 모든 사용자가 일반적으로 사용할 수 없는 구성을 권장할 수 있습니다.

    이 옵션은 기본적으로 해제되어 있습니다.

  • 탄력적 권장 사항 사용:

    이 옵션은 기존 클라우드 고객에 대해 개인 설정된 가격 대비 성능 프로파일링을 활용하는 대체 권장 사항 모델을 사용합니다.

    이 옵션은 기본적으로 해제되어 있습니다.

Important

Azure Data Studio를 닫으면 데이터 수집 프로세스가 종료됩니다. 해당 시점까지 수집된 데이터는 폴더에 저장됩니다.

데이터 수집이 진행되는 동안 Azure Data Studio를 닫는 경우 다음 옵션 중 하나를 사용하여 데이터 수집을 다시 시작합니다.

  • Azure Data Studio를 다시 열고 로컬 폴더에 저장된 데이터 파일을 가져옵니다. 그런 다음, 수집된 데이터에서 권장 사항을 생성합니다.
  • Azure Data Studio를 다시 열고 마이그레이션 마법사를 사용하여 데이터 수집을 다시 시작합니다.

최소 권한

성능 데이터 수집에 필요한 시스템 뷰를 쿼리하려면 이 작업에 사용되는 SQL Server 로그인에 대한 특정 권한이 필요합니다. 다음 스크립트를 사용하여 평가 및 성능 데이터 수집에 대한 최소 권한이 있는 사용자를 만들 수 있습니다.

-- Create a login to run the assessment
USE master;
GO

CREATE LOGIN [assessment] WITH PASSWORD = '<STRONG PASSWORD>';

-- Create user in every database other than TempDB and model and provide minimal read-only permissions
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''TempDB'',''model''))  
   BEGIN TRY
      CREATE USER [assessment] FOR LOGIN [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT SELECT ON sys.sql_expression_dependencies TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT VIEW DATABASE STATE TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'

-- Provide server level read-only permissions
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [assessment];
GRANT VIEW DATABASE STATE TO assessment;
GRANT VIEW SERVER STATE TO assessment;
GRANT VIEW ANY DEFINITION TO assessment;

-- Provide msdb specific permissions
USE msdb;
GO

GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [assessment];

-- USE master;
-- GO
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [assessment] END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCH';
-- DROP LOGIN [assessment];

지원되지 않는 시나리오 및 제한 사항

  • Azure 권장 사항에는 예상 가격이 포함되지 않습니다. 이러한 상황은 지역, 통화 및 Azure 하이브리드 혜택과 같은 할인에 따라 달라지기 때문입니다. 예상 가격을 얻으려면 Azure 가격 계산기를 사용하거나 Azure Migrate에서 SQL 평가를 만듭니다.
  • DTU 기반 구매 모델을 사용하는 Azure SQL Database에 대한 권장 사항은 지원되지 않습니다.
  • 현재 Azure SQL Database 서버리스 컴퓨팅 계층 및 탄력적 풀에 대한 Azure 권장 사항은 지원되지 않습니다.

문제 해결

  • 생성된 권장 사항 없음
    • 권장 사항이 생성되지 않은 경우 이 상황은 원본 인스턴스의 성능 요구 사항을 완전히 충족할 수 있는 구성이 식별되지 않았음을 의미할 수 있습니다. 특정 크기, 서비스 계층 또는 하드웨어 제품군이 부적격한 이유를 확인하려면 다음을 수행합니다.
      • 도움말 > 모든 명령 표시 > 확장 로그 폴더 열기로 이동하여 Azure Data Studio에서 로그에 액세스합니다.
      • Microsoft.mssql > SqlAssessmentLogs >로 이동하여 SkuRecommendationEvent.log를 엽니다.
      • 로그에는 평가된 모든 잠재적 구성의 추적과 해당 구성이 적격 구성으로 간주되지 않은 이유가 포함됩니다. Screenshot that shows SKU recommendations log.
    • 탄력적 권장 사항을 사용하도록 설정하여 권장 사항을 다시 생성해 보세요. 이 옵션은 기존 클라우드 고객에 대해 개인 설정된 가격 대비 성능 프로파일링을 활용하는 대체 권장 사항 모델을 사용합니다.

다음 단계