【发布时间】:2013-08-25 12:26:09
【问题描述】:
大家好,
我相信您在阅读此帮助请求时一切正常。我在 Linux 世界中不是很有经验,但我仍然努力尽快学习。因此,请原谅我任何明显的无知,并尽可能提供帮助。
我正在运行 ClearOS v5.2 Enterprise 服务器(基于 Centos linux 发行版)并且我在 shell 脚本中使用以下命令来备份我的 MySQL 数据库。
mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql
我每天凌晨 1:15 使用 cron 作业调用此脚本。现在,我可以在 cron 日志中看到当时执行了作业并调用了脚本,但是命令没有执行(下面的日志条目)。我这样说是因为我没有在 /mnt/shares/flexshares/backup/MySQL 目录中看到正在创建的 sql 文件。
Aug 21 01:15:01 server1 crond[27842]: (root) CMD (/root/my_scripts/backup-mysql.sh)
Aug 22 01:15:01 server1 crond[9031]: (root) CMD (/root/my_scripts/backup-mysql.sh)
奇怪的是,如果我从 CLI 运行相同的命令,它会毫无问题地执行,并且 MySQL 数据库会被转储到目标目录 (/mnt/shares/flexshares/backup/MySQL)。
我遗漏了什么或者我在脚本中包含了什么导致它无法运行?这是我的 shell 脚本 ("backup-mysql.sh"):
#!/bin/bash
# FULL BACKUP OF MySQL DATABASE
mysqldump -u root -pMYPASSWORD --all-databases > /mnt/shares/flexshares/backup/MySQL/mysql-backup-`date +%Y-%m-%d-%H-%M`.sql
非常感谢我能得到的任何帮助,谢谢。
v/r
基斯梅特
【问题讨论】:
-
您在哪里寻找您的转储文件?他们应该保存在 /mnt/shares/flexshares/backup/MySQL/mysql-backup-
date +%Y-%m-%d-%H-%M.sql -
一种可能性(?) 问:“/mnt/shares/flexshares/backup”在本地文件系统上,是在自动挂载的远程文件系统上吗?如果它不是本地的,那么在 cron 运行脚本时可能不可用(?)。如果是我,我会验证这一点并运行一个写入具有写入权限的已知文件系统的测试:
/tmp -
@rakib 我已经编辑了问题以显示正确的目标目录。
-
@spencer7593 /mnt/shares/flexshares/backup 位于我自动安装的另一个硬盘上,因此它始终可用。我已经验证,如果我将目标更改为 /root,它在 cron 作业中不起作用,但如果我在 CLI 上手动运行它,它就会起作用。此外,当以 /mnt/shares/flexshares/backup/MySQL 作为目标手动运行时,它也可以工作。
-
@Kismet Agbasi:另一个建议是完全限定 mysqldump 可执行文件的位置,以防该目录不在路径中:
/opt/mysql/bin/mysqldump -u root ...或您的可执行文件所在的任何位置。 (which mysqldump)。
标签: mysql linux bash shell centos