MySqldump成功或失败测试

时间:2012-01-05 14:45:56

标签: php mysql mysqldump

我正在使用mysqldump来备份我的mysql数据库,并把它放在一个cron作业下。我想测试它的成功或失败,并希望它在cron作业电子邮件中回应成功或失败消息但是失败了吗?请帮帮我...

要通过什么命令?我这样做但失败了:

在我的php备份脚本中,我包括:

   $testvar = '
            if [ "$?" -eq 0 ]
then
        echo "Success"
        else
        echo "Mysqldump encountered a problem look in database.err for information"
        fi
            ';

    exec($testvar);

我的服务器说:意外的文件结束

SCRIPT:

 $creatBackup = 'mysqldump -uabc -p password  mydb > myfile '.       
        'if [ "$?" -eq 0 ]; then
        eho "Success"    

 else  echo "Mysqldump encountered a problem"
fi
    ';



$BackupMessage = exec($creatBackup);

echo $BackupMessage;

4 个答案:

答案 0 :(得分:3)

您正尝试使用exec运行bash脚本内容。那不对; exec用于运行命令或脚本文件,而不是shell脚本。

我认为有两种方法可以解决这个问题:

1)将脚本内容保存到bash文件并使用exec运行:

/var/www/scripts/script.sh:

#!/bin/bash
mysqldump -uabc -p password  mydb > myfile
if [ "$?" -eq 0 ]; then
    echo "Success"    
else
    echo "Mysqldump encountered a problem"
fi

PHP:

$creatBackup = '/var/www/scripts/script.sh';
$BackupMessage = exec($creatBackup);
echo $BackupMessage;

2)另一种方法是不仅捕获脚本输出,还捕获标准错误(检查第三个exec parameter):

$creatBackup = 'mysqldump -uabc -p password  mydb > myfile';
exec($creatBackup, $output, $returnVar);
var_dump($output, $returnVar);

答案 1 :(得分:1)

在类似的帖子中回答,但问题相同。通过PHP抓取mysqldumps的错误消息:mysqldump via PHP

答案 2 :(得分:0)

如果您在php备份脚本中包含引用的代码,则表示您错误地调用了'exec'函数,该函数需要引用外部程序。 '$ testvar'变量的内容似乎是shell脚本(sh或bash),而不是外部脚本名称(和文件路径)。

以下shell脚本将运行mysqldump命令,可以通过cron执行,以向您提供数据库转储成功或失败的电子邮件通知。您需要调整PHP脚本以实际创建mysqldump的备份文件。

#!/bin/sh
if /usr/local/mysql/bin/mysqldump -u root -pyourpassword yourdatabasename 
then
    echo 'Success'
else
    echo 'Mysqldump encountered a problem look in database.err for information'
fi

希望这有帮助!

答案 3 :(得分:0)

我认为mysqldump的退出代码会对你有帮助。成功时会返回0,失败时会返回任何其他值。

php function passthru在第二个参数中返回此值。