微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图将MySQL备份到S3时,Ubuntu中的Ruby cron作业会静默失败

如何解决试图将MySQL备份到S3时,Ubuntu中的Ruby cron作业会静默失败

|| 我有两个ruby脚本cron作业,我试图在AWS EC2实例上的Ubuntu 10.04.2 LTS下运行。它们都无声地失败-我看到它们在/ var / log / syslog中运行,但是没有结果文件,并且将输出传递到文件中不会产生任何结果。 脚本基于此处的ruby sql备份: http://pauldowman.com/2009/02/08/MysqL-s3-backup/ (这是数据库的完整备份和增量bin-log输出。不确定这很重要。) 如果脚本由root或其他用户从命令行运行,则脚本可以正常工作-它可以运行,并且我看到文件显示在S3存储库中 我已经用一个简单的“ touch〜/ foo \”类型输入项测试了cron,效果很好。 我的cron根目录如下:
*/5 * * * * /home/ubuntu/MysqL_s3_backup/incremental_backup.rb
感谢任何帮助或调试建议。我的想法是,当cron运行作业时,某些ruby库依赖项可能不可用。但是我不明白为什么我似乎根本无法获得任何输出。非常沮丧。谢谢。     

解决方法

        您链接到的
full_backup.rb
脚本包含以下内容:
cmd = \"mysqldump --quick --single-transaction ...
#...
run(cmd)
请注意,ѭ3上没有完整路径。 Cron作业通常在其环境中只有非常有限的
PATH
运行,我猜想
mysqldump
不在那个有限的
PATH
中。您可以尝试在crontab中设置自己的
PATH
PATH=\'/bin:/usr/bin:/whatever/else/you/need\'

*/5 * * * * /home/ubuntu/mysql_s3_backup/incremental_backup.rb
或者在您的Ruby脚本中:
ENV[\'PATH\'] = \'/bin:/usr/bin:/whatever/else/you/need\'
或在备份脚本中指定“ 3”(以及任何其他外部可执行文件)的完整路径。 我会选择后两个选项之一(例如,在脚本中指定
ENV[\'PATH\']
或使用可执行文件的完整路径),因为这将减少您对外部因素的依赖,并且这还将有助于避免人们使用自己的命令版本时遇到问题您需要在他们的
PATH
中。
run
调用中的一些错误检查和处理也可能有用。 如果由于权限或路径问题而无法访问任何必需的Ruby库,那么您可能会从脚本中收到投诉。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。