使用PHP執行MySQL備份



定期備份資料庫始終是一個好習慣。您可以使用三種方法來備份MySQL資料庫。

  • 透過PHP使用SQL命令。
  • 透過PHP使用MySQL二進位制mysqldump。
  • 使用phpMyAdmin使用者介面。

透過PHP使用SQL命令

您可以執行SQL SELECT命令來備份任何表。要進行完整的資料庫轉儲,您需要為每個表編寫單獨的查詢。每個表將儲存在單獨的文字檔案中。

示例

嘗試以下使用SELECT INTO OUTFILE查詢建立表備份的示例:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
	
   $table_name = "employee";
   $backup_file  = "/tmp/employee.sql";
   $sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name";
   
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not take data backup: ' . mysql_error());
   }
   
   echo "Backedup  data successfully\n";
   
   mysql_close($conn);
?>

在某些情況下,您可能需要恢復您之前備份的資料。要恢復備份,您只需執行LOAD DATA INFILE查詢,如下所示:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
	
   $table_name = "employee";
   $backup_file  = "/tmp/employee.sql";
   $sql = "LOAD DATA INFILE '$backup_file' INTO TABLE $table_name";
   
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not load data : ' . mysql_error());
   }
   echo "Loaded  data successfully\n";
   
   mysql_close($conn);
?>

透過PHP使用MySQL二進位制mysqldump

MySQL提供了一個實用程式mysqldump來執行資料庫備份。使用此二進位制檔案,您可以使用單個命令進行完整的資料庫轉儲。

示例

嘗試以下示例以進行完整的資料庫轉儲:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $backup_file = $dbname . date("Y-m-d-H-i-s") . '.gz';
   $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "test_db | gzip > $backup_file";
   
   system($command);
?>

使用phpMyAdmin使用者介面

如果您有phpMyAdmin使用者介面,那麼備份資料庫非常容易。

要使用phpMyAdmin備份MySQL資料庫,請單擊phpMyAdmin主頁上的“匯出”連結。選擇要備份的資料庫,選中相應的SQL選項並輸入備份檔案的名稱。

php_and_mysql.htm
廣告