前提条件
- 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,请参见官方文档。 |
操作流程
步骤一:准备数据库验证环境
在操作之前,您已经安装好Microsoft SQL Server 2019(64位)环境,此操作介绍如何准备数据库验证环境。
- 远程连接ECS实例。具体操作,请参见连接方式概述。
- 连接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角色。
- 使用阿里云账号登录RAM控制台。
- 创建应用一致性快照相关的RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色。示例为创建一个AppSnapshotRoleName的RAM角色。
- 创建应用一致性快照相关权限策略。具体操作,请参见创建自定义策略。
创建一个AppSnapshotPolicy权限策略,具有查询快照相关信息、创建快照、设置标签和查询云盘信息等相关权限。您可以直接使用以下策略内容。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
- 为RAM角色(AppSnapshotRoleName)设置自定义权限(AppSnapshotPolicy)。具体操作,请参见为RAM角色授权。
- 为目标实例设置RAM角色(AppSnapshotRoleName)。具体操作,请参见授予实例RAM角色。
步骤三:通过控制台创建应用一致性快照
此操作介绍如何在控制台为SQL Server数据库所在的Windows实例创建应用一致性快照。
- 进入ECS实例列表页面。
- 登录ECS管理控制台。
- 在左侧导航栏,选择实例与镜像 > 实例。
- 在顶部菜单栏处,选择目标ECS实例所在地域。
- 找到目标实例,在操作列中选择更多 > 云盘和镜像 > 创建实例快照。
- 在创建实例快照对话框中,设置实例快照参数并启用快照极速可用功能。
- 关于实例快照参数设置,请参见创建多个云盘快照(实例快照)。
- 关于快照极速可用功能,请参见快照极速可用功能。
- 在创建实例快照对话框中,选中启用应用一致性快照和是否默认包含Writer。
- 单击确定。创建后会返回云助手命令ID和命令执行ID,您可以根据命令执行ID查看创建结果。
步骤四:验证是否成功创建应用一致性快照。
此操作介绍如何在ECS管理控制台查看应用一致性快照创建结果,并在数据库中查看数据暂停提交的效果。
- 在云助手页面,查看命令执行结果。
- 登录ECS管理控制台。
- 在左侧导航栏,选择运维与监控 > 发送命令/文件(云助手)。
- 单击命令执行结果页签。
- 单击目标命令执行ID,查看执行结果。
如上图所示,ExitCode返回值为0
,表示云助手上创建应用一致性快照执行成功,此时回显信息中显示创建应用一致性快照和实例快照ID。
说明 如果ExitCode返回值不为0
,请根据ExitCode错误码信息排查相关问题。更多信息,请参见错误码信息。
- 在云助手的返回信息中,查看实例快照创建过程信息。
- 检查一致性组件,如果没有则自动安装。
- 自动识别并加载逻辑卷。
- 自动加入SQL Server中相应的数据库。
- 快照冻结时间点为
2021-08-05 16:42:59
。
- 在快照页面查看实例快照和云盘快照信息。
- 在左侧导航栏,选择存储与快照 > 快照。
- 单击实例快照页签,查看已创建的实例快照。
- 单击云盘快照页签,根据快照的标签信息,检查是否成功创建应用一致性快照。示例中云盘快照的标签显示
APPConsistent:True
,表示创建的是应用一致性快照。
- 连接数据库,查看数据暂停提交时间。
- 远程连接ECS实例。
- 通过Microsoft SQL Server Management Studio 18连接SQL Server数据库。
- 单击新建查询。
- 在查询窗口中,输入以下SQL语句。
USE AdventureWorks select * from PointInTime GO
- 右键单击运行。
- 在查询结果中,您可以发现在冻结时间段内,数据库没有写入记录插入进来。
步骤五:验证通过应用一致性快照恢复数据的效果
通过应用一致性快照恢复数据后,检查MySQL数据最后写入时间是在应用冻结脚本执行前,因此可以判断应用一致性快照的数据恢复有效果。
- 在ECS管理控制台,通过上面创建的实例快照回滚ECS实例。具体操作,请参见通过实例快照回滚云盘。
- 登录SQL Server并查询数据库表PointInTime的内容。
- 远程连接ECS实例。
- 通过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的应用一致性快照备份的结果是正确的。