將 Azure SQL 受控執行個體部署至執行個體集區

適用于:Azure SQL 受控執行個體

本文提供如何建立並部署 Azure SQL 受控執行個體至執行個體集區的詳細資料。

執行個體集區作業

下表說明執行個體集區相關的可用作業,以及這些集區在 Azure 入口網站、 PowerShell 和 Azure CLI 中的可用性。

命令 Azure 入口網站 PowerShell Azure CLI
建立執行個體集區 Yes
更新執行個體集區 (數量有限的屬性) Yes
檢查執行個體集區使用量和屬性 Yes
刪除執行個體集區
在執行個體集區中建立受控執行個體
更新受控執行個體的資源使用量
檢查受控執行個體的使用量和屬性
從集區刪除受控執行個體
在集區的執行個體中建立資料庫
從 SQL 受控執行個體刪除資料庫

若要使用 PowerShell,請安裝最新版的 PowerShell Core,並遵循安裝 Azure PowerShell 模組的指示。

可用的 PowerShell 命令

Cmdlet 描述
New-AzSqlInstancePool 建立 SQL 受控執行個體集區。
Get-AzSqlInstancePool 傳回執行個體集區的資訊。
Set-AzSqlInstancePool 在 SQL 受控執行個體中設定執行個體集區的屬性。
Remove-AzSqlInstancePool 移除 SQL 受控執行個體中的執行個體集區。
Get-AzSqlInstancePoolUsage 傳回 SQL 受控執行個體集區使用量的資訊。

對於集區和單一執行個體內的執行個體相關作業,請使用標準受控執行個體命令,但當您針對集區中的執行個體使用這些命令時,必須填入「執行個體集區名稱」屬性。

部署程序

若要部署受控執行個體至執行個體集區,您必須先部署執行個體集區,這是一次性長時間執行的作業,且持續時間與部署在空白子網建立的單一執行個體相同。 之後,即可部署受控執行個體至集區,這是相對快速的作業,通常最長需要五分鐘。 執行個體集區參數必須此作業中明確指定。

在公開預覽版中,這兩個動作只能使用 PowerShell 和 Azure Resource Manager 範本支援。 目前無法使用 Azure 入口網站體驗。

將受控執行個體部署至集區之後,您「可以」使用 Azure 入口網站在 [定價層] 頁面上變更其屬性。

建立具有子網路的虛擬網路

若要將多個執行個體集區放在同一個虛擬網路中,請參閱下列文章:

建立執行個體集區

完成上述步驟之後,您就可以開始建立執行個體集區。

下列限制會套用至執行個體集區:

  • 只有一般用途和 Gen5 可供公開預覽。
  • 集區名稱只能包含小寫字母、數字和連字號,且開頭不得為連字號。
  • 如果您要使用 Azure Hybrid Benefit,這適用於執行個體集區層級。 您可以在建立集區時設定授權類型,或在建立後隨時進行更新。

重要

部署執行個體集區是長時間執行的作業,大約需要 4.5 小時。

若要取得網路參數:

$virtualNetwork = Get-AzVirtualNetwork -Name "miPoolVirtualNetwork" -ResourceGroupName "myResourceGroup"
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "miPoolSubnet" -VirtualNetwork $virtualNetwork

若要建立執行個體集區:

$instancePool = New-AzSqlInstancePool `
  -ResourceGroupName "myResourceGroup" `
  -Name "mi-pool-name" `
  -SubnetId $subnet.Id `
  -LicenseType "LicenseIncluded" `
  -VCore 8 `
  -Edition "GeneralPurpose" `
  -ComputeGeneration "Gen5" `
  -Location "westeurope"

重要

由於部署執行個體集區是長時間執行的作業,因此您必須等到其完成後,再執行本文中的下列任何步驟。

建立受控執行個體

成功部署執行個體集區後,即可在其中建立受控執行個體。

若要建立受控執行個體,請執行下列命令:

$instanceOne = $instancePool | New-AzSqlInstance -Name "mi-one-name" -VCore 2 -StorageSizeInGB 256

在集區中部署執行個體需要幾分鐘的時間。 建立第一個執行個體之後,即可建立其他執行個體:

