本页介绍了如何向备份模板添加脚本。该文档介绍了脚本在备份作业期间执行的不同阶段。
您可以编写脚本并运行这些脚本,以便在备份作业开始、进行期间或完成后执行操作。这些脚本也称为前置脚本和后置脚本。
脚本位置
在代理安装期间,系统会自动创建一个脚本文件夹,其中运行着需要保护的文件系统或数据库。您需要将脚本放入以下文件夹中,才能执行这些脚本:
- 对于 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 阶段来指示备份流程的开始和结束。
您还可以自定义脚本以执行其他任务,例如停止服务或运行其他命令。
向备份模板添加脚本
按照以下说明将脚本添加到备份模板。
- 点击备份方案,然后从下拉列表中选择模板。
- 选择包含 OnVault 政策的模板。 系统会打开模板页面,其中显示所选的备份模板。
- 在模板页面的政策区域中,点击快照旁边的 + 添加。
- 点击高级政策设置。
滚动到脚本名称,然后复制并粘贴以下脚本:
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
点击保存更改。
-
输出显示了两个不同的数据库。一个是日志备份作业,另一个是增量快照。
$ 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