練習 - 一般用途高可用性

已完成

在上一個單元中,您已了解 Azure SQL 的高可用性和結構。 在此練習中,您將瞭解 Azure SQL 資料庫 的一般用途層的運作方式,與內部部署的故障轉移叢集實例類似。 這個功能可能相當耗時且難以進行,但是您可以透過 Azure SQL 取得現成可用的項目。

在本練習中,您將會使用在先前課程模組中可能使用過的 ostress 工具來建立工作負載。 接著,您將會使用 Azure Cloud Shell 中的 Azure PowerShell 模組來起始容錯移轉。 最後,您將會檢視容錯移轉對 ostress 工作負載的影響。

Azure SQL 一般用途服務層級中的基本高可用性

在此練習中,您將完成下列步驟:

  1. 執行 ostress 工作負載。
  2. 確認環境已正確設定。
  3. 使用 PowerShell 起始 Azure SQL Database 的容錯移轉。
  4. 檢視 ostress 中的結果。
  5. 在發生容錯移轉的入口網站中尋找跡象。

執行 ostress 工作負載

第一個步驟是建立長時間執行的工作負載。 此工作負載可讓您了解容錯移轉如何影響讀取和寫入資料的能力,以及 Azure SQL Database 一般用途服務層級中的容錯移轉會耗費多少時間。 您將會使用 ostress。

  1. 在您的本機電腦上開啟新的命令提示字元。 使用 cd 移至您稍早複製或下載存放庫中的目錄,該目錄包含可用性模組。 例如,您可能會使用以下命令:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    ostress 可執行檔位於此資料夾中。 (這個檔案很小。)ostress 工作負載會連線並執行 50000 次的簡單查詢。

  2. 使用下列 ostress 指令碼來執行工作負載。 以您的 Azure SQL Database 邏輯伺服器名稱取代 serverName。 以您的密碼取代 password

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
    

    如果工作負載正常運作,則您應該會看到查詢 847 的結果重複出現在命令提示字元視窗中。

    如果您想要在 ostress 工作負載完成之前停止執行,您可以在終端機中選取 Ctrl+C

    如果您想要再次執行工作負載,則可再次執行此命令。

在 Azure Cloud Shell 中使用 PowerShell 來啟動容錯移轉並觀察結果

  1. 在 Azure Cloud Shell 終端機 (位於此頁面的右側) 中,執行下列 PowerShell 指令碼來設定環境:

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. 設定視窗,以便同時看到此瀏覽器和命令提示字元視窗。

  3. 請在 Azure Cloud Shell 終端機中執行下列程式碼:

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. 請從命令提示字元視窗觀察 ostress 中的結果。 當此命令正在執行時,您應該會觀察到命令提示字元視窗中出現的任何變更。 您會注意到,當發生容錯移轉時,您無法存取資料庫。 容錯移轉會在大約 30 秒之後完成,您會看到工作負載再次順利執行。 您應用程式中的重試邏輯非常重要,因為若 Azure 進行容錯移轉 (基於許多原因),則您不會希望應用程式失敗或遇到比容錯移轉時間還要久的停機時間。

  5. 在命令上建立容錯移轉的能力在特定情況下相當實用。 請注意,此服務會為您進行節流,讓您不要太過頻繁地執行此操作。 請執行下列命令來嘗試另一次的容錯移轉:

    # Create a failover again
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    

    您將會看到與下列項目類似的錯誤:

    Invoke-AzSqlDatabaseFailover: Long running operation failed with status 'Failed'. Additional Info:'There was a recent failover on the database or pool if database belongs in an elastic pool.  At least 15 minutes must pass between database failovers.'
    
  6. 您現在可以藉由選取視窗然後選取 Ctrl+C,在命令提示字元視窗中停止工作負載。 您可以讓視窗保持開啟,因為您將在下一個練習中使用相同的工作負載。

    您可能會想知道是否有辦法檢查容錯移轉是否發生。 目前仍沒有任何明確的「發生容錯移轉」訊息,但是「資源健康狀態」會是一個良好的指標。

  7. 在 Azure 入口網站中移至您的 Azure SQL 資料庫。 在左窗格中的 [說明] 底下,選取 [資源健康狀態]。 在容錯移轉之後的 5 到 15 分鐘之間,您可能會看到類似下列螢幕擷取畫面中所示的健康狀態事件。 此事件可能表示數種情況,但其中一種可能性便是發生了某些事情而導致 Azure 進行容錯移轉。

    Screenshot that shows a health event in the Azure portal.