innobackupex - 从命令行获取输出

时间:2013-08-09 14:35:12

标签: php mysql linux percona

我正在运行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);

1 个答案:

答案 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来提高性能。