php 备份和还原数据库

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
//这里是你要执行的代码 添加备份php或者还原的php的脚本,
sleep($interval);// 等待5分钟
}while(true);


一、备份数据库并下载到本地【db_backup.php】

Php代码
  1. <?php    
  2. // 设置SQL文件保存文件名    
  3. $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";    
  4. // 所保存的文件名    
  5. header("Content-disposition:filename=".$filename);    
  6. header("Content-type:application/octetstream");    
  7. header("Pragma:no-cache");    
  8. header("Expires:0");    
  9. // 获取当前页面文件路径,SQL文件就导出到此文件夹内    
  10. $tmpFile = (dirname(__FILE__))."\\".$filename;    
  11. // 用MySQLDump命令导出数据库    
  12. exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);    
  13. $file = fopen($tmpFile"r"); // 打开文件    
  14. echo fread($file,filesize($tmpFile));    
  15. fclose($file);    
  16. exit;    
  17. ?>   
<?php 
// 设置SQL文件保存文件名 
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; 
// 所保存的文件名 
header("Content-disposition:filename=".$filename); 
header("Content-type:application/octetstream"); 
header("Pragma:no-cache"); 
header("Expires:0"); 
// 获取当前页面文件路径,SQL文件就导出到此文件夹内 
$tmpFile = (dirname(__FILE__))."\\".$filename; 
// 用MySQLDump命令导出数据库 
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile); 
$file = fopen($tmpFile, "r"); // 打开文件 
echo fread($file,filesize($tmpFile)); 
fclose($file); 
exit; 
?> 



二、还原数据库【db_restore.php】

Php代码
  1. <form id="form1" name="form1" method="post" action="">    
  2. 【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />    
  3. <input id="submit" name="submit" type="submit" value="还原" />    
  4. </form>    
  5. <?php    
  6. // 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可;    
  7. require_once((dirname(__FILE__).'/../../include/config.php'));    
  8. if ( isset ( $_POST['sqlFile'] ) )    
  9. {    
  10. $file_name = $_POST['sqlFile']; //要导入的SQL文件名    
  11. $dbhost = $cfg_dbhost//数据库主机名    
  12. $dbuser = $cfg_dbuser//数据库用户名    
  13. $dbpass = $cfg_dbpwd//数据库密码    
  14. $dbname = $cfg_dbname//数据库名    
  15.   
  16. set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入    
  17. $fp = @fopen($file_name"r"or die("不能打开SQL文件 $file_name");//打开文件    
  18. mysql_connect($dbhost$dbuser$dbpassor die("不能连接数据库 $dbhost");//连接数据库    
  19. mysql_select_db($dbnameor die ("不能打开数据库 $dbname");//打开数据库    
  20.   
  21. echo "<p>正在清空数据库,请稍等....<br>";    
  22. $result = mysql_query("SHOW tables");    
  23. while ($currow=mysql_fetch_array($result))    
  24. {    
  25. mysql_query("drop TABLE IF EXISTS $currow[0]");    
  26. echo "清空数据表【".$currow[0]."】成功!<br>";    
  27. }    
  28. echo "<br>恭喜你清理MYSQL成功<br>";    
  29.   
  30. echo "正在执行导入数据库操作<br>";    
  31. // 导入数据库的MySQL命令    
  32. exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);    
  33. echo "<br>导入完成!";    
  34. mysql_close();    
  35. }    
  36. ?>   
posted @ 2013-10-28 16:39  Otgs  阅读(565)  评论(0编辑  收藏  举报