在创建应用一致性快照时,系统会暂停正在写入的数据,确保快照捕获到的数据的完整性和一致性。通过应用一致性快照回滚云盘,数据不会损坏和丢失,可以确保应用(例如SQL Server)处于一致的启动状态。本文以在Windows实例部署SQL Server数据库为例,验证应用一致性快照的数据备份效果。
前提条件
ECS实例的操作系统属于Windows Server 2012 R2及上版本。
ECS实例的云盘类型是ESSD云盘,且云盘未开启多重挂载功能。
ECS实例已安装云助手Agent。具体操作,请参见安装云助手Agent。
您已安装Windows 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的应用一致性快照备份的结果是正确的。