为SQL Server创建应用一致性快照最佳实践(Windows)

更新时间:2025-04-29 10:15:15

在创建应用一致性快照时,系统会暂停正在写入的数据,确保快照捕获到的数据的完整性和一致性。通过应用一致性快照恢复数据时,可以减少数据损坏和丢失的风险,可以确保应用(例如SQL Server)能够正常启动,且数据与创建快照时的状态一致。本文以在Windows Server 2019实例上部署Microsoft SQL Server 2019(64位)数据库为例,验证应用一致性快照的数据备份效果。

前提条件

  • ECS实例的云盘类型是ESSD云盘,且云盘未开启多重挂载功能

  • ECS实例处于运行中且云助手运行正常。如何查看云助手状态请参见查看云助手状态及异常状态处理

  • 您已安装Windows SQL Server数据库。更多信息,请参见部署SQL Server数据库(Windows)

  • 已为ECS实例配置应用一致性快照相关的RAM角色以及自定义权限策略。具体操作,请参见创建RAM角色并授予给ECS实例

    说明

    创建应用一致性快照时,需要调用云助手访问ECS实例并执行命令,因此需要通过RAM角色授予云助手相应的权限。

    • RAM角色:自定义,例如AppSnapshotRoleName。

    • 自定义权限策略:策略内容如下,表示在创建快照过程中具有查询快照、创建快照、设置标签和查询云盘信息等相关权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:DescribeSnapshot*",
                      "ecs:CreateSnapshot*",
                      "ecs:TagResources",
                      "ecs:DescribeDisks"
                  ],
                  "Resource": [
                      "*"
                  ],
                  "Condition": {}
              }
          ]
      }

操作思路

本实践通过如下操作来验证,如何通过创建应用一致性快照来确保在创建快照的瞬间,数据库状态与创建快照时的状态一致,从而保证应用一致性。操作流程如下:

image
  1. 步骤一:准备数据库验证环境

    创建数据库表和存储过程,用于模拟数据写入操作,以便后续验证应用一致性快照的效果。

  2. 步骤二:通过控制台创建应用一致性快照

    SQL Server数据库所在的Windows实例创建应用一致性快照。创建应用一致性快照时,数据库的写操作会暂时停止,确保数据一致性。

  3. 步骤三:验证应用一致性快照是否创建成功

    通过云助手命令执行结果确认应用一致性快照是否创建成功,并查看数据库暂停和恢复写操作的时间点。

  4. 步骤四:验证通过应用一致性快照恢复数据的效果

    先通过应用一致性快照回滚云盘,然后将SQL Server数据库最后写入时间与数据库暂停时间做对比,来判断应用一致性快照的数据恢复是否正确。

    • 如果SQL Server数据最后写入时间早于数据库暂停时间:说明数据库在暂停期间没有写入操作,数据恢复后SQL Server数据最后写入时间反映了暂停前的最后状态,数据库状态与快照创建时的状态一致。

    • 如果SQL Server数据最后写入时间等于或晚于数据库暂停时间:说明数据库在暂停期间仍有写入操作,应用一致性快照的效果未达到预期。

操作步骤

步骤一:准备数据库验证环境

  1. 远程连接ECS实例。

  2. 连接SQL Server数据库。

    1. 在左下角单击搜索按钮,在搜索栏中输入ssms

      打开ssms

    2. 单击Microsoft SQL Server Management Studio 18

    3. 连接到服务器对话框中,设置服务器连接信息,单击连接

  3. Microsoft SQL Server Management Studio 18中,创建验证需要的数据库(AdventureWorks)。

    1. 单击新建查询

    2. 在查询窗口中,输入以下SQL语句。

      CREATE DATABASE AdventureWorks;
    3. 右键单击执行

  4. Microsoft SQL Server Management Studio 18中,创建验证需要的数据库表 (PointInTime)。

    1. 单击新建查询

    2. 在查询窗口中,输入以下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
    3. 右键单击执行

  5. 在左侧目录树中,您可以查看创建的数据库和表。

    数据库和表

