我正在运行innobackupex
脚本,但我不知道如何从脚本中获取输出?我需要最后一行来检查脚本是成功还是失败..
$output = shell_exec('innobackupex --user=root --password=xxx --databases="test" --stream=tar ./ | gzip -c -1 > /var/bak/2013-08-09-1431_mysql.tar.gz')
脚本正常工作,并创建了备份zip,但$output
为空
现在命令没有通过gzip传递,但仍然没有输出
$syntax = 'innobackupex --user='.$mysql_user.' --password='.$mysql_pass.' --databases="'.$mysql_db.'" /var/bak';
$output = shell_exec($syntax);
答案 0 :(得分:2)
我不是故意在评论中踩到@ RudyVisser的答案,但这是另一种解决方案:
$syntax = 'innobackupex --user="'.$mysql_user.'" --password="'.$mysql_pass.'"
--databases="'.$mysql_db.'" --stream=tar ./ | gzip -c -1
> /var/bak/2013-08-09-1431_mysql.tar.gz ; echo $?')
$exit_status = shell_exec($syntax);
命令中的echo应该报告innobackupex的退出状态,如果备份成功则为0,如果有错误则为非零。
http://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/xtrabackup_exit_codes.html
PS:Percona XtraBackup还有一个--compress
选项,它使用 qpress 算法,已知速度非常快。我之所以提到这一点,是因为我注意到你正在使用gzip -1
来提高性能。