程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 一個MySQL數據備份/恢復的簡易方法

一個MySQL數據備份/恢復的簡易方法

編輯:MySQL綜合教程

方法一:

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]."`}"; if(fwrite($fpr, $str)){ echo $tbl[0]."...寫入 $outfile 成功!
n"; }else{ echo $tbl[0]."...寫入 $outfile 失敗!
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."表數據恢復成功!
n"; unlink($dbdir.$tt.".txt"); }else{ echo $tt."表數據恢復失敗!
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; } ?>

方法二:

想在PHP後台管理直接能夠備份數據庫,於是想呀想,一直沒有什麼思路,一開始是考慮用php來訪問服務器安裝mysql的目錄,比如 /usr/local/mysql/data目錄,直接把下面對應的文件進行備份,但是出現了問題:

第一、運行php的是apche的用戶,比如是nobody,那麼它一般是沒有權限訪問/usr/local/mysql/data目錄的

第二、就算能夠訪問,那麼你如何能夠把/usr/local/mysql/data目錄下的文件拷貝出來呢?因為mysql在運行的時候是不運行訪問的,那麼nobody用戶有權限停止mysql的服務,不可能!

越想越不對勁,沒有辦法,看能不能從php操作數據庫入手,於是就去看了下phpMyadmin和Discuz!的代碼,呵呵,於是偷抄了Discuz!的代碼,形成了如下備份數據庫的方法。(在這裡感謝Discuz!的開發者)

備份數據庫有兩種方式,一種是只備份數據庫的結構,一種把是結構和所有的數據都備份出來,當然是第二種方法好啦,不過我為了考慮可能的需求就都作啦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved