我们通过 CRON 作业运行 RMAN 备份,但使用 CRON 找到开箱即用的电子邮件几乎可以满足我们的需求。我知道我们可以将 RMAN 输出引导到 /dev/null,因此不会发送任何电子邮件,这对于任何成功运行 RMAN 来说都是期望的结果,但是如果 RMAN 作业遇到错误,我想要整个标准输出通过电子邮件发送给 DBA 团队进行审核。我怀疑我可以用 bash shell 脚本包装我的 RMAN 脚本,该脚本仅在发生故障时将标准输出通过管道传输到 cron,但是有更好的方法吗?
总结一下:
- 如果发生错误,我可以通过管道将标准输出发送到电子邮件(如果不存在错误则忽略标准输出),以便我们可以在 cron 中使用默认邮件功能?
- 如果不是,我是否应该用逻辑包装我的 RMAN 备份脚本,以便在遇到错误时只返回 shell 脚本的输出?
- 是否有另一种我看不到或无法在网上找到的方法来实现这一目标?
如果这已经被问到,我很抱歉。我发现了许多一次性的问题和场景,但我觉得没有一个与我想要的结果完全匹配。
谢谢!
我编写了一个 bash 脚本来执行备份(RMAN、datapump 以及以类似方式用于 MySQL 的 xtrabackup 和转储),然后从 cron 中调用它。这样您就可以根据需要处理电子邮件。
所以一个简单的 crontab 行是这样的
然后一切都在脚本中完成。
所以定义一些常见的变量,包括 RMAN,例如
然后从本地文件中导入您想要的电子邮件列表(每行一个)
然后定义几个方便的过程,您可以稍后使用它们进行错误处理和电子邮件
现在主进程被打包以将其全部输出到日志文件。这是一个简单的示例,但显示了基本方法。
调整 abort_with_error 和 send_email 过程以适合您的环境和需要。
这将调度程序与流程分开,因此如果您更新备份流程或获得需要电子邮件的新团队成员,则无需更改 cron。
这样,您会收到一封电子邮件,如果它有效,如果它没有,但主题中带有错误,因此一个简单的电子邮件规则可以隐藏不感兴趣的成功备份并突出显示失败,并且每天早上简单的计数显示是否有问题电子邮件,需要看看。由于日志保存在服务器上,您可以在那里找到它(在工作中添加一些内容以在几周后清理旧日志)。
显然,有很多方法可以实现这样的东西,你需要改变它以适应它(为了清楚起见,我已经从脚本中删掉了*很多*的东西)。