天天看點

Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

前提條件

  • ECS執行個體的作業系統屬于Windows Server 2019、Windows Server 2016或Windows Server 2012 R2。
  • ECS執行個體中雲盤必須是ESSD類型雲盤,且檔案系統為EXT3、EXT4、XFS或NTFS。同時,不支援網絡檔案系統和共享檔案系統。
  • ECS執行個體已安裝雲助手用戶端。具體操作,請參見 安裝雲助手用戶端

    說明 2017年12月01日之後使用公共鏡像建立的ECS執行個體,已預設預裝雲助手用戶端。

  • 您已經了解如何安裝和使用SQL Server資料庫。更多資訊,請參見官方文檔。

背景資訊

本文使用的驗證環境資訊如下所示。

環境 說明
ECS執行個體規格 ecs.g7.2xlarge
作業系統 Windows Server 2019 資料中心版 64位中文版
雲盤 ESSD雲盤
應用

Microsoft SQL Server 2019(64位)

說明 如何安裝部署Microsoft SQL Server,請參見官方文檔。

操作流程

  1. 步驟一:準備資料庫驗證環境
  2. 步驟二:為ECS執行個體授予RAM角色
  3. 步驟三:通過控制台建立應用一緻性快照
  4. 步驟四:驗證是否成功建立應用一緻性快照。
  5. 步驟五:驗證通過應用一緻性快照恢複資料的效果

在操作之前,您已經安裝好Microsoft SQL Server 2019(64位)環境,此操作介紹如何準備資料庫驗證環境。

  1. 遠端連接配接ECS執行個體。具體操作,請參見 連接配接方式概述
  2. 連接配接SQL Server資料庫。
    1. 在左下角單擊搜尋按鈕,在搜尋欄中輸入

      ssms

Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
    1. 單擊Microsoft SQL Server Management Studio 18。
    2. 在連接配接到伺服器對話框中,設定伺服器連接配接資訊,單擊連接配接。
  1. 在Microsoft SQL Server Management Studio 18中,建立驗證需要的資料庫(AdventureWorks)。
    1. 單擊建立查詢。
    2. 在查詢視窗中,輸入以下SQL語句。
CREATE DATABASE AdventureWorks;      
    1. 右鍵單擊查詢視窗,再單擊運作。
  1. 在Microsoft SQL Server Management Studio 18中,建立驗證需要的資料庫表 (PointInTime)。
USE AdventureWorks
GO
IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'PointInTime' AND TYPE ='U')
CREATE TABLE PointInTime (PIT datetime)
WHILE ( 1 = 1 )
BEGIN
    INSERT PointInTime SELECT GETDATE()
    WAITFOR DELAY '00:00:001'
END      
    1. 右鍵單擊運作。
  1. 在左側目錄樹中,您可以檢視建立的資料庫和表。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

開啟應用一緻性快照前,必須先為ECS執行個體配置相關的RAM角色。

  1. 使用阿裡雲賬号登入 RAM控制台
  2. 建立應用一緻性快照相關的RAM角色。具體操作,請參見 建立可信實體為阿裡雲服務的RAM角色 。示例為建立一個AppSnapshotRoleName的RAM角色。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
  1. 建立應用一緻性快照相關權限政策。具體操作,請參見 建立自定義政策
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

建立一個AppSnapshotPolicy權限政策,具有查詢快照相關資訊、建立快照、設定标簽和查詢雲盤資訊等相關權限。您可以直接使用以下政策内容。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeSnapshot*",
                "ecs:CreateSnapshot*",
                "ecs:TagResources",
                "ecs:DescribeDisks"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {}
        }
    ]
}      
  1. 為RAM角色(AppSnapshotRoleName)設定自定義權限(AppSnapshotPolicy)。具體操作,請參見 為RAM角色授權
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
  1. 為目标執行個體設定RAM角色(AppSnapshotRoleName)。具體操作,請參見 授予執行個體RAM角色
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

此操作介紹如何在控制台為SQL Server資料庫所在的Windows執行個體建立應用一緻性快照。

  1. 進入ECS執行個體清單頁面。
    1. 登入 ECS管理控制台
    2. 在左側導航欄,選擇執行個體與鏡像 > 執行個體。
    3. 在頂部菜單欄處,選擇目标ECS執行個體所在地域。
  1. 找到目标執行個體,在操作列中選擇更多 > 雲盤和鏡像 > 建立執行個體快照。
  2. 在建立執行個體快照對話框中,設定執行個體快照參數并啟用快照極速可用功能。
  1. 在建立執行個體快照對話框中,選中啟用應用一緻性快照和是否預設包含Writer。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
  1. 單擊确定。建立後會傳回雲助手指令ID和指令執行ID,您可以根據指令執行ID檢視建立結果。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

此操作介紹如何在ECS管理控制台檢視應用一緻性快照建立結果,并在資料庫中檢視資料暫停送出的效果。

  1. 在雲助手頁面,檢視指令執行結果。
    1. 在左側導航欄,選擇運維與監控 > 發送指令/檔案(雲助手)。
    2. 單擊指令執行結果頁簽。
    3. 單擊目标指令執行ID,檢視執行結果。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

如上圖所示,ExitCode傳回值為

,表示雲助手上建立應用一緻性快照執行成功,此時回顯資訊中顯示建立應用一緻性快照和執行個體快照ID。

說明 如果ExitCode傳回值不為

,請根據ExitCode錯誤碼資訊排查相關問題。更多資訊,請參見

錯誤碼資訊
  1. 在雲助手的傳回資訊中,檢視執行個體快照建立過程資訊。
    • 檢查一緻性元件,如果沒有則自動安裝。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
    • 自動識别并加載邏輯卷。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
    • 自動加入SQL Server中相應的資料庫。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
    • 快照當機時間點為

      2021-08-05 16:42:59

Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
  1. 在快照頁面檢視執行個體快照和雲盤快照資訊。
    1. 在左側導航欄,選擇存儲與快照 > 快照。
    2. 單擊執行個體快照頁簽,檢視已建立的執行個體快照。
    3. 單擊雲盤快照頁簽,根據快照的标簽資訊,檢查是否成功建立應用一緻性快照。示例中雲盤快照的标簽顯示

      APPConsistent:True

      ,表示建立的是應用一緻性快照。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐
  1. 連接配接資料庫,檢視資料暫停送出時間。
    1. 遠端連接配接ECS執行個體。
    2. 通過Microsoft SQL Server Management Studio 18連接配接SQL Server資料庫。
USE AdventureWorks
select * from PointInTime
GO      
    1. 在查詢結果中,您可以發現在當機時間段内,資料庫沒有寫入記錄插入進來。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

通過應用一緻性快照恢複資料後,檢查MySQL資料最後寫入時間是在應用當機腳本執行前,是以可以判斷應用一緻性快照的資料恢複有效果。

  1. 在ECS管理控制台,通過上面建立的執行個體快照復原ECS執行個體。具體操作,請參見 通過執行個體快照復原雲盤
  2. 登入SQL Server并查詢資料庫表PointInTime的内容。
USE AdventureWorks
select * from PointInTime
GO      
    1. 在查詢結果中,您可以檢視恢複資料後最後一條記錄的時間點。
Windows 下使用快照為SQL Server建立應用一緻性快照最佳實踐

資料庫當機成功之前會停止插入資料。使用應用一緻性的執行個體快照恢複資料後,最後一條資料對應的時間為

2021-08-05 16:42:57.

,早于步驟四中查詢的當機時間點

2021-08-05 16:42:59.9732143

。是以證明關于SQL Server的應用一緻性快照備份的結果是正确的。