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('无法连接: ' . 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('无法进行数据备份: ' . mysql_error());
   }
   
   echo "成功备份数据\n";
   
   mysql_close($conn);
?>

要恢复备份,您只需运行像这样的 LOAD DATA INFILE 查询 -


<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('无法连接: ' . 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('无法恢复数据: ' . mysql_error());
   }
   echo "已成功恢复数据\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 选项并输入备份文件的名称。