Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1910779
  • 博文数量: 45
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2019-08-05 16:22
文章分类

全部博文(45)

文章存档

2020年(4)

2019年(41)

我的朋友

分类: PHP

2019-11-14 09:57:31

PHP MySQL备份和恢复

定期备份数据库始终是一种好习惯。有三种方法可以用来备份MySQL数据库。
  • 通过PHP使用SQL命令。
  • 通过PHP使用MySQL备份工具mysqldump。
  • 使用phpMyAdmin,Navicat等用户界面工具。

通过PHP使用SQL命令

您可以执行SQL SELECT命令来备份任何表。要获取完整的数据库转存储,您需要为单独的表编写单独的查询。每个表都将存储在单独的文本文件中。
尝试以下使用SELECT INTO OUTFILE查询创建表备份的示例

  1. <?php
  2. $dbhost = 'localhost';
  3. $dbuser = 'root';
  4. $dbpass = '123456';
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
  6. if(! $conn ) {
  7.         die('不能连接: ' . mysqli_error($conn));
  8. }
  9. $table_name = "test";
  10. $backup_file = "./test.sql"; // 保存到当前目录的test.sql文件
  11. $sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name";
  12. mysqli_select_db($conn,'test');
  13. $retval = mysqli_query( $conn, $sql );
  14. if(! $retval ) {
  15.         die('不能备份: ' . mysqli_error($conn));
  16. }
  17. echo "备份数据成功
    "
    ;
  18. mysqli_close($conn);
  19. ?>
提示:这里可能会报错The MySQL server is running with the --secure-file-priv option so it cannot,这需要修改配置文件里面的对应选项--secure-file-priv为空字符串即可。

数据恢复

在某些情况下,您可能需要恢复前一段时间备份的数据。要恢复备份,您只需要像这样运行LOAD DATA INFILE查询

  1. <?php
  2. $dbhost = 'localhost';
  3. $dbuser = 'root';
  4. $dbpass = '123456';
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
  6. if(! $conn ) {
  7.         die('不能连接: ' . mysqli_error($conn));
  8. }
  9. $table_name = "test";
  10. $backup_file = "./test.sql";
  11. $sql = "LOAD DATA INFILE '$backup_file' INTO TABLE $table_name";
  12. mysqli_select_db($conn,'test');
  13. $retval = mysqli_query( $conn, $sql );
  14. if(! $retval ) {
  15.         die('不能恢复数据 : ' . mysqli_error($conn));
  16. }
  17. echo "数据恢复成功
    "
    ;
  18. mysqli_close($conn);
  19. ?>
提示:这里可能会报错The MySQL server is running with the --secure-file-priv option so it cannot,这需要修改配置文件里面的对应选项--secure-file-priv为空字符串即可。

通过PHP使用MySQL mysqldump

MySQL提供了一个实用程序mysqldump来执行数据库备份。使用此二进制文件,您可以在单个命令中完成数据库转储。
尝试以下示例来获取完整的数据库转储

  1. <?php
  2. $dbhost = 'localhost';
  3. $dbuser = 'root';
  4. $dbpass = '123456';
  5. $dbname = 'test';
  6. $backup_file = './'.$dbname . date("Y-m-d-H-i-s") . '.gz';
  7. $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "test | gzip > $backup_file";
  8. system($command);
  9. ?>
提示:system()函数是执行一条系统命令。这里使用的是直接执行命令,如果您未设置好环境变量PATH,这条命令找不到,应该用绝对目录来执行。

使用phpMyAdmin或者Navicat等用户界面

如果您有phpMyAdmin或者Navicat等用户界面,那么您可以很容易地备份数据库。要使用phpMyAdmin备份MySQL数据库,请单击phpMyAdmin主页上的“导出”链接。选择要备份的数据库,检查相应的SQL选项并输入备份文件的名称。

相关资料









阅读(263091) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~