php對(duì)mysql數(shù)據(jù)庫(kù)的備份及還原:
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、特克斯網(wǎng)站維護(hù)、網(wǎng)站推廣。
生成文件但是內(nèi)容為空,說(shuō)明:php執(zhí)行沒(méi)問(wèn)題,mysqldump也運(yùn)行,初步判斷問(wèn)題出在mysqldump沒(méi)正常運(yùn)行。建議你到服務(wù)器上運(yùn)行 "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump -uroot -hlocalhost -p123 --opt -B rsgl ../bak/xxx.sql"
看能否正常生成sql文件
一年四季春常在 萬(wàn)紫千紅永開(kāi)花 喜迎新春
1,恢復(fù)前備份。2,有之前的備份才可以恢復(fù)。3,下載數(shù)據(jù)庫(kù)管理工具,sqlyun,navcat,等可進(jìn)行導(dǎo)入導(dǎo)出。4.注意恢復(fù)期間對(duì)前臺(tái)影響。(最好關(guān)閉前臺(tái)訪(fǎng)問(wèn))5.做好出問(wèn)題時(shí)的應(yīng)對(duì)準(zhǔn)備
一、備份數(shù)據(jù)庫(kù)并下載到本地【db_backup.php】
復(fù)制代碼 代碼如下:
?php
// 設(shè)置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");
// 獲取當(dāng)前頁(yè)面文件路徑,SQL文件就導(dǎo)出到此文件夾內(nèi)
$tmpFile = (dirname(__FILE__))."\\".$filename;
// 用MySQLDump命令導(dǎo)出數(shù)據(jù)庫(kù)
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname ".$tmpFile);
$file = fopen($tmpFile, "r"); // 打開(kāi)文件
echo fread($file,filesize($tmpFile));
fclose($file);
exit;
?
二、還原數(shù)據(jù)庫(kù)【db_restore.php】
復(fù)制代碼 代碼如下:
form id="form1" name="form1" method="post" action=""
【數(shù)據(jù)庫(kù)SQL文件】:input id="sqlFile" name="sqlFile" type="file" /
input id="submit" name="submit" type="submit" value="還原" /
/form
?php
// 我的數(shù)據(jù)庫(kù)信息都存放到config.php文件中,所以加載此文件,如果你的不是存放到該文件中,注釋此行即可;
require_once((dirname(__FILE__).'/../../include/config.php'));
if ( isset ( $_POST['sqlFile'] ) )
{
$file_name = $_POST['sqlFile']; //要導(dǎo)入的SQL文件名
$dbhost = $cfg_dbhost; //數(shù)據(jù)庫(kù)主機(jī)名
$dbuser = $cfg_dbuser; //數(shù)據(jù)庫(kù)用戶(hù)名
$dbpass = $cfg_dbpwd; //數(shù)據(jù)庫(kù)密碼
$dbname = $cfg_dbname; //數(shù)據(jù)庫(kù)名
set_time_limit(0); //設(shè)置超時(shí)時(shí)間為0,表示一直執(zhí)行。當(dāng)php在safe mode模式下無(wú)效,此時(shí)可能會(huì)導(dǎo)致導(dǎo)入超時(shí),此時(shí)需要分段導(dǎo)入
$fp = @fopen($file_name, "r") or die("不能打開(kāi)SQL文件 $file_name");//打開(kāi)文件
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能連接數(shù)據(jù)庫(kù) $dbhost");//連接數(shù)據(jù)庫(kù)
mysql_select_db($dbname) or die ("不能打開(kāi)數(shù)據(jù)庫(kù) $dbname");//打開(kāi)數(shù)據(jù)庫(kù)
echo "p正在清空數(shù)據(jù)庫(kù),請(qǐng)稍等....br";
$result = mysql_query("SHOW tables");
while ($currow=mysql_fetch_array($result))
{
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo "清空數(shù)據(jù)表【".$currow[0]."】成功!br";
}
echo "br恭喜你清理MYSQL成功br";
echo "正在執(zhí)行導(dǎo)入數(shù)據(jù)庫(kù)操作br";
// 導(dǎo)入數(shù)據(jù)庫(kù)的MySQL命令
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname ".$file_name);
echo "br導(dǎo)入完成!";
mysql_close();
}
?
// Create SQL file header:$sqlbackup .= "# MySQL backup of " . $dname . ":\n";$sqlbackup .= "# Generated on " . date('Y-m-d') . " at " . date("H:i:s") . ".\n\n";
// Get the tables to backup:$tables = mysql_list_tables($dname);for($i = 0; $i mysql_num_rows($tables); $i++) {
$table = mysql_tablename ($tables, $i);$sqlbackup .= "# Data for $table: \n";
$tabledata = mysql_query("SELECT * FROM $table");$num_fields = mysql_num_fields($tabledata);$numrow = mysql_num_rows($tabledata);while( $row = mysql_fetch_array($tabledata, MYSQL_NUM)) {
// Add commands so backup can be used by SQL:$sqlbackup .= "INSERT INTO ".$table." VALUES(";for($j = 0; $j $num_fields; $j++) {$row[$j] = addslashes($row[$j]);$row[$j] = str_replace("\n","\\n",$row[$j]);$row[$j] = str_replace("\r","",$row[$j]);if (isset($row[$j]))$sqlbackup .= "\"$row[$j]\"";else$sqlbackup .= "\"\"";if ($j($num_fields-1))$sqlbackup .= ", "; }$sqlbackup .= ");\n"; }if ($i + 1 != mysql_num_rows($tables))$sqlbackup .= "\n"; }
// Find out how long the file is for the browser:$howlong = strlen($sqlbackup);
// Construct file name:$sqlfname = "db_" . $dname . date("_m_d_Y");
header("Content-type: text/sql");header("Content-Length: $howlong");header("Content-Disposition: attachment; filename=$sqlfname.sql");echo $sqlbackup;
步驟如下
1、首先把要把sql2012中要備份的數(shù)據(jù)庫(kù)設(shè)置為兼容2008.
右鍵sql2012中的數(shù)據(jù)庫(kù)Test-屬性-選項(xiàng)
2、右鍵Test-任務(wù)-生成腳本,下一步-下一步 ,點(diǎn) 高級(jí) 選項(xiàng)。把script for sql version 改成你要降級(jí)的那個(gè)版本 也就是sql2008.確定完成即可。會(huì)生成一個(gè)script.sql腳本文件。
3、下一步要把sqlserver2012源文件復(fù)制到另外一個(gè)電腦上。由于SqlServer正在運(yùn)行 是無(wú)法復(fù)制的。所以首先要停止sqlserver服務(wù)。
3、找到你這個(gè)sql2012數(shù)據(jù)庫(kù)在電腦中的位置。 右鍵這個(gè)數(shù)據(jù)庫(kù)-文件 會(huì)有路徑,復(fù)制出這兩個(gè)文件來(lái)。 至此 sqlserver2012的電腦操作完成
4、把上面得到的script.sql 文件和兩個(gè)數(shù)據(jù)源文件復(fù)制到sql2008所在的電腦中。在sql2008中 新建-查詢(xún)管理器。把script.sql拖進(jìn)去,會(huì)看到代碼。
php簡(jiǎn)單備份與還原MySql的方法具體如下:
一、備份:
?php
header?(?"content-Type:?text/html;?charset=utf-8"?);
//備份數(shù)據(jù)庫(kù)
$host="localhost";
$user="root";//數(shù)據(jù)庫(kù)賬號(hào)
$password="123456";//數(shù)據(jù)庫(kù)密碼
$dbname="test";//數(shù)據(jù)庫(kù)名稱(chēng)
//這里的賬號(hào)、密碼、名稱(chēng)都是從頁(yè)面?zhèn)鬟^(guò)來(lái)的
if(!mysql_connect($host,$user,$password))?//連接mysql數(shù)據(jù)庫(kù)
{
echo?'數(shù)據(jù)庫(kù)連接失敗,請(qǐng)核對(duì)后再試';
exit;
}
if(!mysql_select_db($dbname))?//是否存在該數(shù)據(jù)庫(kù)
{
echo?'不存在數(shù)據(jù)庫(kù):'.$dbname.',請(qǐng)核對(duì)后再試';
exit;
}
mysql_query("set?names?'utf8'");
$mysql=?"set?charset?utf8;\r\n";
$q1=mysql_query("show?tables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("show?create?table?`$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create?Table'].";\r\n";
$q3=mysql_query("select?*?from?`$table`");
while($data=mysql_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";
}
}
$filename="data/".$dbname.date('Ymjgi').".sql";?//存放路徑,默認(rèn)存放到項(xiàng)目最外層
$fp?=?fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo?"數(shù)據(jù)備份成功";
?
二、還原
!--
author:果凍
qq:52091199
blog:
--
meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/
?php
$filename?=?"test20101216923.sql";
$host="localhost";?//主機(jī)名
$user="root";?//MYSQL用戶(hù)名
$password="123456";?//密碼
$dbname="test";?//在此指定您要恢復(fù)的數(shù)據(jù)庫(kù)名,不存在則必須先創(chuàng)建,請(qǐng)自已修改數(shù)據(jù)庫(kù)名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="data/".$filename;?//指定要恢復(fù)的MySQL備份文件路徑,請(qǐng)自已修改此路徑
restore($mysql_file);?//執(zhí)行MySQL恢復(fù)命令
function?restore($fname)
{
if?(file_exists($fname))?{
$sql_value="";
$cg=0;
$sb=0;
$sqls=file($fname);
foreach($sqls?as?$sql)
{
$sql_value.=$sql;
}
$a=explode(";\r\n",?$sql_value);?//根據(jù)";\r\n"條件對(duì)數(shù)據(jù)庫(kù)中分條執(zhí)行
$total=count($a)-1;
mysql_query("set?names?'utf8'");
for?($i=0;$i$total;$i++)
{
mysql_query("set?names?'utf8'");
//執(zhí)行命令
if(mysql_query($a[$i]))
{
$cg+=1;
}
else
{
$sb+=1;
$sb_command[$sb]=$a[$i];
}
}
echo?"操作完畢,共處理?$total?條命令,成功?$cg?條,失敗?$sb?條";
//顯示錯(cuò)誤信息
if?($sb0)
{
echo?"hrbrbr失敗命令如下:br";
for?($ii=1;$ii=$sb;$ii++)
{
echo?"pb第?".$ii."?條命令(內(nèi)容如下):/bbr".$sb_command[$ii]."/pbr";
}
}??//-----------------------------------------------------------
}else{
echo?"MySQL備份文件不存在,請(qǐng)檢查文件路徑是否正確!";
}
}
?
分享標(biāo)題:php數(shù)據(jù)庫(kù)備份恢復(fù)類(lèi),php 備份數(shù)據(jù)庫(kù)
轉(zhuǎn)載注明:http://jinyejixie.com/article34/hopdse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、外貿(mào)建站、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)