在創建應用一致性快照時,系統會暫停正在寫入的數據,確保快照捕獲到的數據的完整性和一致性。通過應用一致性快照回滾云盤,數據不會損壞和丟失,可以確保應用(例如SQL Server)處于一致的啟動狀態。本文以在Windows實例部署SQL Server數據庫為例,驗證應用一致性快照的數據備份效果。
前提條件
ECS實例的操作系統屬于Windows Server 2012 R2及上版本。
ECS實例的云盤類型是ESSD云盤,且云盤未開啟多重掛載功能。
ECS實例已安裝云助手Agent。具體操作,請參見安裝云助手Agent。
您已安裝Windows SQL Server數據庫。更多信息,請參見部署SQL Server數據庫。
操作步驟
本操作以Windows Server 2019操作系統安裝的Microsoft SQL Server 2019(64位)來驗證應用一致性快照的數據備份效果為例,請您根據實際環境進行操作。
步驟一:準備數據庫驗證環境
準備數據庫驗證環境,用于后續驗證應用程序與數據庫的交互是否正常。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄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
右鍵單擊執行。
在左側目錄樹中,您可以查看創建的數據庫和表。
步驟二:為ECS實例授予RAM角色
開啟應用一致性快照前,必須先為ECS實例配置相關的RAM角色,賦予ECS實例查詢快照、創建快照等相關權限。
登錄RAM控制臺。
創建應用一致性快照相關的RAM角色、為RAM角色授權并授予ECS實例。具體操作,請參見創建ECS實例RAM角色并授予給ECS。其中:
RAM角色:示例名稱為AppSnapshotRoleName
可信實體類型:阿里云服務
自定義權限策略:示例名稱為AppSnapshotPolicy,內容如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
該策略具有查詢快照相關信息、創建快照、設置標簽和查詢云盤信息等權限。
步驟三:通過控制臺創建應用一致性快照
此操作介紹如何在控制臺為SQL Server數據庫所在的Windows實例創建應用一致性快照。
進入ECS實例列表頁面。
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頂部菜單欄處,選擇目標ECS實例所在地域。
找到目標實例,在操作列選擇
。在創建快照一致性組對話框中,設置參數。
選擇需要創建快照一致性組的ESSD云盤并設置其他快照參數。
設置應用一致性快照,選中啟用應用一致性快照和是否默認包含Writer。
單擊確定。
創建后會返回云助手命令ID和命令執行ID,您可以根據命令執行ID查看創建結果。
步驟四:驗證是否成功創建應用一致性快照
此操作介紹如何在ECS管理控制臺查看應用一致性快照創建結果,并在數據庫中查看數據暫停提交的效果。
在云助手頁面,查看命令執行結果。
在云助手的返回信息中,查看快照一致性組創建過程信息。
檢查一致性組件,如果沒有則自動安裝。
自動識別并加載邏輯卷。
自動加入SQL Server中相應的數據庫。
快照暫停數據庫寫入時間點為
2021-08-05 16:42:59
。
在快照頁面查看快照一致性組和云盤快照信息。
在左側導航欄,選擇 。
單擊快照一致性組頁簽,找到已創建的快照一致性組,單擊快照一致性組ID查看快照詳情。
在快照信息區域,根據快照的標簽信息,檢查是否成功創建應用一致性快照。
示例中云盤快照的標簽顯示
APPConsistent:True
,表示創建的是應用一致性快照。
連接SQL Server數據庫,查看數據暫停提交時間。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄Windows實例。
通過Microsoft SQL Server Management Studio 18連接SQL Server數據庫。
單擊新建查詢。
在查詢窗口中,輸入以下SQL語句。
USE AdventureWorks select * from PointInTime GO
右鍵單擊執行。
在查詢結果中,您可以發現在暫停時間段內,數據庫沒有寫入記錄插入進來。
步驟五:驗證通過應用一致性快照恢復數據的效果
先通過應用一致性快照恢復數據,然后將SQL Server數據最后寫入時間與prescript.sh腳本執行的時間做對比,來判斷應用一致性快照的數據恢復是否正確。
在ECS管理控制臺,通過上面創建的快照一致性組回滾ECS實例。
具體操作,請參見通過快照一致性組回滾云盤。
登錄SQL Server并查詢數據庫表PointInTime的內容。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄Windows實例。
通過Microsoft SQL Server Management Studio 18連接SQL Server數據庫。
單擊新建查詢。
在查詢窗口中,輸入以下SQL語句。
USE AdventureWorks select * from PointInTime GO
右鍵單擊執行。
在查詢結果中,您可以查看恢復數據后最后一條記錄的時間點。
數據庫暫停成功之前會停止插入數據。使用應用一致性的快照一致性組恢復數據后,最后一條數據對應的時間為
2021-08-05 16:42:57.
,早于步驟四中查詢的暫停時間點2021-08-05 16:42:59.9732143
。因此證明關于SQL Server的應用一致性快照備份的結果是正確的。