Azure SQL Managed Instance의 데이터베이스를 이전의 특정 시점으로 복원
이 문서의 내용
적용 대상: Azure SQL Managed Instance
지정 시간 복원을 사용하여 지정 시간 이전에 데이터베이스의 복사본인 데이터베이스를 만들 수 있습니다. 이 문서에서는 Azure SQL Managed Instance에서 데이터베이스의 특정 시점 복원을 수행하는 방법을 설명합니다.
개요
지정 시간 복원은 오류 또는 오류로 인해 발생한 인시던트, 데이터가 올바르게 로드되지 않거나 중요한 데이터가 삭제되는 경우와 같은 복구 시나리오에서 유용합니다. 데이터베이스 배포를 테스트하고 감사하는 데만 사용할 수도 있습니다. Azure 백업 파일은 데이터베이스 설정에 따라 7~35일 동안 유지됩니다.
지정 시간 복원을 사용하여 다음 시나리오에서 데이터베이스를 복원할 수 있습니다.
기존 데이터베이스에서
삭제된 데이터베이스에서
동일한 관리되는 인스턴스 또는 다른 관리되는 인스턴스로
동일한 구독의 관리되는 인스턴스 또는 다른 구독의 관리되는 인스턴스로
다음 표에서는 SQL Managed Instance에 대한 특정 시점 복원 시나리오를 보여 줍니다.
시나리오
Azure portal
Azure CLI
PowerShell
기존 데이터베이스를 동일한 관리되는 인스턴스로 복원
예
예
Yes
기존 데이터베이스를 다른 관리되는 인스턴스로 복원
예
예
Yes
삭제된 데이터베이스를 동일한 관리되는 인스턴스로 복원
예
예
예
삭제된 데이터베이스를 다른 관리되는 인스턴스로 복원
예
예
예
기존 데이터베이스를 다른 구독의 관리되는 인스턴스로 복원
예
예
예
삭제된 데이터베이스를 다른 구독의 관리되는 인스턴스로 복원
예
예
예
사용 권한
데이터베이스를 복구하려면 다음 중 하나여야 합니다.
SQL Managed Instance 기여자 역할이 없는 경우 데이터베이스를 다른 대상 구독으로 복원하려면 다음 권한도 있어야 합니다.
원본 SQL Managed Instance에 대한 Microsoft.Sql/managedInstances/databases/readBackups/action
대상 SQL Managed Instance에 대한 Microsoft.Sql/managedInstances/crossSubscriptionPITR/action
자세한 내용은 Azure RBAC: 기본 제공 역할 을 참조하세요.
제한 사항
이러한 제한 사항은 SQL Managed Instance의 지정 시간 복원에 적용됩니다.
지정 시간 복원을 사용하여 전체 SQL Managed Instance 배포를 복구할 수 없습니다. 지정 시간 복원만 사용하여 SQL Managed Instance에서 호스트되는 데이터베이스의 복사본을 만듭니다.
지정 시간 복원의 제한 사항은 데이터베이스를 동일한 구독의 관리되는 인스턴스로 복원하는지 아니면 다른 구독의 관리되는 인스턴스로 복원하는지에 따라 달라집니다.
Azure SQL Managed Instance에서 서비스 엔드포인트 정책 을 사용하도록 설정한 경우 서브넷에 서비스 엔드포인트 정책을 배치하면 다른 서브넷의 인스턴스에서 지정 시간 복원이 방지됩니다.
경고
관리되는 인스턴스의 스토리지 크기를 알고 있어야 합니다. 복원할 데이터의 크기에 따라 관리되는 인스턴스에 대한 스토리지가 부족할 수 있습니다. 복원된 데이터에 대한 관리되는 인스턴스에 충분한 스토리지 공간이 없는 경우 다른 방법을 사용합니다.
동일한 구독으로 복원
하나의 관리되는 인스턴스에서 동일한 Azure 구독의 다른 관리되는 인스턴스로 복원하는 경우 두 관리되는 인스턴스가 모두 동일한 지역에 있어야 합니다. 현재 지역 간 복원은 지원되지 않습니다.
다른 구독으로 복원
구독 간에 특정 시점 복원 백업을 복원하는 데는 다음과 같은 제한 사항이 있습니다.
두 구독 모두 동일한 지역에 있어야 합니다.
두 구독 모두 동일한 테넌트에 있어야 합니다.
구독 유형은 기업계약, 클라우드 솔루션 공급자, Microsoft Certified Partner 또는 종량제여야 합니다.
복원 작업은 기본 인스턴스에서만 사용할 수 있습니다.
주 지역에서만 백업을 복원할 수 있습니다. 지역에서 복제된 보조 지역에서 데이터베이스 복원은 구독 간 특정 시점 복원에 지원되지 않습니다.
복원 작업을 수행하는 사용자는 SQL Managed Instance 기여자 역할을 할당받았거나 이러한 명시적 권한을 가지고 있어야 합니다.
원본 SQL Managed Instance에 대한 Microsoft.Sql/managedInstances/databases/readBackups/action
대상 SQL Managed Instance에 대한 Microsoft.Sql/managedInstances/crossSubscriptionPITR/action
BYOK(Bring Your Own Key)인 경우 키는 두 구독 모두에 있어야 합니다.
기존 데이터베이스 복원
Azure Portal, PowerShell 또는 Azure CLI를 사용하여 동일한 구독에서 기존 데이터베이스를 복원할 수 있습니다. PowerShell 또는 Azure CLI를 사용하여 동일한 구독의 다른 인스턴스로 복원하는 경우 대상 SQL Managed Instance 리소스에 대한 속성을 지정해야 합니다. 데이터베이스는 기본적으로 동일한 인스턴스로 복원됩니다.
다른 구독으로 복원하는 경우 복원 작업의 기초가 되는 v5.0.2022 만들기 또는 업데이트 API 호출에는 restorePointInTime
, crossSubscriptionTargetManagedInstanceId
및 crossSubscriptionSourceDatabaseId
또는 crossSubscriptionRestorableDroppedDatabaseId
가 포함되어야 합니다.
기존 데이터베이스를 복원하려면 Azure Portal의 데이터베이스 페이지로 이동하여 복원 을 선택하여 복원을 수행하면 됩니다.
또는 데이터베이스를 복원하려면 다음 단계를 수행하면 됩니다.
Azure Portal 에 로그인합니다.
데이터베이스를 복원하려는 대상 SQL Managed Instance로 이동합니다.
개요 페이지에서 + 새 데이터베이스 를 선택하여 Azure SQL Managed Database 만들기 페이지를 엽니다.
Azure SQL Managed Database 만들기 페이지 의 기본 탭에 있는 프로젝트 세부 정보 에 구독 및 리소스 그룹 세부 정보를 입력합니다. 그런 다음, 데이터베이스 세부 정보 에 복원하려는 데이터베이스의 새 이름을 입력합니다. 올바른 Managed Instance가 드롭다운에 나와 있는지 확인합니다. 그런 다음, 다음: 데이터 원본 > 을 선택합니다.
데이터 원본 탭의 기존 데이터 사용 에서 특정 시점 복원 을 선택합니다. 원본 데이터베이스가 포함된 구독, 리소스 그룹 및 Managed Instance를 제공합니다. 관리되는 데이터베이스 드롭다운에서 복원할 데이터베이스를 선택한 다음, 데이터베이스를 복원할 시점을 선택합니다. 원본 및 대상 인스턴스는 동일하거나 서로 다른 인스턴스 2개일 수 있습니다. 다음: 추가 설정 > 을 선택합니다.
추가 설정 탭에서 확인란을 선택하여 원본 데이터베이스의 보존 정책을 상속하거나 보존 구성 을 선택하여 정책 구성 페이지를 열고 복원된 데이터베이스에 대해 원하는 보존 정책을 설정할 수 있습니다. 입력을 완료한 후 검토 + 만들기 를 선택합니다.
검토 + 만들기 에서 유효성 검사가 성공하면 만들기 를 선택하여 데이터베이스를 복원합니다.
이 작업은 복원 프로세스를 시작합니다. 그러면 새 데이터베이스가 만들어지고 특정 시점의 원래 데이터베이스의 데이터로 채워집니다. 복구 프로세스에 대한 자세한 내용은 복구 시간 을 참조하세요.
Azure PowerShell을 사용하여 데이터베이스를 복원합니다. 자세한 내용은 Azure PowerShell 모듈 설치 를 검토하세요. 자세한 내용은 Restore-AzSqlInstanceDatabase 를 참조하세요.
매개 변수로 대체된 값을 사용하여 다음 코드 옵션 중 하나를 실행합니다.
데이터베이스를 동일한 관리되는 인스턴스로 복원하려면 다음을 수행합니다.
$subscriptionId = "<subscription ID>"
$resourceGroupName = "<resource group name>"
$managedInstanceName = "<managed instance name>"
$databaseName = "<source database>"
$pointInTime = "2018-06-27T08:51:39.3882806Z"
$targetDatabase = "<name of the new database to create>"
Get-AzSubscription -SubscriptionId $subscriptionId
Select-AzSubscription -SubscriptionId $subscriptionId
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName `
-Name $databaseName `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName $targetDatabase `
다른 관리되는 인스턴스로 데이터베이스를 복원하려면 대상 리소스 그룹 및 대상 관리되는 인스턴스의 이름도 지정합니다.
$targetResourceGroupName = "<resource group of the target managed instance>"
$targetInstanceName = "<name of the target managed instance>"
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName `
-Name $databaseName `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName $targetDatabase `
-TargetResourceGroupName $targetResourceGroupName `
-TargetInstanceName $targetInstanceName
데이터베이스를 다른 구독으로 복원하려면 컨텍스트를 대상 구독(Set-AzContext
)으로 설정하고 필요한 매개 변수 -TargetSubscriptionID
값을 제공해야 합니다.
Set-AzContext -SubscriptionID "targetSubscriptionID"
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-SubscriptionId "sourceSubscriptionID" `
-ResourceGroupName "sourceRGName" `
-InstanceName "sourceManagedInstanceName" `
-Name "sourceDatabaseName" `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName "targetDatabaseName" `
-TargetInstanceName "targetManagedInstanceName" `
-TargetResourceGroupName "targetResourceGroupName" `
-TargetSubscriptionId "targetSubscriptionId"
Azure CLI를 사용하여 데이터베이스를 특정 시점으로 복원합니다. 자세한 내용은 Azure CLI 설치 를 참조하세요. 사용 가능한 매개 변수에 대한 자세한 내용은 SQL Managed Instance에서 데이터베이스 복원에 대한 CLI 설명서 를 참조하세요.
매개 변수로 대체된 값을 사용하여 다음 코드 옵션 중 하나를 실행합니다.
데이터베이스를 동일한 관리되는 인스턴스로 복원하려면 다음을 수행합니다.
az sql midb restore -g mygroupname --mi myinstancename |
-n mymanageddbname --dest-name targetmidbname --time "2018-05-20T05:34:22"
데이터베이스를 다른 Managed Instance로 복원하려면 대상 리소스 그룹과 Managed Instance의 이름도 지정합니다.
az sql midb restore -g mygroupname --mi myinstancename -n mymanageddbname |
--dest-name targetmidbname --time "2018-05-20T05:34:22" |
--dest-resource-group mytargetinstancegroupname |
--dest-mi mytargetinstancename
다른 구독으로 복원하려면 컨텍스트(az account set
)를 대상 구독으로 설정해야 합니다.
az account set -s "targetSubscriptionId" `
az sql midb restore -s sourcesubscriptionid -g sourcegroup
--mi sourceinstance -n sourcemanageddb --dest-name targetDbName
--dest-mi targetMI --dest-resource-group targetRG --time "2022-05-20T05:34:22"
삭제된 데이터베이스 복원
Azure Portal, Azure PowerShell 또는 Azure CLI를 사용하여 삭제된 데이터베이스를 복원할 수 있습니다.
Azure Portal을 사용하여 삭제된 관리형 데이터베이스를 복원하려면 다음을 수행합니다.
Azure Portal에서 원본 관리형 인스턴스로 이동합니다.
데이터 관리 아래의 왼쪽 메뉴에서 백업 을 선택합니다.
데이터베이스 표시 에서 삭제됨 을 선택합니다.
복원할 데이터베이스에 대해 복원 을 선택합니다.
Azure SQL 관리형 데이터베이스 만들기 에서 데이터베이스를 복원할 대상 관리형 인스턴스에 대한 세부 정보를 입력하거나 선택합니다. 데이터 원본 탭을 선택합니다.
데이터 원본 에서 원본 데이터베이스에 대한 세부 정보를 입력하거나 선택합니다. 추가 설정 탭을 선택합니다.
추가 설정 에서 보존 설정을 구성합니다. 검토 + 만들기 탭을 선택합니다.
검토 + 만들기 에서 만들기 를 선택하여 삭제된 데이터베이스를 복원합니다.
삭제된 관리형 데이터베이스를 복원하려면 매개 변수로 대체된 값을 사용하여 다음 PowerShell 코드 옵션 중 하나를 실행합니다.
삭제된 데이터베이스를 동일한 관리되는 인스턴스로 복원하려면 다음을 수행합니다.
$subscriptionId = "<subscription ID>"
Get-AzSubscription -SubscriptionId $subscriptionId
Select-AzSubscription -SubscriptionId $subscriptionId
$resourceGroupName = "<resource group name>"
$managedInstanceName = "<managed instance name>"
$deletedDatabaseName = "<source database name>"
$targetDatabaseName = "<target database name>"
$deletedDatabase = Get-AzSqlDeletedInstanceDatabaseBackup -ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName -DatabaseName $deletedDatabaseName
Restore-AzSqlinstanceDatabase -FromPointInTimeBackup -Name $deletedDatabase.Name `
-InstanceName $deletedDatabase.ManagedInstanceName `
-ResourceGroupName $deletedDatabase.ResourceGroupName `
-DeletionDate $deletedDatabase.DeletionDate `
-PointInTime UTCDateTime `
-TargetInstanceDatabaseName $targetDatabaseName
다른 관리되는 인스턴스로 데이터베이스를 복원하려면 대상 리소스 그룹 및 대상 관리형 인스턴스의 이름도 지정합니다.
$targetResourceGroupName = "<resource group of target managed instance>"
$targetInstanceName = "<target managed instance name>"
Restore-AzSqlinstanceDatabase -FromPointInTimeBackup -Name $deletedDatabase.Name `
-InstanceName $deletedDatabase.ManagedInstanceName `
-ResourceGroupName $deletedDatabase.ResourceGroupName `
-DeletionDate $deletedDatabase.DeletionDate `
-PointInTime UTCDateTime `
-TargetInstanceDatabaseName $targetDatabaseName `
-TargetResourceGroupName $targetResourceGroupName `
-TargetInstanceName $targetInstanceName
데이터베이스를 다른 구독으로 복원하려면 컨텍스트를 대상 구독(Set-AzContext
)으로 설정하고 필요한 매개 변수 -TargetSubscriptionID
및 -DeleteDate
값을 제공해야 합니다.
Set-AzContext -SubscriptionID "targetSubscriptionID"
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-SubscriptionId "sourceSubscriptionID" `
-ResourceGroupName "sourceRGName" `
-InstanceName "sourceManagedInstanceName" `
-Name "sourceDatabaseName" `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName "targetDatabaseName" `
-TargetInstanceName "targetManagedInstanceName" `
-TargetResourceGroupName "targetResourceGroupName" `
-TargetSubscriptionId "targetSubscriptionId" `
-DeletionDate "deletion_date"
삭제된 데이터베이스를 같은 구독으로 복원하려면 다음을 수행합니다.
az sql midb restore -g resourcegroup --mi instancename
-n databasename --dest-name databasename --dest-mi instancename
--dest-resource-group resourcegroup --time "2023-02-23T11:54:00" --deleted-time "deletion_date"
삭제된 데이터베이스를 다른 구독으로 복원하려면 컨텍스트(az account set
)를 대상 구독으로 설정하고 az sql midb restore
명령의 -s 매개 변수를 지정하여 이전 구독을 식별해야 합니다.
az account set -s "targetSubscriptionId"
az sql midb restore -s sourcesubscriptionid -g sourcegroup
--mi sourceinstance -n sourcemanageddb --dest-name targetDbName
--dest-mi targetMI --dest-resource-group targetRG
--time "2022-05-20T05:34:22" --deleted-time "deletion_date"
기존 데이터베이스 덮어쓰기
기존 데이터베이스를 덮어쓰려면 다음을 수행해야 합니다.
덮어쓸 원래 데이터베이스를 삭제합니다.
특정 시점에서 복원된 데이터베이스의 이름을 삭제한 데이터베이스의 이름으로 바꿉니다.
원본 데이터베이스 삭제
Azure Portal, PowerShell 또는 Azure CLI를 사용하여 데이터베이스를 삭제할 수 있습니다.
데이터베이스를 삭제하는 또 다른 옵션은 SSMS(SQL Server Management Studio)에서 직접 관리되는 인스턴스에 연결한 다음, DROP
T-SQL(Transact-SQL) 명령을 사용하는 것입니다.
DROP DATABASE WorldWideImporters;
다음 방법 중 하나를 사용하여 관리되는 인스턴스의 데이터베이스에 연결합니다.
Azure Portal에서 관리되는 인스턴스의 데이터베이스를 선택합니다.
명령 모음에서 삭제 를 선택합니다.
관리되는 인스턴스에서 기존 데이터베이스를 삭제하려면 매개 변수로 대체된 값으로 다음 PowerShell 코드를 실행합니다.
$resourceGroupName = "<resource group name>"
$managedInstanceName = "<managed instance name>"
$databaseName = "<source database name>"
Remove-AzSqlInstanceDatabase -Name $databaseName -InstanceName $managedInstanceName -ResourceGroupName $resourceGroupName
관리되는 인스턴스에서 기존 데이터베이스를 삭제하려면 매개 변수로 대체된 값으로 다음 Azure CLI 코드를 실행합니다.
az sql midb delete -g mygroupname --mi myinstancename -n mymanageddbname
새 데이터베이스 이름을 원래 데이터베이스 이름과 일치하도록 변경
SSMS(SQL Server Management Studio)를 사용하여 관리되는 인스턴스에 직접 연결합니다. 그런 후, 다음 T-SQL 쿼리를 실행합니다. 이 쿼리는 복원된 데이터베이스의 이름을 덮어쓰려는 삭제된 데이터베이스의 이름으로 변경합니다.
ALTER DATABASE WorldWideImportersPITR MODIFY NAME = WorldWideImporters;
다음 방법 중 하나를 사용하여 관리되는 인스턴스의 데이터베이스에 연결합니다.
다음 단계
자동화된 백업 에 대해 알아봅니다.