阿里云快照服务结合云助手,提供应用一致性快照功能。当您使用应用一致性快照进行回滚时,可避免数据库等应用启动时进行日志回滚,确保应用处于一致性的启动状态。

前提条件

  • ECS实例的操作系统在以下范围中:
    • Windows:Windows Server 2019、Windows Server 2016和Windows Server 2012 R2。
    • Linux:CentOS 7.6及以上版本、Ubuntu 18.04及以上版本和Alibaba Cloud Linux 2.1903 LTS 64位。
  • ECS实例中云盘必须是ESSD类型云盘,且文件系统为EXT3、EXT4、XFS或NTFS。同时,不支持网络文件系统和共享文件系统。
  • ECS实例已安装云助手客户端。具体操作,请参见安装云助手客户端
    说明 2017年12月01日之后使用公共镜像创建的ECS实例,已默认预装云助手客户端。

背景信息

默认情况下,您创建的快照为崩溃一致性快照。如果您在创建快照时开启应用一致性快照功能,系统将根据实际情况为您创建应用一致性快照或者文件系统一致性快照。
类型 说明 实现方式
应用一致性快照 应用一致性快照在快照创建时刻备份内存数据及正在进行中的数据库事务,保证应用系统数据和数据库事务的一致性。通过应用一致性快照,没有数据的损坏及丢失,避免数据库启动时日志回滚,确保应用处于一致性的启动状态。

应用一致性快照以标签APPConsistent:True标识。

根据操作系统类型,实现方式如下:
  • Windows:通过卷影复制服务VSS(Volume Shadow Copy Service)实现。
  • Linux:通过执行自定义Shell脚本(需要您根据应用自行编写脚本)实现。应用一致性的效果,由您自己编写的脚本负责保证。
文件系统一致性快照 如果开启应用一致性功能,但不满足相关条件,系统将会为您创建文件系统一致性快照。

文件系统一致性确保在快照创建时刻同步文件系统内存和磁盘信息,冻结文件系统写操作,使得文件系统处于一致性的状态。通过文件系统一致性快照,可以避免操作系统在重启后进行chkdsk或fsck等磁盘检查修复操作。

文件系统一致性快照以标签FsConsistent:True标识。

根据操作系统类型,实现方式如下:
  • Windows:如果无Windows操作系统上特定应用的VSS Writer参与时,默认创建的为文件系统一致性。
  • Linux:如果无对应的应用脚本,默认创建的为文件系统一致性。

操作流程

  1. 步骤一:为ECS实例配置RAM角色

    开启应用一致性快照前,必须先为ECS实例配置相关的RAM角色。

  2. 步骤二:根据ECS实例的操作系统,开启应用一致性快照功能。
  3. 步骤三:检查快照创建结果

    创建完成后,您可以在云助手页面查看是否创建成功;在快照页面查看快照具体信息。

步骤一:为ECS实例配置RAM角色

  1. 使用阿里云账号登录RAM控制台
  2. 创建应用一致性快照相关的RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色
    示例为创建一个AppSnapshotRoleName的RAM角色。应用一致性ram角色
  3. 创建应用一致性快照相关权限策略。具体操作,请参见创建自定义策略
    快照权限
    创建一个AppSnapshotPolicy权限策略,具有查询快照相关信息、创建快照、设置标签和查询云盘信息等相关权限。您可以直接使用以下策略内容。
    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:DescribeSnapshot*",
                    "ecs:CreateSnapshot*",
                    "ecs:TagResources",
                    "ecs:DescribeDisks"
                ],
                "Resource": [
                    "*"
                ],
                "Condition": {}
            }
        ]
    }
  4. 为RAM角色(AppSnapshotRoleName)设置自定义权限(AppSnapshotPolicy)。具体操作,请参见为RAM角色授权
    授权
  5. 为目标实例设置RAM角色(AppSnapshotRoleName)。具体操作,请参见授予实例RAM角色
    设置ecs的ram角色

步骤二:为Windows实例开启应用一致性快照

