練習 - 業務關鍵高可用性

已完成

在此練習中,您會將資料庫升級至業務關鍵層級。 您會看到其如何提供讀取複本並提升效能。

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

Azure SQL 業務關鍵服務層級中的基本高可用性

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

  1. 在業務關鍵層級中,從上一個練習部署資料庫。
  2. 執行 ostress 工作負載。
  3. 使用 PowerShell 起始容錯移轉。
  4. 檢視 ostress 中的結果。
  5. 連線到可讀取次要複本。

在業務關鍵層級中部署相同的資料庫

在上一個課程模組中,您已了解如何使用 T-SQL 調整資料庫。 本練習的目標是要將您在上一個練習中使用的資料庫,從一般用途升級為業務關鍵。 您將使用 Azure Cloud Shell 來升級資料庫。 因為容錯移轉的頻率有限制,所以您會使用相同的範例資料庫,但是將其命名為 AdventureWorks-bc。

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

    $resourceGroup = "<rgn>[sandbox resource group name]</rgn>"
    $database = "AdventureWorks-bc"
    $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. 執行下列命令,在業務關鍵服務層級上建立資料庫:

    az sql db create --name $database `
    --edition BusinessCritical `
    --family Gen5 `
    --capacity 2 `
    --sample-name AdventureWorksLT `
    --read-scale Enabled `
    --zone-redundant false
    

    此命令需要一點時間才能完成。 當命令正在執行時,您可以檢閱一些使用的參數:

    • family:這個參數會指定硬體的世代。 為了與上一個練習一致,我們使用 Gen5

    • capacity:這個參數會指定 DTU 或虛擬核心的數目。 為了與上一個練習一致,我們使用 2 個虛擬核心。

    • sample-name:為了與上一個練習一致,我們使用 AdventureWorksLT 資料庫範例。

    • edition:這個參數名稱有點誤導。 其實是指服務層級,這與 SQL Server 中使用的版本不同。

    • read-scale:這個選項預設不會啟用,但是沒有與其關聯的額外費用。 藉由將其啟用,即可讓其中一個次要複本作為可讀取的次要資料庫。

    • zone-redundant:根據預設,此參數是設定為 False。 如果想要「多重 AZ」部署,則可將其設定為 True,而不需要額外費用。 您將在下一個單元中深入了解可用性區域。

      注意

      可用性區域僅適用於特定區域。 Azure SQL 受控執行個體目前無法使用可用性區域。

  3. 建立資料庫之後,您應該會在 Azure Cloud Shell 輸出中看到有關更新的詳細資訊。 您會看到兩個主要類別 (雖然您也會在其他幾個屬性底下看到指標):

    • currentServiceObjectiveName:應該是 BC_Gen5_2BC 代表業務關鍵。
    • currentSku
      • name:應該是 BC_Gen5
      • tier:應該是 BusinessCritical
  4. 另一個檢查服務層級的方法是在 Azure 入口網站中移至您的資料庫。 在 [概觀] 索引標籤中,查看 [定價層]

    提示

    還有其他許多方式可以檢視這些更新。 另一種方式是使用 SSMS。 如果以滑鼠右鍵按一下資料庫,然後選取 [屬性] > [設定 SLO],您可以檢視變更。

執行 ostress 工作負載

如同前一個練習,您將使用 ostress 來重複查詢 Azure SQL 資料庫。

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

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

    ostress 工作負載會連線並執行 50000 次的簡單查詢。

  2. 使用下列 ostress 指令碼來執行工作負載。 以您的 Azure SQL Database 邏輯伺服器名稱取代 serverName。 以您的密碼取代 password。 此命令與上一個練習中的命令稍有不同。 資料庫名稱現在是 AdventureWorks-bc

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

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

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

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

起始容錯移轉並檢視結果

  1. 設定視窗,以便同時看到此瀏覽器和命令提示字元視窗。

  2. 請在 Azure Cloud Shell 終端中執行下列程式碼。 此命令與您在上一個練習中所使用的命令相同。

    # create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  3. 當此命令正在執行時,您應該觀察出現在終端機中的任何變更。 您會注意到,當發生容錯移轉時,您無法存取資料庫。 這段時間非常短。 您應該會在中斷連線後的大約 5 秒內重新連線! 此容錯移轉比一般用途層級中的容錯移轉速度快上六倍以上。

    請記住,商務關鍵服務層級中的資料庫或受控執行個體基本上會在幕後部署 Always On 可用性群組,因此當進行容錯移轉時,只會變更後端中的指標,因為 Azure 會將您重新導向至其中一個次要資料庫。 這就是為什麼容錯移轉的速度會比在一般用途中快很多。

連線到唯讀複本

因為已啟用 read-scale 參數,所以可將其中一個次要複本用於唯讀工作負載。 為了在應用程式中存取唯讀複本,您只需要將下列參數新增至資料庫的連接字串:

ApplicationIntent=ReadOnly;
  1. 在 SSMS 中,建立新的查詢連線。 (選取 [檔案] > [新增] > [資料庫引擎查詢]。)

    顯示如何建立查詢連線的螢幕擷取畫面。

  2. 在 [連線到伺服器] 對話方塊中,使用您用來連線到 Azure SQL Database 邏輯伺服器的設定。 (也就是使用 SQL Server 驗證。)選取 [選項]

    顯示 [連線至伺服器] 對話方塊的螢幕擷取畫面。

  3. 選取 [連線屬性],然後選取 [全部重設]。 在 [連線到資料庫] 底下,選取 [瀏覽伺服器],然後選取 [AdventureWorks-bc] 資料庫。 選取 [確定]。

  4. 選取 [其他連線參數],並且將下列內容貼到文字方塊中。 選取 Connect

    ApplicationIntent=ReadOnly;
    

    使用 SSMS 時,您必須指定想要以唯讀形式連線的伺服器和資料庫。 這是因為伺服器中可能有多個資料庫具有不同的可讀取次要複本功能。

  5. 若要進行測試,請在新的資料庫引擎查詢上嘗試下列查詢。 觀察結果。 這些是您預期的結果嗎?

    SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability')
    

    顯示唯讀回應的螢幕擷取畫面。

  6. 您可以選擇性地重新連線並更新其他連線參數。 (以 ReadWrite 取代 ReadOnly。)確認您正在存取讀取/寫入主要複本。 ReadWrite 為預設值,因此如果未選取任何項目,就會得到下列結果:

    顯示唯讀/寫入回應的螢幕擷取畫面。