• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

mysql 备份与恢复的2个方法

数据库技术 开心 1389次浏览 0个评论

MySQL 备份与恢复的方法一:

<?php

/*

 * 功能:数据备份/恢复文件简易方法

 *   以日期为单位,一天一个备份文件,以当天最后备份为准

 *   用提交表单的形式进行操作,

 *  其中$_POST[“tbl_name”]为预备份表名称数组

 *      $_POST[“sqlfile”]为预恢复数据文件的名称

 *  注意:该备份没有结构备份,只有数据备份

 *

 *  备份文件格式:

 *  `表名称1`{{数据1}}`表名称2`{{数据2}}`表名称3`{{数据3}}…

 *

 * 创建时间:2005-02-25

 * E-mail: kingerq AT msn.com

 * 来源:
http://blog.csdn.net/kingerq

 */

include(“../inc/globals.inc.php”);//省略包函文件db_mysql.inc和MYSQL连接信息

set_time_limit(0);

$dbdir = “d:/site/dbbak/”;//用绝对路径

$txtname = array();

if($_POST){

 if(!is_writable($dbdir)) {

  echo “对不起!指定的备份目录不可写!请修改权限”;

  exit;

 }

//op为一个隐形域,识别备份或者恢复

 if($_POST[“op”]){//备份数据

  //生成每个表的临时备份文件

  foreach($_POST[“tbl_name”] as $tbl){

   $txtname[] = $tbl.”.txt”;

   $sql = “SELECT * FROM `$tbl` INTO OUTFILE ‘”.$dbdir.end($txtname).”‘”;

   $db->query($sql);

  }

//将生成的临时备份文件合在一起

  $outfile = date(“Y-m-d”).”.sql”;

if(file_exists($dbdir.$outfile)) @unlink($dbdir.$outfile);

$fpr = fopen($dbdir.$outfile, “a”);

  foreach($txtname as $txt){

   if(file_exists($dbdir.$txt)){

    //读取临时备份文件

    $tdata = readfiles($dbdir.$txt);

//生成备份文件

    $tbl = explode(“.”, $txt);

    $str = “`”.$tbl[0].”`{{“.$tdata.”}}”;

    if(fwrite($fpr, $str)){

     echo $tbl[0].”…写入 $outfile 成功!<br>n”;

    }else{

     echo $tbl[0].”…写入 $outfile 失败!<br>n”;

    }

@unlink($dbdir.$txt);

   }

  }

  fclose($fpr);

 }else{//恢复数据

  $tdata = readfiles($dbdir.$_POST[“sqlfile”]);

preg_match_all(“/`(.*)`{{(.*)}}/isU”, $tdata, $data_ar);

  foreach($data_ar[1] as $k => $tt){

   if(empty($data_ar[2][$k])) continue;

   $tfile = $dbdir.$tt.”.txt”;

   $fp = fopen($tfile, “w”);

   if(fwrite($fp, $data_ar[2][$k])){

    //清空表

    $sql = “TRUNCATE TABLE `$tt`”;

    $db->query($sql);

    //重新装入数据

    $sql = “LOAD DATA LOW_PRIORITY INFILE ‘”.$dbdir.$tt.”.txt”.”‘ INTO TABLE `$tt`”;

    if($db->query($sql)){

     fclose($fp);

     echo $tt.”表数据恢复成功!<br>n”;

     unlink($dbdir.$tt.”.txt”);

    }else{

     echo $tt.”表数据恢复失败!<br>n”;

    }

   }

}

  //echo $tdata;

  //print_r($data_ar);

  //exit;

 }

}

/*

  * 读取文件内容

  * 参数 $file 为文件名及完整路径

  * 返回文件内容

  */

 function readfiles($file){

  $tdata = “”;

  $fp = fopen($file, “r”);

  if(filesize($file) <= 0) return;

  while($data = fread($fp, filesize($file))){

   $tdata .= $data;

  }

  fclose($fp);

  return $tdata;

 }

?>


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明mysql 备份与恢复的2个方法
喜欢 (0)

您必须 登录 才能发表评论!

加载中……