在Windows实例中,主要是通过Windows操作系统的卷影复制服务实现应用一致性。本节介绍如何为Windows实例开启应用一致性快照。

  1. 进入ECS实例列表页面。
    1. 登录ECS管理控制台
    2. 在左侧导航栏,选择实例与镜像 > 实例
    3. 在顶部菜单栏处,选择目标ECS实例所在地域。
  2. 找到目标实例,在操作列中选择更多 > 云盘和镜像 > 创建实例快照
  3. 创建实例快照对话框中,设置实例快照参数并启用快照极速可用功能。
  4. 创建实例快照对话框中,设置应用一致性快照。
    • 如果同时选中启用应用一致性快照是否默认包含Writer,创建应用一致性快照。
    • 如果只选中启用应用一致性快照,创建文件系统一致性快照。
    说明 选中启用应用一致性快照后,ECS实例将自动安装云助手插件。
  5. 单击确定
    创建后会返回云助手命令ID和命令执行ID,您可以根据命令执行ID查看创建结果。命令执行id

步骤二:为Linux实例开启应用一致性快照

在Linux实例中,需要您根据ECS实例上的应用程序定制Shell脚本(应用冻结脚本和应用解冻脚本)实现应用一致性。本节介绍如何为Linux实例开启应用一致性快照。

  1. 根据ECS实例上的应用,准备对应的应用冻结脚本和应用解冻脚本,并上传到ECS实例。
    您可以通过FTP或云助手将应用冻结脚本和应用解冻脚本上传到ECS实例。
    • 应用冻结脚本:权限设置为仅root用户具有读、写和执行权限,保存路径为/tmp/prescript.sh
    • 应用解冻脚本:权限设置为仅root用户具有读、写和执行权限,保存路径为/tmp/postscript.sh
    注意 如果脚本设置错误(例如权限、保存路径或文件名设置错误等),最终创建的快照为文件系统一致性快照。
  2. 进入ECS实例列表页面。
    1. 登录ECS管理控制台
    2. 在左侧导航栏,选择实例与镜像 > 实例
    3. 在顶部菜单栏处,选择目标ECS实例所在地域。
  3. 找到目标实例,在操作列中选择更多 > 云盘和镜像 > 创建实例快照
  4. 创建实例快照对话框中,设置实例快照参数并启用快照极速可用功能。
  5. 创建实例快照对话框中,设置应用一致性快照。
    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,并正确设置脚本,则创建应用一致性快照。
    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,但未设置脚本或未正确设置脚本,则创建文件系统一致性快照。
    说明 选中启用应用一致性快照后,ECS实例将自动安装云助手插件。
  6. 单击确定
    创建后会返回云助手命令ID和命令执行ID,您可以根据命令执行ID查看创建结果。命令执行id

步骤三:检查快照创建结果

创建应用一致性快照后,您可以在云助手页面查看是否创建成功,并在快照页面查看实例快照和云盘快照信息。

  1. 云助手页面,查看应用一致性快照是否成功创建。
    1. 选择运维与监控 > 发送命令/文件(云助手)
    2. 单击命令执行结果页签。
    3. 单击目标命令执行ID,查看执行结果。
      命令执行结果

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

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

  2. 快照页面查看实例快照和云盘快照信息。
    1. 选择存储与快照 > 快照
    2. 单击实例快照页签,查看已创建的实例快照。
    3. 单击云盘快照页签,根据快照的标签信息,检查创建的快照是应用一致性快照还是文件系统一致性快照。
      • 应用一致性快照(显示APPConsistent:True标签)应用一致性
      • 文件系统一致性快照(显示FsConsistent: True标签)文件系统一致性

错误码信息

应用一致性快照创建后,会返回错误码(ExitCode)。如果创建失败,您可以根据错误码信息排查问题。
错误码(ExitCode) 说明
0 表示创建成功。
1 条件检查错误。可能错误如下:
  • 云盘类型不支持。
  • 快照名称不符合要求。
  • 网络不通。
  • ECS实例没有RAM角色授权。
  • 操作系统版本不支持。
2 --params后设置的参数类型或个数错误。
3 可能错误如下:
  • ECS实例没有挂载ESSD云盘。
  • ECS实例的RAM角色未设置快照接口的访问权限。
4 创建实例快照失败。
5 实例快照状态错误。
6 创建实例快照超时。
7 实例快照内单个云盘快照的状态不符合预期。
8 为快照设置标签失败。
9 执行应用冻结脚本失败。
10 执行应用解冻脚本失败。
11 冻结IO失败。
12 解冻IO失败。
13 ECS实例没有RAM角色授权。
14 快照个数超过限制。
15 快照状态错误。
16 在没有启动快照及时可用功能的情况下,前一个快照正在创建中。
255 未知失败。

相关文档

如果您需要使用SDK创建应用一致性快照,请参见通过Go SDK创建应用一致性快照