步骤二:通过控制台创建应用一致性快照

  1. 访问ECS控制台-快照一致性组

  2. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  3. 快照一致性组页签中单击创建快照一致性组

  4. 创建快照对话框中,设置快照一致性组参数。

    1. 资源类型默认选中实例

    2. 选择单台实例及实例中的ESSD类型云盘。

    3. 展开高级配置,选中启用应用一致性快照是否默认包含Writer

      说明

      WriterVSS架构中的关键组件,Windows操作系统自带了许多Writer,负责确保在备份过程中数据的一致性。更多信息,请参见卷影复制服务

  5. 单击确认

    创建后会返回云助手命令执行ID,您可以根据命令执行ID查看创建结果。

步骤三:验证应用一致性快照是否创建成功

  1. 单击云助手命令执行ID,在云助手页面查看执行结果。

    image

    如上图所示,ExitCode返回值为0,表示云助手上创建应用一致性快照执行成功,此时回显信息中显示创建应用一致性快照和快照一致性组ID。

    说明

    如果ExitCode返回值不为0,请根据ExitCode错误码信息排查相关问题。更多信息,请参见错误码信息

  2. 在云助手的返回信息中,查看快照一致性组创建过程信息,确保创建的快照满足数据完整性和可用性的要求。

    • 检查一致性组件是否安装(COM+、VSS)。

      image

    • 确保系统能够正确识别并加载所有需要备份的逻辑卷。

      image

    • 查看是否自动加入SQL Server中相应的数据库,保证数据库的完整性和一致性。

      image

    • 快照在2025-03-03 13:53:30创建成功,表示在这一时间点捕获快照数据,数据库的写入操作暂停。

      image

  3. 查看快照一致性组和云盘快照信息。

    1. 访问ECS控制台-快照一致性组

    2. 快照一致性组页签中找到已创建的快照一致性组,单击快照一致性组ID查看快照详情。

    3. 快照信息区域,根据快照的标签信息,检查是否成功创建应用一致性快照。

      示例中云盘快照的标签显示APPConsistent:True,表示创建的是应用一致性快照。

      image

  4. 连接SQL Server数据库,查看数据库的暂停提交时间。

    1. 远程连接ECS实例。

      具体操作,请参见使用Workbench工具以RDP协议登录Windows实例

    2. 通过Microsoft SQL Server Management Studio 18连接SQL Server数据库。

    3. 单击新建查询

    4. 在查询窗口中,输入以下SQL语句。

      USE AdventureWorks
      select * from PointInTime
      GO
    5. 右键单击执行

    6. 在查询结果中,查看数据库的暂停时间点。

      您可以发现在2025-03-03 13:53:30~2025-03-03 13:53:33时间段内没有插入数据,说明13:53:30暂停数据库的写入操作,13:53:33恢复了数据库的写入操作。

      image

步骤四:验证通过应用一致性快照恢复数据的效果

  1. 通过已创建的快照一致性组回滚云盘。

    具体操作,请参见通过快照一致性组回滚云盘

  2. 重新登录SQL Server数据库并查询数据库表PointInTime的内容。

    1. 远程连接ECS实例。

      具体操作,请参见使用Workbench工具以RDP协议登录Windows实例

    2. 通过Microsoft SQL Server Management Studio 18连接SQL Server数据库。

    3. 单击新建查询

    4. 在查询窗口中,输入以下SQL语句。

      USE AdventureWorks
      select * from PointInTime
      GO
    5. 右键单击执行

    6. 在查询结果中,查看恢复数据后数据库最后一条记录的时间点。

      您可以发现数据库最后一条插入数据的时间点为2025-03-03 13:53:29,早于步骤三中查询的暂停时间点2025-03-03 13:53:30,因此证明关于SQL Server的应用一致性快照备份的结果是正确的。

      image

  • 本页导读 (1)
  • 前提条件
  • 操作思路
  • 操作步骤
  • 步骤一:准备数据库验证环境
  • 步骤二:通过控制台创建应用一致性快照
  • 步骤三:验证应用一致性快照是否创建成功
  • 步骤四:验证通过应用一致性快照恢复数据的效果
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等