적용 대상:
Azure SQL Database
Azure Portal, Azure CLI, PowerShell 또는 Transact-SQL을 사용하여 Azure SQL Database의 기존 하이퍼스케일 데이터베이스를 범용 서비스 계층으로 마이그레이션할 수 있습니다.
범용 서비스 계층으로의 역방향 마이그레이션을 사용하면 하이퍼스케일이 요구 사항을 충족하지 않을 경우 Azure SQL Database의 기존 데이터베이스를 하이퍼스케일로 다시 전환할 수 있습니다. 역방향 마이그레이션은 서비스 계층 변경에 의해 시작되지만 기본적으로 서로 다른 아키텍처 간에 데이터 크기 이동입니다.
역방향 마이그레이션에 대한 제한 사항
역방향 마이그레이션은 다음 조건에서 사용할 수 있습니다.
- 역방향 마이그레이션은 원래 하이퍼스케일로 마이그레이션한 후 45일 이내에만 사용할 수 있습니다.
- 원래 하이퍼스케일 서비스 계층에서 만든 데이터베이스는 역방향 마이그레이션에 적합하지 않습니다.
-
범용 서비스 계층으로만 마이그레이션을 취소할 수 있습니다. 하이퍼스케일에서 범용으로 마이그레이션하면 서버리스 또는 프로비전된 컴퓨팅 계층을 대상으로 할 수 있습니다. 데이터베이스를 중요 비즈니스용 또는 DTU 기반 서비스 계층과 같은 다른 서비스 계층으로 마이그레이션하려면 먼저 범용 서비스 계층으로 역방향 마이그레이션한 다음 서비스 계층을 변경합니다.
- vCore가 2개 미만인 데이터베이스로의 역방향 마이그레이션은 지원되지 않습니다. 마이그레이션이 완료되면 데이터베이스를 2개 미만의 vCore로 축소할 수 있습니다.
- 탄력적 풀에서 또는 탄력적 풀로의 직접 반대 방향 마이그레이션은 지원되지 않습니다. 하이퍼스케일 단일 데이터베이스만 범용 단일 데이터베이스로 역방향 마이그레이션할 수 있습니다.
- 하이퍼스케일 데이터베이스가 하이퍼스케일 탄력적 풀의 일부인 경우 역방향 마이그레이션 전에 먼저 하이퍼스케일 탄력적 풀에서 제거해야 합니다.
- 역방향 마이그레이션이 완료되면 필요한 경우 범용 단일 데이터베이스를 범용 탄력적 풀에 선택적으로 추가할 수 있습니다.
- 역방향 마이그레이션을 받을 자격이 없는 데이터베이스의 경우 하이퍼스케일에서 하이퍼스케일이 아닌 서비스 계층으로 마이그레이션하는 유일한 방법은 bacpac 파일 또는 기타 데이터 이동 기술(대량 복사, Azure Data Factory, Azure Databricks, SSIS 등)을 사용하여 내보내거나 가져오는 것입니다. Azure Portal, New-AzSqlDatabaseExport 또는 New-AzSqlDatabaseImport를 사용하는 PowerShell, az sql db export 및 az sql db import를 사용하는 Azure CLI 및 REST API에서 Bacpac 내보내기/가져오기는 지원되지 않습니다. 더 작은 하이퍼스케일 데이터베이스(최대 150GB)에 대한 Bacpac 가져오기/내보내기는 SSMS 및 SqlPackage 버전 18.4 이상을 사용하여 지원됩니다. 더 큰 데이터베이스의 경우 bacpac 내보내기/가져오기에 시간이 오래 걸릴 수 있으며 여러 가지 이유로 실패할 수 있습니다.
기간 및 가동 중지 시간
하이퍼스케일의 일반 서비스 수준 목표 변경 작업과 달리 하이퍼스케일로 마이그레이션하고 범용으로 역방향 마이그레이션하는 작업은 데이터 크기 작업입니다.
역방향 마이그레이션 작업의 기간은 주로 데이터베이스의 크기와 마이그레이션 중에 발생하는 동시 쓰기 작업에 따라 달라집니다. 대상 범용 데이터베이스에 할당하는 vCore의 수도 역방향 마이그레이션 기간에 영향을 줍니다. 유사한 워크로드를 유지하기 위해 원본 하이퍼스케일 데이터베이스에 할당된 vCore 수보다 크거나 같은 수의 vCore를 사용하여 대상 범용 데이터베이스를 프로비전하는 것이 좋습니다.
역방향 마이그레이션 중에 원본 하이퍼스케일 데이터베이스는 상당한 부하를 받는 경우 성능 저하를 경험할 수 있습니다. 특히 역방향 마이그레이션이 진행되도록 트랜잭션 로그 속도를 줄일 수 있습니다(제한).
새 범용 데이터베이스로의 최종 전환 동안, 일반적으로 몇 분 정도의 짧은 가동 중지 시간이 발생합니다.
필수 조건
하이퍼스케일에서 범용 서비스 계층으로 역방향 마이그레이션을 시작하기 전에 데이터베이스가 역방향 마이그레이션에 대한 제한 사항을 충족하는지 확인해야 합니다.
- 데이터베이스에 지역 복제를 사용할 수 없습니다.
- 데이터베이스에 명명된 복제본이 없습니다.
- 데이터베이스(할당된 크기)는 대상 서비스 계층에 맞게 충분히 작습니다.
- 대상 범용 데이터베이스의 최대 데이터베이스 크기를 지정하는 경우 데이터베이스의 할당된 크기가 최대 크기에 맞게 충분히 작은지 확인합니다.
필수 구성 요소 검사는 역방향 마이그레이션 작업이 시작되기 전에 발생합니다. 필수 구성 요소가 충족되지 않으면 역방향 마이그레이션 작업이 즉시 실패합니다.
Backup 정책
구성된 보존 기간 내에 모든 기존 데이터베이스 백업에 대한 일반 가격을 사용하여 요금이 청구됩니다. 하이퍼스케일 백업 스토리지의 스냅샷과 백업을 복원할 수 있도록 유지해야 하는 데이터 저장소 Blob의 크기에 따라 요금이 청구됩니다.
데이터베이스를 하이퍼스케일로 변환하고 범용으로 다시 여러 번 역방향 마이그레이션할 수 있습니다. 데이터베이스의 현재 및 이전 계층의 백업만 복원에 사용할 수 있습니다. 범용 서비스 계층에서 하이퍼스케일로 이동한 후 범용으로 다시 이동한 경우 현재 범용 데이터베이스와 바로 이전 하이퍼스케일 데이터베이스의 백업만 사용할 수 있습니다. 이러한 보존된 백업은 Azure SQL Database 청구에 따라 청구됩니다. 시도된 이전 계층에는 백업을 사용할 수 없으며 요금이 청구되지 않습니다.
예를 들어 하이퍼스케일과 하이퍼스케일이 아닌 서비스 계층 간에 마이그레이션할 수 있습니다.
- 일반적인 목적
- 하이퍼스케일로 변환
- 범용으로 역방향 마이그레이션
- 비즈니스 크리티컬로 서비스 계층 변경
- 하이퍼스케일로 변환
- 일반 용도로 역방향 마이그레이션
이 경우 구성된 보존 기간 내에 있는 경우 사용 가능한 유일한 백업은 타임라인의 5단계와 6단계에서 수행됩니다. 이전 단계의 모든 백업을 사용할 수 없습니다. 하이퍼스케일과 범용 서비스 계층 간에 동일한 데이터베이스의 반복 마이그레이션을 시도할 때 백업의 가용성을 신중하게 고려합니다. 이전 데이터베이스보다 오래된 데이터베이스의 백업은 역방향 마이그레이션이 시작되는 즉시 사용할 수 없게 되며 마이그레이션이 취소된 경우에도 계속 사용할 수 없게 됩니다.
하이퍼스케일 데이터베이스를 범용 서비스 계층으로 역방향 마이그레이션하는 방법
Azure SQL Database의 기존 하이퍼스케일 데이터베이스를 범용 서비스 계층으로 역방향 마이그레이션하려면 먼저 범용 서비스 계층에서 대상 서비스 목표와 프로비전된 컴퓨팅 계층 또는 서버리스 컴퓨팅 계층으로 마이그레이션할지 여부를 식별합니다. 데이터베이스에 적합한 서비스 목표를 잘 모르는 경우 단일 데이터베이스에 대한 리소스 제한을 검토합니다.
범용으로 역방향 마이그레이션한 후 추가 서비스 계층 변경을 수행하려면 최종 대상 서비스 목표를 식별합니다. 데이터베이스의 할당된 크기가 해당 서비스 목표에 맞게 충분히 작은지 확인합니다.
원하는 방법의 탭을 선택하여 데이터베이스를 역방향으로 마이그레이션합니다.
Azure Portal을 사용하면 데이터베이스의 가격 책정 계층을 수정하여 범용 서비스 계층으로 역방향 마이그레이션할 수 있습니다.
- Azure Portal의 데이터베이스로 이동합니다.
- 왼쪽 탐색 모음에서 Compute + 스토리지를 선택합니다.
- 서비스 계층 드롭다운 목록을 선택하여 서비스 계층 에 대한 옵션을 확장합니다.
- 드롭다운 목록 메뉴에서 범용(확장 가능한 컴퓨팅 및 스토리지 옵션) 을 선택합니다.
- 나열된 하드웨어 구성 을 검토합니다. 원하는 경우 구성 변경을 선택하여 워크로드에 적합한 하드웨어 구성을 선택합니다.
- 범용 서비스 계층에서 데이터베이스에 사용할 수 있는 vCore 수를 변경하려면 vCore 슬라이더를 선택합니다.
-
적용을 선택합니다.
- Azure Portal에서 변환을 모니터링합니다.
- Azure Portal의 데이터베이스로 이동합니다.
- 왼쪽 탐색 모음에서 개요를 선택합니다.
- 오른쪽 창의 아래쪽에 있는 알림 섹션을 검토합니다. 작업이 진행 중인 경우 알림 상자가 나타납니다.
- 세부 정보를 보려면 알림 상자를 선택합니다.
-
진행 중인 작업 창이 열립니다. 진행 중인 작업의 세부 정보를 검토합니다.
이 코드 샘플 에서는 az sql db update 를 호출하여 기존 하이퍼스케일 데이터베이스를 범용 서비스 계층으로 역방향 마이그레이션합니다. 버전과 서비스 목표를 모두 지정해야 합니다.
Provisioned
또는 Serverless
중 하나를 대상 컴퓨팅 모델로 선택할 수 있습니다.
다음 코드 샘플에서 resourceGroupName
, serverName
, databaseName
및 serviceObjective
를 적절한 값으로 바꾸고 실행합니다.
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="GP_Gen5_2"
computeModel="Provisioned"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName \
--edition GeneralPurpose --service-objective $serviceObjective \
--compute-model $computeModel
필요에 따라 maxsize
인수를 포함할 수 있습니다. 값이 maxsize
대상 서비스 목표의 유효한 최대 크기를 초과하면 오류가 반환됩니다. 인수를 maxsize
지정하지 않으면 작업이 기본적으로 지정된 서비스 목표에 사용할 수 있는 최대 크기로 설정됩니다. 다음 예제에서는 다음을 지정합니다.maxsize
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="GP_Gen5_2"
computeModel="Provisioned"
maxsize="200GB"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName \
--edition GeneralPurpose --service-objective $serviceObjective \
--compute-model $computeModel --max-size $maxsize
az sql db op list를 사용하여 진행 중인 작업을 모니터링합니다. Azure SQL Database의 데이터베이스에 대한 최근 또는 진행 중인 작업을 반환하려면 다음을 수행합니다.
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
az sql db op list -g $resourceGroupName -s $serverName -n $databaseName
이 코드 샘플에서는 Set-AzSqlDatabase cmdlet을 사용하여 기존 데이터베이스를 하이퍼스케일에서 범용 서비스 계층으로 역방향 마이그레이션합니다. 버전과 서비스 목표를 모두 지정해야 합니다. 대상 컴퓨팅 계층으로 Provisioned
또는 Serverless
을 선택할 수 있습니다.
이 코드 샘플을 실행하기 전에, $resourceGroupName
, $serverName
, $databaseName
, $serviceObjective
, 및 $computeModel
를 적절한 값으로 바꾸십시오.
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "GP_Gen5_2"
$computeModel = "Provisioned"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName -ServerName $serverName `
-DatabaseName $databaseName -Edition "GeneralPurpose" -computemodel $computeModel `
-RequestedServiceObjectiveName $serviceObjective
maxsize
인수는 필요에 따라 포함할 수 있습니다. 값이 maxsize
대상 서비스 목표의 유효한 최대 크기를 초과하면 오류가 반환됩니다. 인수를 maxsize
지정하지 않으면 작업이 기본적으로 지정된 서비스 목표에 사용할 수 있는 최대 크기로 설정됩니다. 다음 예제에서는 다음을 지정합니다.maxsize
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "GP_Gen5_2"
$computeModel = "Provisioned"
$maxSizeBytes = "268435456000"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName -ServerName $serverName `
-DatabaseName $databaseName -Edition "GeneralPurpose" -computemodel $computeModel `
-RequestedServiceObjectiveName $serviceObjective -MaxSizeBytes $maxSizeBytes
Azure SQL Database의 데이터베이스에 대한 최근 또는 진행 중인 작업을 반환하는 Get-AzSqlDatabaseActivity cmdlet을 사용하여 진행 중인 작업을 모니터링합니다. 다음 샘플 코드에서 $resourceGroupName
, $serverName
및 $databaseName
매개 변수를 데이터베이스에 적합한 값으로 설정하고 실행합니다.
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
Get-AzSqlDatabaseActivity -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName
Transact-SQL을 사용하여 하이퍼스케일 데이터베이스를 범용 서비스 계층으로 역방향 마이그레이션하려면, 먼저 논리 SQL 서버에 있는 master
데이터베이스에 SQL Server Management Studio (SSMS) 또는 Azure Data Studio를 사용하여 연결합니다.
ALTER DATABASE 문에서 버전과 서비스 목표를 모두 지정해야 합니다.
이 예제 문장은 mySampleDatabase
이라는 이름의 데이터베이스를 GP_Gen5_4
서비스 목표를 사용하여 범용 서비스 계층으로 마이그레이션합니다. 문을 실행하기 전에 데이터베이스 이름 및 서비스 목표를 적절한 값으로 바꿉니다.
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_2');
GO
필요에 따라 maxsize
인수를 포함할 수 있습니다. 값이 maxsize
대상 서비스 목표의 유효한 최대 크기를 초과하면 오류가 반환됩니다. 인수를 maxsize
지정하지 않으면 작업이 기본적으로 지정된 서비스 목표에 사용할 수 있는 최대 크기로 설정됩니다. 다음 예제에서는 다음을 지정합니다.maxsize
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_2', MAXSIZE = 200 GB);
GO
하이퍼스케일 데이터베이스에 대한 작업을 모니터링하려면 SSMS(SQL Server Management Studio),Visual Studio Code용 mssql 확장 또는 Transact-SQL 명령을 실행하기 위해 선택한 클라이언트를 사용하여 논리 서버의 데이터베이스에 연결 master
합니다.
sys.dm_operation_status 동적 관리 뷰를 쿼리하여 논리 서버의 데이터베이스에서 수행된 최근 작업에 대한 정보를 검토합니다.
동적 관리 뷰는 sys.dm_operation_status
가장 최근에 정렬된 작업을 반환합니다. 데이터베이스 이름을 적절한 값으로 바꾼 후 코드 샘플을 실행합니다.
SELECT *
FROM sys.dm_operation_status
WHERE major_resource_id = 'mySampleDatabase'
ORDER BY start_time DESC;
GO
관련 콘텐츠