0

Web サーバーにデータベースのバックアップ cron が必要でした。次のコードを使用して SQL ファイルを出力します。

<?php
include('connectdb.php');

$backupFile = 'database_backup_'.date("YmdHis").'.sql';
$command = 'mysqldump $dbname --password=$dbpass --user=$dbuser --single-transaction >'.$backupFile;
system($command);

include('closedb.php');
?>

しかし、特定のSQLファイルを開くと、次のようなテキストのみが表示されます:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

コードの何が問題になっていますか?

ありがとう。

4

4 に答える 4

2

この行は二重引用符で囲む必要があります。

$command = 'mysqldump $dbname --password=$dbpass --user=$dbuser --single-transaction >'.$backupFile;

このような:

$command = "mysqldump $dbname --password=$dbpass --user=$dbuser --single-transaction >".$backupFile;

そうでない場合、$dbnam、$dbpass などを設定する変数置換は行われません。

于 2013-06-17T09:02:08.997 に答える
1

mysqldump正しいパラメータを指定して、コマンド ラインからコマンドを試してください。それは機能しますか?報告された場合、どのようなエラーが報告されますか (--verboseスイッチを使用)? それらを修正して、再試行してください。

コマンドをデバッグしたら、直接送信してください。PHPcronスクリプトを介して実行する必要はありません。

于 2013-06-18T02:50:36.607 に答える
1

サイトがライブでデータベースを使用している場合、定期的にデータベースのバックアップを取ることが非常に重要です。ただし、毎回手動でバックアップを取ることはできません。それでは、このジョブを実行する単純な PHP 関数を作成してみましょう。Cron ジョブを使用して、定期的にその関数を呼び出すことができます。

<?php
include("connection.php");
function backup_db(){
  /* Store All Table name in an Array */

$allTables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)){
 $allTables[] = $row[0];
}
foreach($allTables as $table){
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)){
   $return.= 'INSERT INTO '.$table.' VALUES(';
 for($j=0; $j<$num_fields; $j++){
   $row[$j] = addslashes($row[$j]);
   $row[$j] = str_replace("\n","\\n",$row[$j]);
   if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } 
   else { $return.= '""'; }
   if ($j<($num_fields-1)) { $return.= ','; }
 }
   $return.= ");\n";
}
}
$return.="\n\n";
}
// Create Backup Folder
$folder = 'DB_Backup/';
if (!is_dir($folder))
mkdir($folder, 0777, true);
chmod($folder, 0777);
$date = date('m-d-Y-H-i-s', time()); 
$filename = $folder."db-backup-".$date; 
$handle = fopen($filename.'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
// Call the function
backup_db();
?>

接続には、このファイルを使用できます。

connection.phpファイル

<?php
  $host="localhost";
  $uname="YourUserName";
  $pass="YourPassword";
  $database = "YourDatabaseName";
  $connection=mysql_connect($host,$uname,$pass);
or die("Database Connection Failed");
$selectdb=mysql_select_db($database) or die("Database could not be selected"); 
$result=mysql_select_db($database)
or die("database cannot be selected <br>");
?>

上記のコードを PHP ファイルに保存し、そのファイルを Web サーバーにアップロードしてから、ファイルを実行します。DB_Backup というフォルダーが作成され、DB_Backup フォルダー内にバックアップ .sql ファイルが作成されるかどうかを確認します。ファイルが正常に機能する場合は、そのファイルを Cron ジョブに割り当てることができます。

于 2016-02-18T09:34:34.133 に答える