在建立應用一致性快照時,系統會暫停正在寫入的資料,確保快照捕獲到的資料的完整性和一致性。通過應用一致性快照恢複資料時,可以減少資料損毀和丟失的風險,可以確保應用(例如SQL Server)能夠正常啟動,且資料與建立快照時的狀態一致。本文以在Windows Server 2019執行個體上部署Microsoft SQL Server 2019(64位)資料庫為例,驗證應用一致性快照的資料備份效果。
前提條件
-
ECS執行個體的雲端硬碟類型是ESSD雲端硬碟,且雲端硬碟未開啟多重掛載功能。
-
ECS執行個體處於運行中且雲助手運行正常。如何查看雲助手狀態請參見查看雲助手狀態及異常狀態處理。
-
您已安裝Windows SQL Server資料庫。
-
已為ECS執行個體配置應用一致性快照相關的RAM角色以及自訂權限原則。具體操作,請參見步驟一:建立RAM角色。
說明建立應用一致性快照時,需要調用雲助手訪問ECS執行個體並執行命令,因此需要通過RAM角色授予雲助手相應的許可權。
-
RAM角色:自訂,例如AppSnapshotRoleName。
-
自訂權限原則:策略內容如下,表示在建立快照過程中具有查詢快照、建立快照、設定標籤和查詢雲端硬碟資訊等相關許可權。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
-
操作思路
本實踐通過如下操作來驗證,如何通過建立應用一致性快照來確保在建立快照的瞬間,資料庫狀態與建立快照時的狀態一致,從而保證應用一致性。操作流程如下:
-
建立資料庫表和預存程序,用於類比資料寫入操作,以便後續驗證應用一致性快照的效果。
-
為SQL Server資料庫所在的Windows執行個體建立應用一致性快照。建立應用一致性快照時,資料庫的寫操作會暫時停止,確保資料一致性。
-
通過雲助手命令執行結果確認應用一致性快照是否建立成功,並查看資料庫暫停和恢複寫操作的時間點。
-
先通過應用一致性快照復原雲端硬碟,然後將SQL Server資料庫最後寫入時間與資料庫暫停時間做對比,來判斷應用一致性快照的資料恢複是否正確。
-
如果SQL Server資料最後寫入時間早於資料庫暫停時間:說明資料庫在暫停期間沒有寫入操作,資料恢複後SQL Server資料最後寫入時間反映了暫停前的最後狀態,資料庫狀態與快照建立時的狀態一致。
-
如果SQL Server資料最後寫入時間等於或晚於資料庫暫停時間:說明資料庫在暫停期間仍有寫入操作,應用一致性快照的效果未達到預期。
-
操作步驟
步驟一:準備資料庫驗證環境
-
遠端連線ECS執行個體。
具體操作,請參見使用Workbench登入Windows執行個體。
-
串連SQL Server資料庫。
-
在左下角單擊搜尋按鈕,在搜尋欄中輸入
ssms。 -
單擊Microsoft SQL Server Management Studio 18。
-
在串連到伺服器對話方塊中,設定伺服器串連資訊,單擊串連。
-
-
在Microsoft SQL Server Management Studio 18中,建立驗證需要的資料庫(AdventureWorks)。
-
單擊建立查詢。
-
在查詢時段中,輸入以下SQL語句。
CREATE DATABASE AdventureWorks; -
按右鍵執行。
-
-
在Microsoft SQL Server Management Studio 18中,建立驗證需要的資料庫表 (PointInTime)。
-
單擊建立查詢。
-
在查詢時段中,輸入以下SQL語句。
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 -
按右鍵執行。
-
-
在左側分類樹中,您可以查看建立的資料庫和表。
步驟二:通過控制台建立應用一致性快照
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
-
在快照一致性組頁簽中單擊建立快照一致性組。
-
在建立快照對話方塊中,設定快照一致性組參數。
-
資源類型預設選中執行個體。
-
選擇單台執行個體及執行個體中的ESSD類型雲端硬碟。
-
展開高級配置,選中啟用應用一致性快照後,選中是否預設包含 Writer。
說明Writer是VSS架構中的關鍵組件,Windows作業系統內建了許多Writer,負責確保在備份過程中資料的一致性。更多資訊,請參見磁碟區陰影複製服務。
-
-
單擊確認。
建立後會返回雲助手命令執行ID,您可以根據命令執行ID查看建立結果。
步驟三:驗證應用一致性快照是否建立成功
-
單擊雲助手命令執行ID,在雲助手頁面查看執行結果。
[level="info"][time="2025-03-03 13:53:03.4228545"][message="Begin to Create Application Consistent Snaps... [level="info"][time="2025-03-03 13:53:03.6121396"][message="Network connection RequestId= A29F3C87-E45F-... [level="info"][time="2025-03-03 13:53:03.6121396"][message="Attached DiskId=d-2ze6zrzyc4ampol4sv1, Devi... [level="info"][time="2025-03-03 13:53:03.6121396"][message="Attached DiskId=d-2zecqmy4929tm5t6haay, Devi... [level="info"][time="2025-03-03 13:53:05.1569259"][message="Required COM+ components are already install... [level="info"][time="2025-03-03 13:53:05.1569259"][message="Provider version is already latest"] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Start to Initialize VSS Requestor ..."] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Prepare to Create snapshot set"] [requestor=" "] [level="info"][time="2025-03-03 13:53:30.9244374"][message="Create Snapshot Set Successfully"] [level="info"][time="2025-03-03 13:53:31.7670453"][message="SnapshotGroup, requestId=E365F945-F0E9-57D4-... [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finished Quering SnapshotGroup Progress"] [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finish SnapshotGroup=ssg-2ze9bjzro7... [level="info"][time="2025-03-03 13:53:32.5651781"][message="Prepare to Thaw FileSystem or Applications"] [requestor=" "] [level="info"][time="2025-03-03 13:53:34.5692263"][message="Thaw Write Request Done"] [level="info"][time="2025-03-03 13:53:34.8605098"][message="Tag snapshots with AppConsistent"] [level="info"][time="2025-03-03 13:53:34.8620327"][message="Take AppConsistent snapshots successfully"] [level="info"][time="2025-03-03 13:53:34.8620327"][message="Prepare Freeze=27.0672261s, Thaw cost=2.0040... [level="info"][time="2025-03-03 13:53:34.8620327"][snapshotgroup="ssg-2ze9bjzro7rp"][message="Fi... Add VolumePath=\\?\Volume{9a80a1cd-3ca9-4afc-xxx}, VolumeName=C:\ Add VolumePath=\\?\Volume{99583ec9-8979-4842-xxx}, VolumeName=D:\ Add VolumePath=\\?\Volume{02db53f7-a3f7-4be1-xxx}, VolumeName= All writers included Finish to GatherWriterMetadata successfullyExitCode傳回值為
0,表示雲助手上建立應用一致性快照執行成功,此時回顯資訊中顯示建立應用一致性快照和快照一致性組ID。說明如果ExitCode傳回值不為
0,請根據ExitCode錯誤碼資訊排查相關問題。更多資訊,請參見錯誤碼資訊。 -
在雲助手的返回資訊中,查看快照一致性組建立過程資訊,確保建立的快照滿足資料完整性和可用性的要求。
-
檢查一致性組件是否安裝(COM+、VSS)。
日誌中出現如下類似資訊,說明應用一致性快照建立成功。
[level="info"][time="2025-03-03 13:53:03.6121396"][message="Attached DiskId-d-2ze6z xxx", Devi [level="info"][time="2025-03-03 13:53:03.6121396"][message="Attached DiskId-d-2zecqmy4929tm5t6haay, Devi [level="info"][time="2025-03-03 13:53:05.1569259"][message="Required COM+ components are already install [level="info"][time="2025-03-03 13:53:05.1569259"][message="Provider version is already latest"] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Start to Initialize VSS Requestor ..."] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Prepare to Create snapshot set"] [requestor=" "] [level="info"][time="2025-03-03 13:53:30.9244374"][message="Create Snapshot Set Successfully"] [level="info"][time="2025-03-03 13:53:31.7670453"][message="SnapshotGroup, requestId-E365F945-F0E9-57D4- [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finished Quering SnapshotGroup Progress"] [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finish SnapshotGroup-ssg-2ze9bjz [level="info"][time="2025-03-03 13:53:32.5651781"][message="Prepare to Thaw FileSystem or Applications"] -
確保系統能夠正確識別並載入所有需要備份的邏輯卷。
日誌中 Add VolumePath 行顯示 C:\、D:\ 及一個無名稱卷已被添加為快照卷。
[level="info"][time="2025-03-03 13:53:34.5692263"][message="Thaw Write Request Done"] [level="info"][time="2025-03-03 13:53:34.8605098"][message="Tag snapshots with AppConsistent"] [level="info"][time="2025-03-03 13:53:34.8620327"][message="Take AppConsistent snapshots successfully"] [level="info"][time="2025-03-03 13:53:34.8620327"][message="Prepare Freeze=27.0672261s, Thaw cost=2.0040xxx [level="info"][time="2025-03-03 13:53:34.8620327"][snapshotgroup="ssg-2ze9bjzro7rxxx"][message="Fixxx Add VolumePath=\\?\Volume{9a80a1cd-3ca9-4afc-b38d-11d8e7d74606}\, VolumeName=C:\ Add VolumePath=\\?\Volume{99583ec9-8979-4842-a45a-21da7d15dc1d}\, VolumeName=D:\ Add VolumePath=\\?\Volume{02db53f7-a3f7-4be1-92f3-8a7ca9324115}\, VolumeName= All writers included Finish to GatherWriterMetadata successfully -
查看是否自動加入SQL Server中相應的資料庫,保證資料庫的完整性和一致性。
命令輸出中可以看到 SqlServerWriter 已自動加入 SQLEXPRESS 執行個體下的 master、model、msdb、AdventureWorks 四個資料庫,說明應用一致性快照建立成功。
* Writer 'Performance Counters Writer': - Add component \PerformanceCounters * Writer 'System Writer': - Add component \System Files - Add component \Win32 Services Files * Writer 'SqlServerWriter': - Add component \iZpo1skdv7v082Z\SQLEXPRESS\master - Add component \iZpo1skdv7v082Z\SQLEXPRESS\model - Add component \iZpo1skdv7v082Z\SQLEXPRESS\msdb - Add component \iZpo1skdv7v082Z\SQLEXPRESS\AdventureWorks * Writer 'ASR Writer': - Add component \ASR\ASR - Add component \Volumes\Volume{9a80a1cd-3ca9-4afc-xxx} - Add component \Volumes\Volume{02db53f7-a3f7-4be1-xxx} - Add component \Volumes\Volume{99583ec9-8979-4842-xxx} -
快照在
2025-03-03 13:53:30建立成功,表示在這一時間點捕獲快照資料,資料庫的寫入操作暫停。[level="info"][time="2025-03-03 13:53:05.1569259"][message="Provider version is already latest"] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Start to Initialize VSS Requestor ..."] [level="info"][time="2025-03-03 13:53:05.1569259"][message="Prepare to Create snapshot set"] [requestor= "] [level="info"][time="2025-03-03 13:53:30.9244374"][message="Create Snapshot Set Successfully"] [level="info"][time="2025-03-03 13:53:31.7670453"][message="SnapshotGroup, requestId=E365F945-F0E9-57D4-xxx"] [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finished Quering SnapshotGroup Progress"] [level="info"][time="2025-03-03 13:53:32.5651781"][message="Finish SnapshotGroup=ssg-2ze9bjzro7rplr81xvfxxx"] [level="info"][time="2025-03-03 13:53:32.5651781"][message="Prepare to Thaw FileSystem or Applications"]
-
-
查看快照一致性組和雲端硬碟快照資訊。
-
在快照一致性組頁簽中找到已建立的快照一致性組,單擊快照一致性組ID查看快照詳情。
-
在快照資訊地區,根據快照的標籤資訊,檢查是否成功建立應用一致性快照。
樣本中雲端硬碟快照的標籤顯示
APPConsistent:True,表示建立的是應用一致性快照。
-
串連SQL Server資料庫,查看資料庫的暫停提交時間。
-
遠端連線ECS執行個體。
具體操作,請參見使用Workbench登入Windows執行個體。
-
通過Microsoft SQL Server Management Studio 18串連SQL Server資料庫。
-
單擊建立查詢。
-
在查詢時段中,輸入以下SQL語句。
USE AdventureWorks select * from PointInTime GO -
按右鍵執行。
-
在查詢結果中,查看資料庫的暫停時間點。
您可以發現在
2025-03-03 13:53:30~2025-03-03 13:53:33時間段內沒有插入資料,說明13:53:30暫停資料庫的寫入操作,13:53:33恢複了資料庫的寫入操作。PIT 622 2025-03-03 13:53:23.843 623 2025-03-03 13:53:23.843 624 2025-03-03 13:53:24.860 624 2025-03-03 13:53:25.887 625 2025-03-03 13:53:26.893 626 2025-03-03 13:53:26.903 626 2025-03-03 13:53:27.907 627 2025-03-03 13:53:27.903 628 2025-03-03 13:53:29.913 629 2025-03-03 13:53:30.923 630 2025-03-03 13:53:33.613 631 2025-03-03 13:53:34.693 632 2025-03-03 13:53:35.703 633 2025-03-03 13:53:36.720 634 2025-03-03 13:53:37.733
-
步驟四:驗證通過應用一致性快照恢複資料的效果
-
通過已建立的快照一致性組復原雲端硬碟。
具體操作,請參見通過快照一致性組復原雲端硬碟。
-
重新登入SQL Server資料庫並查詢資料庫表PointInTime的內容。
-
遠端連線ECS執行個體。
具體操作,請參見使用Workbench登入Windows執行個體。
-
通過Microsoft SQL Server Management Studio 18串連SQL Server資料庫。
-
單擊建立查詢。
-
在查詢時段中,輸入以下SQL語句。
USE AdventureWorks select * from PointInTime GO -
按右鍵執行。
-
在查詢結果中,查看恢複資料後資料庫最後一條記錄的時間點。
您可以探索資料庫最後一條插入資料的時間點為
2025-03-03 13:53:29,早於步驟三中查詢的暫停時間點2025-03-03 13:53:30,因此證明關於SQL Server的應用一致性快照備份的結果是正確的。
-