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

前提条件

  • ECS实例的操作系统在以下范围中:
    • Windows:Windows Server 2019、Windows Server 2016和Windows Server 2012 R2。
    • Linux:CentOS 7.6及以上版本、Ubuntu 18.04及以上版本和Alibaba Cloud Linux 2(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实例的操作系统,开启应用一致性快照功能。

步骤一:为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角色

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

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

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

步骤二:为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. 创建实例快照对话框中,设置应用一致性快照。
    linux应用一致性
    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,并正确设置脚本,则创建应用一致性快照。
    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,但未设置脚本或未正确设置脚本,则创建文件系统一致性快照。
    说明 选中启用应用一致性快照后,ECS实例将自动安装云助手插件。
  6. 单击确定
    创建完成后,您可以选择存储与快照 > 快照,并单击实例快照页签,查看已创建的实例快照。
    同时,您可以单击云盘快照页签,根据快照的标签信息,检查创建的快照是应用一致性快照(APPConsistent:True标签)还是文件系统一致性快照(FsConsistent: True标签)。
    • 应用一致性快照应用一致性
    • 文件系统一致性快照文件系统一致性