一个MySQL数据备份/恢复的简易方法

2016-01-29 14:53 0 1 收藏

一个MySQL数据备份/恢复的简易方法,一个MySQL数据备份/恢复的简易方法

【 tulaoshi.com - MySQL 】

方法一:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/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 成功!<brn";    }else{     echo $tbl[0]."...写入 $outfile 失败!<brn";    }        @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."表数据恢复成功!<brn";     unlink($dbdir.$tt.".txt");    }else{     echo $tt."表数据恢复失败!<brn";    }   }     }  //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; }?

来源:https://www.tulaoshi.com/n/20160129/1494582.html

延伸阅读
讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL 版本为 5.0.22。 本文介绍的是使用MySQL自带免费备份工具备份,当然你可以选择一些更方便的第三方工具进行备份和恢复MySql数据库。 目前 MySQL 支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL 语...
  本节介绍一个样例数据库,这个数据库在本书各个部分都可能用到。在学习将MySQL投入工作时,这个数据库为您提供了参考的例子。我们主要从前面描述过的两种情形来给出例子:   ■ 机构的秘书方案。我们需要一些比“机构”更为明确的信息,所以现在就来构造一个,它具有这样一些特性:它由为了研究美国历史这个共同目的而聚集在一起...
标签: MySQL mysql数据库
数据库毁坏发生的原因有许多,且程度各不相同。如果幸运的话,可能是一两个表的小毁坏(例如,如果您的机器由于断电而暂时停机)。如果不是这样,可能需要置换整个的数据目录(例如,如果某个磁盘瘫痪而且数据目录在它上)。在其他情况下也需要恢复操作,例如,当用户错误地删除数据库或表时,或者错误地删除表的内容时。不论这些不幸的事件发...
不过最近发现这个可视化操作有点点问题,就是当数据条数超过一定数目EMS SQL Manager就挂了,也不知道是否是软件问题……当然该开始我是将大的数据库文件分拆成小份小份的,多次导入。 刚才发现同事用了mysql 自带的mysqldump 工具就不存在这个问题。 (羞愧,不过我平时极少接触数据库) 这里记录下操作方式: 1. 进入bin目录,执行命令: ...
标签: PHP
  这个程序可以用来浏览MySQL中的数据,您可以稍做修改就可以做出很不错的MySQL浏览器. */ /* ?cmd=db ?cmd=table&db={} ?cmd=record&db={}&table={} */ $host = 'localhost'; $user = 'test'; $password = ''; if(!isset($cmd)) $cmd = 'db'; switch($cmd){    case 'db':      &...

经验教程

351

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部