使用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
广告