MySQL資料庫中備份/恢複的兩方法介紹

來源:互聯網
上載者:User

   下面介紹MySQLDatabase Backup/恢複的兩種方法。

  方法一:

  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 成功!

  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!的代碼,形成了如下備份資料庫的方法。

        :更多精彩文章請關注三聯編程教程欄目。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.