$msgs[]="服務(wù)器備份目錄為backup";
創(chuàng)新互聯(lián)公司專(zhuān)業(yè)成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)、軟文發(fā)稿等專(zhuān)業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專(zhuān)業(yè)設(shè)計(jì)制作為您帶來(lái)效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
$msgs[]="對(duì)于較大的數(shù)據(jù)表,強(qiáng)烈建議使用分卷備份";
$msgs[]="只有選擇備份到服務(wù)器,才能使用分卷備份功能";
show_msg($msgs);
搜一下phpMyAdmin放到你的網(wǎng)站上,然后以數(shù)據(jù)庫(kù)賬號(hào)和密碼登錄,就有備份的選項(xiàng)了。
你郵箱?
在mysql中導(dǎo)入/導(dǎo)出超大的sql文本文件,我們可以使用很多方法實(shí)例,如有:客戶(hù)端直接命令操作,分塊導(dǎo)入,客戶(hù)端用source命令操作等等。
在實(shí)際工作中,有時(shí)經(jīng)常地時(shí)行mysql數(shù)據(jù)庫(kù)的導(dǎo)入和導(dǎo)入操作,但對(duì)于大型sql文件導(dǎo)入時(shí),phpmyadmin是不行的,有太多限制,比如記錄,內(nèi)存等!
多種方案收集,如下:
方案一:客戶(hù)端直接命令操作(此方法是我比較喜歡的)
剛恢復(fù)一個(gè)電商網(wǎng)站mysql備份數(shù)據(jù),此備份文件有300多M,因?yàn)閜hpmyadmin支持上傳有限,文件太大IE停止響應(yīng),所以在本地用
代碼如下
復(fù)制代碼
mysql -u root -p root jiahuibuydb
c:/yebihai.sql
但沒(méi)導(dǎo)入進(jìn)去,出來(lái)一大堆mysql的參數(shù)提示,不認(rèn)輸入的命令參數(shù),后來(lái)寫(xiě)成下面這個(gè)樣子,就是去掉了參數(shù)和數(shù)據(jù)之間的空格
代碼如下
復(fù)制代碼
mysql -uroot -proot jiahuibuydb
c:/yebihai.sql
導(dǎo)入就OK了
導(dǎo)出命令:
a)導(dǎo)出整個(gè)庫(kù)
mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 導(dǎo)出的文件名
代碼如下
復(fù)制代碼
mysqldump -u root -p student
d:/yebihai.sql
b)導(dǎo)出一個(gè)表
mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 表名 導(dǎo)出的文件名
方案二:分塊導(dǎo)入
代碼如下
復(fù)制代碼
?
//用來(lái)快速M(fèi)ysql的大數(shù)據(jù)備份
//使用前請(qǐng)首先按照代碼注釋修改要導(dǎo)入的SQL文件名、數(shù)據(jù)庫(kù)主機(jī)名、數(shù)據(jù)庫(kù)用戶(hù)名、密碼、數(shù)據(jù)庫(kù)名
//同時(shí)將數(shù)據(jù)庫(kù)文件和本文本一起ftp導(dǎo)網(wǎng)站目錄,然后以web方式訪(fǎng)問(wèn)此文件即可
$file_name="sql.sql"; //要導(dǎo)入的SQL文件名
$dbhost="localhost"; //數(shù)據(jù)庫(kù)主機(jī)名
$dbuser="user"; //數(shù)據(jù)庫(kù)用戶(hù)名
$dbpass="pass"; //數(shù)據(jù)庫(kù)密碼
$dbname="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ù)
mysql_query('set names utf8');
echo "正在執(zhí)行導(dǎo)入操作";
while($SQL=GetNextSQL()){
if
(!mysql_query($SQL)){
echo
"執(zhí)行出錯(cuò):".mysql_error()."
";
echo
"SQL語(yǔ)句為:
".$SQL."
";
};
}
echo
"導(dǎo)入完成";
fclose($fp) or die("Can’t close file $file_name");//關(guān)閉文件
mysql_close();
//從文件中逐條取SQL
function GetNextSQL() {
global $fp;
$sql="";
while ($line =
@fgets($fp, 40960)) {
$line =
trim($line);
//以下三句在高版本php中不需要,在部分低版本中也許需要修改
$line =
str_replace("http:////","http://",$line);
$line =
str_replace("/’","’",$line);
$line =
str_replace("http://r//n",chr(13).chr(10),$line);
// $line
= stripcslashes($line);
if (strlen($line)1)
{
if ($line[0]=="-" $line[1]=="-")
{
continue;
}
}
$sql.=$line.chr(13).chr(10);
if
(strlen($line)0){
if
($line[strlen($line)-1]==";"){
break;
}
}
}
return $sql;
}
?
方案三:客戶(hù)端用source命令操作
比較好的辦法仍是用mysql的source命令:
一、在客戶(hù)端下操作:
1、進(jìn)行入客戶(hù)端
代碼如下
復(fù)制代碼
2、mysqluse 數(shù)據(jù)庫(kù)名(如果沒(méi)有,先建一個(gè))
3、mysqlset names 'utf8'; (一般看導(dǎo)入的是什么格式的文件)
4、mysqlsource d:/aaa.sql;
即可正常導(dǎo)入,如果有錯(cuò),可以看出錯(cuò)提示
二、PHP文件操作:
建立a.php
里面有下面內(nèi)容
代碼如下
復(fù)制代碼
mysql_connet('xxxx');
mysql_query("set names 'utf8'");
mysql_query("source d:/aaa.sql'");
原理同上,主要方便了無(wú)法使用命令行用戶(hù)的操作
方案四:下面教大家一個(gè)簡(jiǎn)單有效的辦法,適合不會(huì)使用命令窗口的非技術(shù)人員,可以導(dǎo)入任意大小的mysql數(shù)據(jù)庫(kù),理論上不論您的數(shù)據(jù)庫(kù)備份文件多大,都可以導(dǎo)入
方法如下:
1.將數(shù)據(jù)庫(kù)備份文件(如backup.sql)上傳至網(wǎng)站根目錄。
2.將以下代碼保存為mysql.php文件,上傳至網(wǎng)站根目錄。
代碼如下
復(fù)制代碼
system("mysql -hdbhost -udbuser -ppassword dbname backup.sql");
print "導(dǎo)入成功";
其中
dbhost 改為您的數(shù)據(jù)庫(kù)服務(wù)器地址(小提示:一般主機(jī)默認(rèn)數(shù)據(jù)庫(kù)服務(wù)器地址是:localhost)
dbuser 改為您的數(shù)據(jù)庫(kù)用戶(hù)名
password 改為您的數(shù)據(jù)庫(kù)用戶(hù)密碼
dbname 改為您的數(shù)據(jù)庫(kù)名(導(dǎo)入的時(shí)候此庫(kù)必須先建立好,否則會(huì)失敗并且不會(huì)進(jìn)行任何提示)
backup.sql表示通過(guò)ftp上傳到網(wǎng)站根目錄下數(shù)據(jù)庫(kù)文件的文件名(該文件是解壓縮后的文件)
3.在瀏覽器里面訪(fǎng)問(wèn)mysql.php, 那么就在瀏覽器里面輸入/mysql.php,只要瀏覽器一訪(fǎng)問(wèn)這個(gè)mysql.php文件,數(shù)據(jù)就開(kāi)始導(dǎo)入,數(shù)據(jù)導(dǎo)入結(jié)束后,就會(huì)顯示“導(dǎo)入成功”的字樣。這個(gè)時(shí)間根據(jù)您要導(dǎo)入的數(shù)據(jù)大小決定,一般時(shí)間很短
1.建立索引,盡可能把索引建立到你你經(jīng)常比較的字段上,如select
a,b,c,d
from
a
where
索引字段=值,這個(gè)索引字段最好是數(shù)值型數(shù)據(jù)
2.慢有更多情況,
情況1:遠(yuǎn)程查詢(xún),其實(shí)可能查詢(xún)不慢,由于數(shù)據(jù)量大,傳輸過(guò)程慢
情況2:WHERE
后面的比較數(shù)據(jù)太多,比如
like
類(lèi)的語(yǔ)句
情況3:需要哪個(gè)字段只取那個(gè)字段就行了,比如select
*
from
a與select
b,c,d
from
a速度是有差距的
3.數(shù)據(jù)庫(kù)定期維護(hù),壓縮,把不常用的數(shù)據(jù)備份后放入備份庫(kù)里,查詢(xún)時(shí)查備份庫(kù)等
問(wèn)題補(bǔ)充:
.第一條:建立索引,怎么建立,我也聽(tīng)說(shuō)過(guò),但不知道怎么使用
答:每種數(shù)據(jù)建立索引的方法有差異,比如SQL
SERVER
2000中可對(duì)多個(gè)字段進(jìn)行索引,比如SQL
SERVER2000中有命令
CREATE
INDEX
為給定表或視圖創(chuàng)建索引。
只有表或視圖的所有者才能為表創(chuàng)建索引。表或視圖的所有者可以隨時(shí)創(chuàng)建索引,無(wú)論表中是否有數(shù)據(jù)??梢酝ㄟ^(guò)指定限定的數(shù)據(jù)庫(kù)名稱(chēng),為另一個(gè)數(shù)據(jù)庫(kù)中的表或視圖創(chuàng)建索引。
語(yǔ)法
CREATE
[
UNIQUE
]
[
CLUSTERED
|
NONCLUSTERED
]
INDEX
index_name
ON
{
table
|
view
}
(
column
[
ASC
|
DESC
]
[
,...n
]
)
[
WITH
index_option
[
,...n]
]
[
ON
filegroup
]
index_option
::=
{
PAD_INDEX
|
FILLFACTOR
=
fillfactor
|
IGNORE_DUP_KEY
|
DROP_EXISTING
|
STATISTICS_NORECOMPUTE
|
SORT_IN_TEMPDB
}
第三條:數(shù)據(jù)庫(kù)定期維護(hù),壓縮:怎么個(gè)壓縮法?及時(shí)備份數(shù)據(jù)到備份庫(kù)查詢(xún)備份庫(kù),那查詢(xún)時(shí)不是還慢嗎?
答:這個(gè)有壓縮工具,基本上每種數(shù)據(jù)庫(kù)都有自己的壓縮數(shù)據(jù)庫(kù)的工具
當(dāng)前名稱(chēng):php高效備份大數(shù)據(jù)庫(kù),php 備份數(shù)據(jù)庫(kù)
文章分享:http://jinyejixie.com/article46/hojphg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、軟件開(kāi)發(fā)、電子商務(wù)、企業(yè)建站
聲明:本網(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)