1

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

1 回答 1

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可能是为了获得更好的性能。

于 2013-08-10T02:25:49.250 回答