Restore

SQL 託管實例 - 交叉訂閱還原/遷移

  • August 10, 2020

簡潔版本:

我正在嘗試將備份從一個 SQL 託管實例還原到另一個 SQL 託管實例。這些在不同的訂閱中。使用此處的範例 3,我至少可以將其恢復到在 sys.dm_operation_status 中開始看到恢復的地步,但錯誤消息是“訂閱

$$ target $$不含$$ source SQL MI $$”。 問題: 如何將數據庫從一個 SQL 託管實例遷移到另一個(在不同的訂閱中)?我目前的解決方法是對 blob 儲存執行 copy_only 並以這種方式恢復。

一旦我們啟用 TDE(進行中),我們將無法對 blob 執行 copy_only 備份。然後怎樣呢?

長版:

最近,我們公司開始在 SQL 託管實例(和其他 PaaS/IaaS)上在 Azure 中執行我們的生產工作負載,並且進展順利。儘管我確實熟悉了數據庫遷移服務 (DMS),但我們有一個足夠大的視窗來確定我們能夠使用完整備份進行初始載入。

但是現在我們正在擴展我們的 dev/test/qa 環境,當然我們現在希望從生產環境恢復到這些環境。出於隔離目的,每個人都有自己的訂閱。

這些命令有效,因為我至少可以在 sys.dm_operation_status 中看到恢復操作開始,但它失敗並出現錯誤。錯誤是“訂閱

$$ target $$不含$$ source SQL MI $$“並讓我相信交叉訂閱恢復對我們不起作用(儘管跨區域會)。 DMS 似乎不支持使用數據庫遷移服務作為源的方案。

Select-AzSubscription -Subscription $SourceSubscriptionID

$GeoBackup = Get-AzSqlInstanceDatabaseGeoBackup -ResourceGroupName $SourceResourceGroupName `
    -InstanceName $SourceSQLMI `
    -Name $SourceDatabaseName

Select-AzSubscription -Subscription $TargetSubscriptionID

Restore-AzSqlInstanceDatabase -FromGeoBackup `
   -GeoBackupObject $GeoBackup `
   -TargetInstanceDatabaseName $TargetDatabaseName `
   -TargetInstanceName $TargetSQLMI `
   -TargetResourceGroupName $TargetResourceGroupName

有什麼建議、想法嗎?如有必要,我願意使用各種 Azure PowerShell 的預覽版,儘管我沒有發現任何東西表明它在那裡有所不同。

可能的解決方法

我確實從我們的一位 Microsoft 聯繫人那裡獲得了一個連結,該連結似乎表明您可以在同一個訂閱中建立一個託管實例,恢復到它,然後將託管實例移動到另一個訂閱。我沒有嘗試過,所以我不知道。他們提供的連結在這裡,儘管我懷疑它的有效性。

僅複製備份是目前唯一的解決方案。跨訂閱pitr 和geo restore 不起作用,因為目前我們無法驗證發起者是否擁有源訂閱和目標訂閱的所有必需權限。

目前(2020 年 4 月),同一地區和同一租戶 ID(僅限同一客戶/公司)的交叉訂閱 PITR 恢復僅作為 EA、CSP 或 PayGo 訂閱的有限預覽版提供。您需要登錄到打算使用它的 Azure 門戶(通過 EA/CSP/PayGo 訂閱)並創建支持票證,選擇支持選項“自動備份或時間點恢復”。幾天后,您可以獲得有限預覽的批准。此解決方案還支持 Azure 託管密鑰的 TDE 加密備份。對於 BYOK 密鑰,這僅在客戶在源 M​​I 和目標 MI 上具有相同密鑰時才有效。希望這可以幫助。

引用自:https://dba.stackexchange.com/questions/246989