$instanceTwo = $instancePool | New-AzSqlInstance -Name "mi-two-name" -VCore 4 -StorageSizeInGB 512

建立資料庫

若要在集區內的受控執行個體中建立和管理資料庫,請使用單一執行個體命令。

若要在受控執行個體內建立資料庫:

$poolinstancedb = New-AzSqlInstanceDatabase -Name "mipooldb1" -InstanceName "poolmi-001" -ResourceGroupName "myResourceGroup"

取得集區使用量

若要取得集區內的執行個體清單:

$instancePool | Get-AzSqlInstance

若要取得集區資源使用量:

$instancePool | Get-AzSqlInstancePoolUsage

若要取得集區及其內部執行個體的詳細使用量概觀:

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

若要列出執行個體中的資料庫:

$databases = Get-AzSqlInstanceDatabase -InstanceName "pool-mi-001" -ResourceGroupName "resource-group-name"

注意

若要檢查集區中部署的各執行個體集區和受控執行個體的資料庫數目限制,請造訪執行個體集區資源限制章節。

調整

將資料庫填入受控執行個體之後,您可能會遇到與儲存體或效能相關的執行個體限制。 在此情況下,如果尚未超過集區使用量,您可以調整您的執行個體。 集區內的受控執行個體調整作業大約需要幾分鐘的時間。 進行調整的必要條件是執行個體集區層級上有虛擬核心和儲存體可用。

若要更新虛擬核心的數目和儲存體大小:

$instanceOne | Set-AzSqlInstance -VCore 8 -StorageSizeInGB 512 -InstancePoolName "mi-pool-name"

僅更新儲存體大小:

$instance | Set-AzSqlInstance -StorageSizeInGB 1024 -InstancePoolName "mi-pool-name"

連線

若要連線到集區中的受控執行個體,必須執行下列兩個步驟:

  1. 啟用執行個體的公用端點
  2. 將輸入規則新增至網路安全性群組 (NSG)

這兩個步驟都完成之後,您就可以使用建立執行個體時提供的公用端點位址、連接埠和認證來連線到執行個體。

啟用公用端點

若要啟用執行個體的公用端點,您可以透過 Azure 入口網站或使用下列 PowerShell 命令來完成:

$instanceOne | Set-AzSqlInstance -InstancePoolName "pool-mi-001" -PublicDataEndpointEnabled $true

您也可以在建立執行個體時設定此參數。

將輸入規則新增至網路安全性群組

您可以透過 Azure 入口網站或使用 PowerShell 命令來完成此步驟,也可以在為受控執行個體準備好子網路之後隨時執行。

如需詳細資訊,請參閱允許網路安全性群組上的公用端點流量

將現有的單一執行個體移至集區

將執行個體移入和移出集區是公開預覽版的其中一項限制。 因應措施依賴從集區外執行個體的資料庫,時間點還原至已在集區中的執行個體。

這兩個執行個體都必須位於相同的訂用帳戶和區域中。 目前不支援跨區域和跨訂用帳戶的還原。

此程序會有一段停機時間。

若要移動現有的資料庫:

  1. 在作為移轉來源的受控執行個體上暫停工作負載。

  2. 產生指令碼來建立系統資料庫,並在執行個體集區內的執行個體上執行。

  3. 針對要從單一執行個體遷移到集區中執行個體的每個資料庫,執行時間點還原。

    $resourceGroupName = "my resource group name"
    $managedInstanceName = "my managed instance name"
    $databaseName = "my source database name"
    $pointInTime = "2019-08-21T08:51:39.3882806Z"
    $targetDatabase = "name of the new database that will be created"
    $targetResourceGroupName = "resource group of instance pool"
    $targetInstanceName = "pool instance name"
    
    Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
      -ResourceGroupName $resourceGroupName `
      -InstanceName $managedInstanceName `
      -Name $databaseName `
      -PointInTime $pointInTime `
      -TargetInstanceDatabaseName $targetDatabase `
      -TargetResourceGroupName $targetResourceGroupName `
      -TargetInstanceName $targetInstanceName
    
  4. 將您的應用程式指向新的執行個體,並繼續執行其工作負載。

如果有多個資料庫,請針對每個資料庫重複此程序。

後續步驟