首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试将MySQL备份到S3时,Ubuntu中的Ruby cron作业会静默失败

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

Stack Overflow用户
提问于 2011-05-31 09:25:09
回答 1查看 851关注 0票数 1

我有两个ruby script cron作业,我正尝试在AWS EC2实例上的Ubuntu10.04.2LTS下运行它们。它们都在静默地失败--我看到它们在/var/log/syslog中运行,但是没有结果文件,并且将输出通过管道传输到一个文件中不会产生任何结果。

这些脚本基于下面的ruby sql备份:http://pauldowman.com/2009/02/08/mysql-s3-backup/

(它是数据库的完整备份和增量bin-log输出。我不确定这是否重要。)

如果由超级用户或其他用户从命令行运行该脚本,则该脚本工作得很好-它会运行,并且我看到文件出现在S3存储库中

我用一个简单的"touch ~/foo“类型的条目测试了cron,它工作得很好。

我在root下的cron条目如下:

代码语言:javascript
复制
*/5 * * * * /home/ubuntu/mysql_s3_backup/incremental_backup.rb

感谢任何帮助或调试建议。我的想法是,当cron运行作业时,一些ruby库依赖项可能不可用。但我不明白为什么我似乎不能得到任何输出返回给我。非常令人沮丧。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-31 10:04:50

您链接到的full_backup.rb脚本包含以下内容:

代码语言:javascript
复制
cmd = "mysqldump --quick --single-transaction ...
#...
run(cmd)

请注意,mysqldump上没有完整路径。mysqldump作业通常在其环境中使用非常有限的PATH运行,我猜Cron不在那个有限的PATH中。您可以尝试在您的crontab中设置自己的PATH

代码语言:javascript
复制
PATH='/bin:/usr/bin:/whatever/else/you/need'

*/5 * * * * /home/ubuntu/mysql_s3_backup/incremental_backup.rb

或者在你的Ruby脚本中:

代码语言:javascript
复制
ENV['PATH'] = '/bin:/usr/bin:/whatever/else/you/need'

或者在备份脚本中指定mysqldump (和任何其他外部可执行文件)的完整路径。

我会选择后两个选项中的一个(即在脚本中指定ENV['PATH']或使用可执行文件的完整路径),因为这将减少您对外部因素的依赖,这也将有助于避免在PATH中有自己的命令版本时出现问题。

run调用进行一些错误检查和处理也可能有用。

如果有任何必要的Ruby库无法访问(由于权限或路径问题),那么您可能会收到脚本的抱怨。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6182097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档