提供一款实例的php mysql 数据库备份程序,很好方法的可以对你的数据库进行在线实时备份,这样可以保存数据库的安全,并且他是以.sql文件保存在bakdata目录还日期生成的数据库备份文件的,代码如下:
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link type="text/css" rel="stylesheet" href="common/control.css"> <script type="text/javascript" language="javascript" src="common/admin.otable.js"></script> <script type="text/javascript" language="javascript" src="common/include.func.js"></script> <title>数据管理</title> <style type="text/css"> span {padding-left:8px;} </style> </head> <body class="contentbody"> <div class="maindiv"> <span class="ctitle">esweb系统数据管理</span> <ul class="cmenu"> <li><a href="sql_backup.php">数据备份</a></li> <li><a href="sql_restore.php">数据还原</a></li> <li><a href="sql_optimize.php">数据优化</a> </ul> <div class="concontent"> <?php /*--------------界面--------------*/if(!$_post['act']){/*----------------------*/ $msgs[]="服务器备份目录为$backup"; $msgs[]="对于较大的数据表,强烈建议使用分卷备份"; $msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; //show_msg($msgs); <div class="thead"><span class="left"><img src="images/icon2/into.gif" align="absmiddle" / alt="php mysql 数据库备份程序 " > 如果需要备份、还原或者优化<font color="red"> 大量的数据 </font>, 推荐使用"<a href="http://www.phome.net/ebak2010/" target="_blank">帝国备份王2010</a>"</span> <span class="right"></span></div> <form name="myform" method="post" action="sql_backup.php"> <table cellpadding="" cellspacing="0" border="0" width="100%" class="ctable" id="otable" align="center"> <tr> <th colspan="2">esweb系统数据备份</th> </tr> <tr> <td align="right" width="250">选择备份方式</td> <td><input type="radio" name="bfzl" value="quanbubiao" checked="checked" />备份全部数据 <input type="radio" name="bfzl" value="danbiao" />备份单张表数据 <select name="tablename"><option value="">请选择</option> <?php $d->query("show table status from $mysqldb"); while($d->nextrecord()){ echo "<option value='".$d->f('name')."'>".$d->f('name')."</option>";} </select></td> </tr> <tr> <td align="right">选择目标位置</td> <td><input type="radio" name="weizhi" value="server" checked="checked" />备份到服务器 <input type="radio" name="weizhi" value="localpc" />备份到本地</td> </tr> <tr> <td align="right">使用分卷备份</td> <td><input type="checkbox" name="fenjuan" value="yes" checked="checked" /> 分卷备份 <input name="filesize" type="text" value="1260" size="10" class="text2" /> k <span>(只有选择备份到服务器,才能使用分卷备份功能)</span></td> </tr> <tr> <td align="right">程序说明</td> <td>1.对于较大的数据表,强烈建议使用分卷备份. <br>2.只有选择备份到服务器,才能使用分卷备份功能. </td> </tr> <tr> <td align="center" colspan="2"><input type="submit" id="act" name="act" value="备 份" class="button" /> <input type="reset" value="重 置" class="button" /></td> </tr> </table> </form> <?php /*-------------界面结束-------------*/}/*---------------------------------*/ /*----*/else{/*--------------主程序-----------------------------------------*/ if($_post['weizhi']=="localpc"&&$_post['fenjuan']=='yes') {$msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; show_msg($msgs); pageend();} if($_post['fenjuan']=="yes"&&!$_post['filesize']) {$msgs[]="您选择了分卷备份功能,但未填写分卷文件大小"; show_msg($msgs); pageend();} if($_post['weizhi']=="server"&&!writeable($backup)) {$msgs[]="备份文件存放目录'$backup'不可写,请修改目录属性"; show_msg($msgs); pageend();} /*----------备份全部表-------------*/if($_post['bfzl']=="quanbubiao"){/*----*/ /*----不分卷*/if(!$_post['fenjuan']){/*--------------------------------*/ if(!$tables=$d->query("show table status from $mysqldb")) {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} $sql=""; while($d->nextrecord($tables)) { $table=$d->f("name"); $sql.=make_header($table); $d->query("select * from $table"); $num_fields=$d->nf(); while($d->nextrecord()) {$sql.=make_record($table,$num_fields);} } $filename=date("ymd",time())."_all.sql"; if($_post['weizhi']=="localpc") down_file($sql,$filename); elseif($_post['weizhi']=="server") {if(write_file($sql,$filename)) $msgs[]="全部数据表数据备份完成,生成备份文件'$backup/$filename'"; else $msgs[]="备份全部数据表失败"; show_msg($msgs); pageend(); } /*-----------------不要卷结束*/}/*-----------------------*/ /*-----------------分卷*/else{/*-------------------------*/ if(!$_post['filesize']) {$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();} if(!$tables=$d->query("show table status from $mysqldb")) {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} $sql=""; $p=1; $filename=date("ymd",time())."_all"; while($d->nextrecord($tables)) { $table=$d->f("name"); $sql.=make_header($table); $d->query("select * from $table"); $num_fields=$d->nf(); while($d->nextrecord()) {$sql.=make_record($table,$num_fields); if(strlen($sql)>=$_post['filesize']*1000){ $filename.=("_v".$p.".sql"); if(write_file($sql,$filename)) $msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'"; else $msgs[]="备份表-".$_post['tablename']."-失败"; $p++; $filename=date("ymd",time())."_all"; $sql="";} } } if($sql!=""){$filename.=("_v".$p.".sql"); if(write_file($sql,$filename)) $msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";} show_msg($msgs); /*---------------------分卷结束*/}/*--------------------------------------*/ /*--------备份全部表结束*/}/*---------------------------------------------*/ /*--------备份单表------*/elseif($_post['bfzl']=="danbiao"){/*------------*/ if(!$_post['tablename']) {$msgs[]="请选择要备份的数据表"; show_msg($msgs); pageend();} /*--------不分卷*/if(!$_post['fenjuan']){/*-------------------------------*/ $sql=make_header($_post['tablename']); $d->query("select * from ".$_post['tablename']); $num_fields=$d->nf(); while($d->nextrecord()) {$sql.=make_record($_post['tablename'],$num_fields);} $filename=date("ymd",time())."_".$_post['tablename'].".sql"; if($_post['weizhi']=="localpc") down_file($sql,$filename); elseif($_post['weizhi']=="server") {if(write_file($sql,$filename)) $msgs[]="表-".$_post['tablename']."-数据备份完成,生成备份文件'$backup/$filename'"; else $msgs[]="备份表-".$_post['tablename']."-失败"; show_msg($msgs); pageend(); } /*----------------不要卷结束*/}/*------------------------------------*/ /*----------------分卷*/else{/*--------------------------------------*/ if(!$_post['filesize']) {$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();} $sql=make_header($_post['tablename']); $p=1; $filename=date("ymd",time())."_".$_post['tablename']; $d->query("select * from ".$_post['tablename']); $num_fields=$d->nf(); while ($d->nextrecord()) { $sql.=make_record($_post['tablename'],$num_fields); if(strlen($sql)>=$_post['filesize']*1000){ $filename.=("_v".$p.".sql"); if(write_file($sql,$filename)) $msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'"; else $msgs[]="备份表-".$_post['tablename']."-失败"; $p++; $filename=date("ymd",time())."_".$_post['tablename']; $sql="";} } if($sql!=""){$filename.=("_v".$p.".sql"); if(write_file($sql,$filename)) $msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";} show_msg($msgs); /*----------分卷结束*/}/*--------------------------------------------------*/ /*----------备份单表结束*/}/*----------------------------------------------*/ /*---*/}/*-------------主程序结束------------------------------------------*/ function write_file($sql,$filename) { $re=true; global $backup; if(!@$fp=fopen($backup."/".$filename,"w+")) {$re=false; echo "failed to open target file";} if(!@fwrite($fp,$sql)) {$re=false; echo "failed to write file";} if(!@fclose($fp)) {$re=false; echo "failed to close target file";} return $re; } function down_file($sql,$filename) { ob_end_clean(); header("content-encoding: none"); header("content-type: ".(strpos($_server['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream')); header("content-disposition: ".(strpos($_server['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ')."filename=".$filename); header("content-length: ".strlen($sql)); header("pragma: no-cache"); header("expires: 0"); echo $sql; $e=ob_get_contents(); ob_end_clean(); } function writeable($dir) { if(!is_dir($dir)) { @mkdir($dir, 0777); } if(is_dir($dir)) { if($fp = @fopen("$dir/test.test", 'w')) { @fclose($fp); @unlink("$dir/test.test"); $writeable = 1; } else { $writeable = 0; } } return $writeable; } function make_header($table) {global $d; $sql="drop table if exists ".$table." "; $d->query("show create table ".$table); $d->nextrecord(); $tmp=preg_replace("/ /","",$d->f("create table")); $sql.=$tmp." "; return $sql; } function make_record($table,$num_fields) {global $d; $comma=""; $sql .= "insert into ".$table." values("; for($i = 0; $i < $num_fields; $i++) {$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";} $sql .= ") "; return $sql; } function show_msg($msgs) { $title="提示:"; echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>"; echo "<tr><td>".$title."</td></tr>"; echo "<tr><td><br><ul>"; while (list($k,$v)=each($msgs)) { echo "<li>".$v."</li>"; } echo "</ul></td></tr></table>"; } function pageend() { exit(); } </div><br /><br /> </div> </div> </body> </html> class db{ var $linkid; var $sqlid; var $record; function db($host="",$username="",$password="",$database="") { if(!$this->linkid) @$this->linkid = mysql_connect($host, $username, $password) or die("连接服务器失败."); @mysql_select_db($database,$this->linkid) or die("无法打开数据库"); return $this->linkid;} function query($sql) {if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid; else { $this->err_report($sql,mysql_error); return false;} } function nr($sql_id="") {if(!$sql_id) $sql_id=$this->sqlid; return mysql_num_rows($sql_id);} function nf($sql_id="") {if(!$sql_id) $sql_id=$this->sqlid; return mysql_num_fields($sql_id);} function nextrecord($sql_id="") {if(!$sql_id) $sql_id=$this->sqlid; if($this->record=mysql_fetch_array($sql_id)) return $this->record; else return false; } function f($name) { if($this->record[$name]) return $this->record[$name]; else return false; } function close() {mysql_close($this->linkid);} function lock($tblname,$op="write") {if(mysql_query("lock tables ".$tblname." ".$op)) return true; else return false;} function unlock() {if(mysql_query("unlock tables")) return true; else return false;} function ar() { return @mysql_affected_rows($this->linkid); } function i_id() { return mysql_insert_id(); } function err_report($sql,$err) { echo "mysql查询错误<br>"; echo "查询语句:".$sql."<br>"; echo "错误信息:".$err; }//开源代码phprm.com /****************************************类结束***************************/ global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb, $backup; $mysqlhost = $mydbhost; //host name $mysqluser = $mydbuser; //login name $mysqlpwd = $mydbpw; //password $mysqldb = $mydbname; //name of database $d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb); $d->query("set names 'utf8'");
本文链接:
收藏随意^^请保留教程地址.