您好,登錄后才能下訂單哦!
小編給大家分享一下數據庫中有哪兩種數據庫備份,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
數據庫備份的兩種方法是:1、使用mysqldump結合exec函數進行數據庫備份;2、使用【php+mysql+header】函數進行數據庫備份。
數據庫備份是必要的一般都是使用mysqldump進行備份,我這邊寫了兩種備份方法可以參考一下。
第一種:使用mysqldump結合exec函數進行數據庫備份操作。
代碼如下
/** * Subject: php-mysql 實現數據庫備份. * User: luokakale * Date: 2018/11/9 * Time: 13:31 */ header('Content-Type:text/html;charset=utf8'); ini_set("max_execution_time", "0");//代碼運行時間不限制 防止備份失敗 ini_set('memory_limit', '128M');//設置內存 根據需求可以修改 date_default_timezone_set("PRC"); //創建需要保存sql文件的文件夾 $path = 'D:\SQL\databse_backup'; //定義數據庫配置 $user = ''; //數據庫賬戶 $pwd = ''; //數據庫密碼 $dbname = ''; //數據庫名稱 //備份數據庫命令地址文件 $sqladdress = 'D:\phpStudy\MySQL\bin\mysqldump.exe'; //備份指定地址 $time = time(); $path = 'D:\SQL\databse_backup'.'\\'.date("Ymd",$time); if(!file_exists($path)) { mkdir($path,0777,true); } //備份的數據庫文件名 $sqlFile = $dbname."_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%.sql"; //判斷是否存在密碼 $password = $pwd== ''?'':' -p'.$pwd; //拼接備份命令 $order = $sqladdress.' --opt -u'.$user.$password.' '.$dbname.' >'.$path.'\\'.$sqlFile; //執行命令 exec($order);
我使用的是集成的phpstudy里面的mysql下面的mysqldump.exe來備份,備份的數據庫名字寫法是 數據庫名字+年月日時. 上面代碼中我對數據庫密碼進行了判斷,我這邊有些數據庫是不需要密碼的。最后使用exec執行命令。
第二種:使用php+mysql+header函數進行數據庫備份和下載操作。
代碼如下:
header('Content-Type:text/html;charset=utf8'); ini_set("max_execution_time", "0");//代碼運行時間不限制 防止備份失敗 ini_set('memory_limit', '1024M');//設置內存 根據需求可以修改 date_default_timezone_set("PRC"); header("Content-Type:text/html;charset=utf-8"); $host=""; $user="";//賬戶 $password="";//密碼 $dbname="";//數據庫名稱 $con = mysqli_connect("$host","$user","$password","$dbname"); mysqli_select_db($con,$dbname); $mysql= "set charset utf8;\r\n";#for mysql>=5.0 mysqli_query($con,"SET NAMES 'UTF8'"); $q1=mysqli_query($con,"show tables"); while($t=mysqli_fetch_array($q1)){ $table=$t[0]; $q2=mysqli_query($con,"show create table `$table`"); $sql=mysqli_fetch_array($q2); $mysql.=$sql['Create Table'].";\r\n\r\n";#DDL $q3=mysqli_query($con,"select * from `$table`"); while($data=mysqli_fetch_assoc($q3)) { $keys=array_keys($data); $keys=array_map('addslashes',$keys); $keys=join('`,`',$keys); $keys="`".$keys."`"; $vals=array_values($data); $vals=array_map('addslashes',$vals); $vals=join("','",$vals); $vals="'".$vals."'"; $mysql.="insert into `$table`($keys) values($vals);\r\n"; unset($data); } $mysql.="\r\n"; unset($t); } mysqli_close($con); $filename=date('Ymj').".sql"; //文件名為當天的日期 $time = time(); $path = 'D:\SQL\databse_backup'.'\\'.date("Ymd",$time).'\\'; // 檢查目錄是否存在 if(!is_dir($path)){ // 新建目錄 mkdir($path, 0777, true); } $file_name = $path.$filename; $fp = fopen($file_name,'w'); fputs($fp,$mysql); fclose($fp); $fp=fopen($file_name,"r"); $file_size=filesize($file_name); header("Content-type: application/octet-stream"); header("Accept-Ranges: bytes"); header("Accept-Length: ".$file_size); header("Content-Disposition: attachment; filename=".$filename); //這里一定要使用echo 進行輸出,否則下載的文家是空白的 echo fread($fp,$file_size); fclose($fp); exit;
個人建議用第一種,第二種太消耗內存了。
第一種可以做成定時備份,windows下可以用定時任務。
以上是“數據庫中有哪兩種數據庫備份”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。