阿里云上如何创建应用一致性快照-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

阿里云上如何创建应用一致性快照

简介: 云盘快照作为云盘数据保护的基础,提供了某一时刻的云盘数据的镜像副本。针对所生成的快照数据是否支持应用程序感知,快照数据的一致性主要分为:应用一致性快照和崩溃一致性快照。在快照生成的某一时刻,应用一致性快照确保虚拟机内部正在进行的文件系统的写入IO、系统缓存及数据库事务完成提交。使得应用程序一致性快照相对于崩溃一致性快照而言,在系统恢复时刻具有更快的启动速度及更低的恢复时间RTO。

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

前提条件

  • 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实例的操作系统,开启应用一致性快照功能。
  1. 步骤三:检查快照创建结果创建完成后,您可以在云助手页面查看是否创建成功;在快照页面查看快照具体信息。

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

  1. 使用阿里云账号登录RAM控制台
  2. 创建应用一致性快照相关的RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色。示例为创建一个AppSnapshotRoleName的RAM角色。

image.png

  1. 创建应用一致性快照相关权限策略。具体操作,请参见创建自定义策略

image.png

创建一个AppSnapshotPolicy权限策略,具有查询快照相关信息、创建快照、设置标签和查询云盘信息等相关权限。您可以直接使用以下策略内容。

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

4.为RAM角色(AppSnapshotRoleName)设置自定义权限(AppSnapshotPolicy)。具体操作,请参见为RAM角色授权

image.png

5.为目标实例设置RAM角色(AppSnapshotRoleName)。具体操作,请参见授予实例RAM角色

image.png


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

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

  1. 进入ECS实例列表页面。
    1. 登录ECS管理控制台
    2. 在左侧导航栏,选择实例与镜像 > 实例
    3. 在顶部菜单栏处,选择目标ECS实例所在地域。
  1. 找到目标实例,在操作列中选择更多 > 云盘和镜像 > 创建实例快照
  2. 创建实例快照对话框中,设置实例快照参数并启用快照极速可用功能。
  1. 创建实例快照对话框中,设置应用一致性快照。

image.png

    • 如果同时选中启用应用一致性快照是否默认包含Writer,创建应用一致性快照。
    • 如果只选中启用应用一致性快照,创建文件系统一致性快照。
  1. 说明 选中启用应用一致性快照后,ECS实例将自动安装云助手插件。
  2. 单击确定。创建后会返回云助手命令ID和命令执行ID,您可以根据命令执行ID查看创建结果。

image.png


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

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

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

image.png

    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,并正确设置脚本,则创建应用一致性快照。
    • 如果选中启用应用一致性快照启用文件系统IO冻结及解冻,但未设置脚本或未正确设置脚本,则创建文件系统一致性快照。
  1. 说明 选中启用应用一致性快照后,ECS实例将自动安装云助手插件。
  2. 单击确定。创建后会返回云助手命令ID和命令执行ID,您可以根据命令执行ID查看创建结果。

image.png


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

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

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

image.png
如上图所示,ExitCode返回值为0,表示云助手上创建应用一致性快照执行成功,此时回显信息中显示实例快照ID。
如果ExitCode返回值不为0,请根据ExitCode错误码信息排查相关问题。更多信息,请参见错误码信息

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

image.png

      • 文件系统一致性快照(显示FsConsistent: True标签)

image.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章