将脚本添加到备份模板

本页介绍了如何向备份模板添加脚本。该文档介绍了脚本在备份作业期间执行的不同阶段。

您可以编写脚本并运行这些脚本,以便在备份作业开始、进行期间或完成后执行操作。这些脚本也称为前置脚本和后置脚本。

脚本位置

在代理安装期间,系统会自动创建一个脚本文件夹,其中运行着需要保护的文件系统或数据库。您需要将脚本放入以下文件夹中,才能执行这些脚本:

  • 对于 Windows 主机:\Program Files\Google Cloud Backup and DR\scripts
  • 对于 Linux 主机:/act/scripts,并将脚本设为可执行(chmod 755 *.sh)

脚本阶段

脚本会按以下阶段执行。如果脚本未执行,请检查它是否位于脚本文件夹中。

  • INIT:此阶段从备份/恢复设备连接到代理时开始。在此阶段,系统会初始化作业并验证凭据。
  • PRE:此阶段在作业的重大操作之前开始。对于快照,此阶段会在应用冻结之前开始。对于挂载类型的作业,此阶段是在设备映射到主机之后,但在基于代理的操作(例如重新扫描、导入和挂载文件系统)开始之前。
  • POST:此阶段会在作业的重大操作完成后立即开始。对于备份类型的作业,此时间是在应用解冻之后。对于挂载类型的作业,此阶段会在所有导入、挂载或将应用上线操作完成后开始。
  • FINAL:此阶段表示作业已结束。除非脚本返回导致作业失败的非零代码,否则作业会完成。
  • ABORT:此阶段会在作业失败时处理已终止的作业。

示例:脚本

以下示例展示了如何在备份作业流程的各个阶段运行主机端脚本。该脚本包含 5 个脚本,用于输出日期或时间、应用名称(文件系统名称或数据库名称)、作业类型、作业名称、日志保留天数值,以及用于指示正在处理的备份作业的相应阶段的文字。

    ```sh
    $ cat /act/scripts/init.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/pre.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/post.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:POST" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:POST" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/fini.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/abort.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
        fi
        ```

在前面的示例中,ACT_JOBTYPE = logbackup 表示正在运行的作业是日志备份任务,而不是完整数据库备份任务。

您可能不需要运行所有五个阶段即可实现所选的日志输出。您只能使用 init 和 final 阶段来指示备份流程的开始和结束。

您还可以自定义脚本以执行其他任务,例如停止服务或运行其他命令。

向备份模板添加脚本

按照以下说明将脚本添加到备份模板。

  1. 点击备份方案,然后从下拉列表中选择模板
  2. 选择包含 OnVault 政策的模板。 系统会打开模板页面,其中显示所选的备份模板。
  3. 模板页面的政策区域中,点击快照旁边的 + 添加
  4. 点击高级政策设置
  5. 滚动到脚本名称,然后复制并粘贴以下脚本:

    path=init.sh:phase=init;path=pre.sh:phase=pre;path=post.sh:phase=post;path=fini.sh:phase=final:timeout=300;path=abort.sh:phase=abort
    
  6. 点击保存更改

  7. 运行按需作业

    输出显示了两个不同的数据库。一个是日志备份作业,另一个是增量快照。

    $ cat /tmp/backup_status.log Wed Nov 22 06:11:49 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:INIT Wed Nov 22 06:13:52 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:PRE Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:POST Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:FINAL Wed Nov 22 06:18:00 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:INIT Wed Nov 22 06:20:15 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:PRE Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:POST Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:FINAL

将环境变量传递到日志文件中

您可以使用下表中带有 ACT_ 前缀的环境变量,将作业中的环境信息导出到脚本。并非所有环境变量都适用于每种作业类型。

  • ACT_APPID:应用的数据库 ID。
  • ACT_APPNAME:应用的名称。
  • ACT_HOSTNAME:此作业的目标主机的名称。
  • ACT_JOBNAME:作业的名称。
  • ACT_JOBTYPE:作业类的文本版本。
  • ACT_LOGSMART_TYPE:唯一的有效值为“db”。必须存在此参数,才能捕获数据库日志。
  • ACT_OPTIONS:适用于此作业的政策选项
  • ACT_PHASE:用于描述作业阶段的文本字符串。
  • ACT_POLICY:与此作业相关的政策的名称。
  • ACT_POLICYOPT_logbackupretention:日志备份作业的保留天数。此字段仅显示在数据库日志备份作业中。
  • ACT_PROFILE:配置文件的名称。
  • ACT_SCRIPT_TMOUT:超级脚本超时。如果未在超时值(默认 60 秒)内收到响应,则脚本将失败。
  • ACT_SOURCEHOST:此应用的来源主机的名称。
  • ACT_TEMPLATE:与作业相关的模板的名称。
  • ACT_TIMEOUT:脚本的定义时长(以秒为单位)。如果脚本未在超时期限内完成,作业将会失败。
  • ACT_VOLUMES:对于通用应用,是配置为进行备份的卷列表。如果您需要帮助了解可以使用的可能环境变量,请将以下代码行添加到脚本中。

    echo printenv >> /tmp/backup_status.log