在设备管理控制台中向备份模板添加脚本

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

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

脚本位置

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

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

脚本阶段

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

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

示例:脚本

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

    ```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