実行している仮想マシンからPHPを使用してMySQLバイナリログファイルの内容を回復しようとしています。仮想マシンとLAMPでCentOSを実行しています。
仮想ネットワーク上で4台の仮想マシンを実行していますが、それらはすべて同じサブネット上にあり、MySQLデータベースが稼働しており、レプリケーションが機能しています。
PHPを使用してマスターのbinログの内容を回復しようとしています。通常、ファイルの内容は次のコマンドを使用して回復できます。
shell> mysqlbinlog [options] log_file
ローカルマシンでシェルコマンドを実行するPHPスクリプトを作成しました。
$cmd="mysqlbinlog /var/lib/mysql/provider-bin.000003";
echo "<pre>".shell_exec($cmd);
私はprovider-bin.000003が存在し、shell_exec関数が機能し、無効になっていないことを確認しました。
コンソールでコマンドを実行すると、binファイルの内容が取得されますが、PHPスクリプトは期待どおりの結果を出力しません。
代わりに次を出力しています。
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
更新:exec
また、exec関数を使用してみましたが、同じように出力されます。
$cmd="mysqlbinlog /var/lib/mysql/provider-bin.000003";
print_r(exec($cmd,$ret_value)) . "<br />DONE";
echo "<pre>".shell_exec($cmd." 2>&1");
とても有難い