還原一個(gè)數(shù)據(jù)庫(kù):mysql -h localhost -u root -p123456 www
備份一個(gè)數(shù)據(jù)庫(kù):mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql
其中WWW為數(shù)據(jù)庫(kù)名
//以下是在程序中進(jìn)行測(cè)試
//$command = “mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile”;
$command=”mysqldump -h localhost -u root -p123456 guestbook > guestbook2-29.sql”;
system($command);
echo “success”;
************************************************
備份MySQL數(shù)據(jù)庫(kù)的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
備份MySQL數(shù)據(jù)庫(kù)為帶刪除表的格式
備份MySQL數(shù)據(jù)庫(kù)為帶刪除表的格式,能夠讓該備份覆蓋已有數(shù)據(jù)庫(kù)而不需要手動(dòng)刪除原有數(shù)據(jù)庫(kù)。
mysqldump –add-drop-table -uusername -ppassword databasename > backupfile.sql
直接將MySQL數(shù)據(jù)庫(kù)壓縮備份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
備份MySQL數(shù)據(jù)庫(kù)某個(gè)(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同時(shí)備份多個(gè)MySQL數(shù)據(jù)庫(kù)
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
僅僅備份數(shù)據(jù)庫(kù)結(jié)構(gòu)
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
備份服務(wù)器上所有數(shù)據(jù)庫(kù)
mysqldump –all-databases > allbackupfile.sql
還原MySQL數(shù)據(jù)庫(kù)的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
還原壓縮的MySQL數(shù)據(jù)庫(kù)
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
將數(shù)據(jù)庫(kù)轉(zhuǎn)移到新服務(wù)器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
幾個(gè)常用用例:
1.導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)
mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 > 導(dǎo)出的文件名
mysqldump -u root -p dataname >dataname.sql
這個(gè)時(shí)候會(huì)提示要你輸入root用戶(hù)名的密碼,輸入密碼后dataname數(shù)據(jù)庫(kù)就成功備份在mysql/bin/目錄中.
2.導(dǎo)出一個(gè)表
mysqldump -u 用戶(hù)名 -p 數(shù)據(jù)庫(kù)名 表名> 導(dǎo)出的文件名
mysqldump -u root -p dataname users> dataname_users.sql
3.導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 沒(méi)有數(shù)據(jù) –add-drop-table 在每個(gè)create語(yǔ)句之前增加一個(gè)drop table
4.導(dǎo)入數(shù)據(jù)庫(kù)
常用source 命令
進(jìn)入mysql數(shù)據(jù)庫(kù)控制臺(tái),
如mysql -u root -p
mysql>use 數(shù)據(jù)庫(kù)
然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
mysql>source d:\wcnc_db.sql
mysqldump支持下列選項(xiàng):
–add-locks
在每個(gè)表導(dǎo)出之前增加LOCK TABLES并且之后UNLOCK TABLE。(為了使得更快地插入到MySQL)。
–add-drop-table
在每個(gè)create語(yǔ)句之前增加一個(gè)drop table。
–allow-keywords
允許創(chuàng)建是關(guān)鍵詞的列名字。這由表名前綴于每個(gè)列名做到。
-c, –complete-insert
使用完整的insert語(yǔ)句(用列名字)。
-C, –compress
如果客戶(hù)和服務(wù)器均支持壓縮,壓縮兩者間所有的信息。
–delayed
用INSERT DELAYED命令插入行。
-e, –extended-insert
使用全新多行INSERT語(yǔ)法。(給出更緊縮并且更快的插入語(yǔ)句)
-#, –debug[=option_string]
跟蹤程序的使用(為了調(diào)試)。
–help
顯示一條幫助消息并且退出。
–fields-terminated-by=…
–fields-enclosed-by=…
–fields-optionally-enclosed-by=…
–fields-escaped-by=…
–fields-terminated-by=…
這些選擇與-T選擇一起使用,并且有相應(yīng)的LOAD DATA INFILE子句相同的含義。
LOAD DATA INFILE語(yǔ)法。
-F, –flush-logs
在開(kāi)始導(dǎo)出前,洗掉在MySQL服務(wù)器中的日志文件。
-f, –force,
即使我們?cè)谝粋€(gè)表導(dǎo)出期間得到一個(gè)SQL錯(cuò)誤,繼續(xù)。
-h, –host=..
從命名的主機(jī)上的MySQL服務(wù)器導(dǎo)出數(shù)據(jù)。缺省主機(jī)是localhost。
-l, –lock-tables.
為開(kāi)始導(dǎo)出鎖定所有表。
-t, –no-create-info
不寫(xiě)入表創(chuàng)建信息(CREATE TABLE語(yǔ)句)
-d, –no-data
不寫(xiě)入表的任何行信息。如果你只想得到一個(gè)表的結(jié)構(gòu)的導(dǎo)出,這是很有用的!
–opt
同–quick –add-drop-table –add-locks –extended-insert –lock-tables。
應(yīng)該給你為讀入一個(gè)MySQL服務(wù)器的盡可能最快的導(dǎo)出。
-pyour_pass, –password[=your_pass]
與服務(wù)器連接時(shí)使用的口令。如果你不指定“=your_pass”部分,mysqldump需要來(lái)自終端的口令。
-P port_num, –port=port_num
與一臺(tái)主機(jī)連接時(shí)使用的TCP/IP端口號(hào)。(這用于連接到localhost以外的主機(jī),因?yàn)樗褂?Unix套接字。)
-q, –quick
不緩沖查詢(xún),直接導(dǎo)出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, –socket=/path/to/socket
與localhost連接時(shí)(它是缺省主機(jī))使用的套接字文件。
-T, –tab=path-to-some-directory
對(duì)于每個(gè)給定的表,創(chuàng)建一個(gè)table_name.sql文件,它包含SQL CREATE 命令,和一個(gè)table_name.txt文件,它包含數(shù)據(jù)。注意:這只有在mysqldump運(yùn)行在mysqld守護(hù)進(jìn)程運(yùn)行的同一臺(tái)機(jī)器上的時(shí)候才工 作。.txt文件的格式根據(jù)–fields-xxx和 –lines–xxx選項(xiàng)來(lái)定。
-u user_name, –user=user_name
與服務(wù)器連接時(shí),MySQL使用的用戶(hù)名。缺省值是你的Unix登錄名。
-O var=option, –set-variable var=option
設(shè)置一個(gè)變量的值。可能的變量被列在下面。
-v, –verbose
冗長(zhǎng)模式。打印出程序所做的更多的信息。
-V, –version
打印版本信息并且退出。
-w, –where=’where-condition’
只導(dǎo)出被選擇了的記錄;注意引號(hào)是強(qiáng)制的!
“–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″
最常見(jiàn)的mysqldump使用可能制作整個(gè)數(shù)據(jù)庫(kù)的一個(gè)備份:
mysqldump –opt database > backup-file.sql
但是它對(duì)用來(lái)自于一個(gè)數(shù)據(jù)庫(kù)的信息充實(shí)另外一個(gè)MySQL數(shù)據(jù)庫(kù)也是有用的:
mysqldump –opt database | mysql –host=remote-host -C database
由于mysqldump導(dǎo)出的是完整的SQL語(yǔ)句,所以用mysql客戶(hù)程序很容易就能把數(shù)據(jù)導(dǎo)入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql 庫(kù)名 < 文件名
最近這兩天,因?yàn)橹霸O(shè)計(jì)
數(shù)據(jù)庫(kù)的 時(shí)候沒(méi)有注意到有的表是要建在另外一臺(tái)服務(wù)器上面的(測(cè)試服務(wù)器數(shù)據(jù)庫(kù)是分布式的,不同的表可能在不同服務(wù)器上)。現(xiàn)在里面已經(jīng)有很多測(cè)試數(shù)據(jù)了,又不想 重新添加一遍。所以就想能不能備份出來(lái),再恢復(fù)到目標(biāo)機(jī)器上去。然后昨天的話就折騰了一下,請(qǐng)教同事,上網(wǎng)查資料。這里把用法記錄一下。
mysqldump命令:MySQL數(shù)據(jù)庫(kù)備份還原
一、常用操作:
備份整個(gè)數(shù)據(jù)庫(kù)
格式:
mysqldump -h主機(jī)名 -P端口 -u用戶(hù)名 -p密碼 (–database) 數(shù)據(jù)庫(kù)名 > 文件名.sql
mysqldump -h{hostname} -P{port} -u{username} -p{password} {databasename} > {backupfile.sql}
例如:
代碼如下:
1
mysqldump -hlocalhost -P3306 -uzhuchao -p123456 db_test > backfile1.sql
備份MySQL數(shù)據(jù)庫(kù)為帶刪除表的格式
備份MySQL數(shù)據(jù)庫(kù)為帶刪除表的格式,能夠讓該備份覆蓋已有數(shù)據(jù)庫(kù)而不需要手動(dòng)刪除原有數(shù)據(jù)庫(kù)。
格式:mysqldump -–add-drop-table -u{username} -p{password} {databasename} > {backfile.sql}
例如:
代碼如下:
1
mysqldump -–add-drop-table –uzhuchao -p123456 db_test > backfile2.sql
直接將MySQL數(shù)據(jù)庫(kù)壓縮備份
格式:mysqldump -h{hostname} -u{username} -p{password} {databasename} | gzip > {backfile.sql.gz}
例如:
代碼如下:
1
mysqldump –hlocalhost –uzhuchao –p123456 db_test1 | gzip > backfile3.sql.gz
備份MySQL數(shù)據(jù)庫(kù)某個(gè)(些)表
格式:mysqldump -h主機(jī)名 -P端口 -u用戶(hù)名 -p密碼 (–tables | –quick) 數(shù)據(jù)庫(kù)名 表名1 (表名2 …) > 文件名.sql (括號(hào)中的可缺省)。
mysqldump -h{hostname} (-P{port}) -u{user} -p{password} (–tables | –quick) {databasename} {table1} {table2} > {backfile.sql}
例如:
代碼如下:
1
2
3
4
mysqldump -hlocalhost -uzhuchao -p123456 db_test tbl_test > backfile4-1.sql
mysqldump -hlocalhost -P3306 -uzhuchao -p123456 db_test tbl_test > backfile4-2.sql
mysqldump -hlocalhost -P3306 -uzhuchao -p123456 --quick db_test tbl_test > backfile4-3.sql
mysqldump -hlocalhost -P3306 -uzhuchao -p123456 --tables db_test tbl_test1 tbl_test2 > backfile4-4.sql
同時(shí)備份多個(gè)MySQL數(shù)據(jù)庫(kù)
格式:mysqldump -h{hostname} (-P{port}) -u{username} -p{password} –databases {databasename1} {databasename2} {databasename3} > multibackfile.sql
例如:
代碼如下:
1
mysqldump -hlocalhost -uzhuchao -p123456 –databases db_test1 db_test2 db_test3 > multibackfile.sql
僅僅備份數(shù)據(jù)庫(kù)結(jié)構(gòu)
格式:mysqldump –no-data –databases {databasename1} {databasename2} > {structurebackfile.sql}
例如:
代碼如下:
1
mysqldump –no-data –databases db_test1 db_test2 > structurebackfile.sql
備份服務(wù)器上所有數(shù)據(jù)庫(kù)
格式:mysqldump –all-databases > allbackupfile.sql
========================================================================
還原MySQL數(shù)據(jù)庫(kù)的命令
格式:mysql -h{hostname} -u{username} -p{password} {databasename} < {backfile.sql}
例如:
代碼如下:
1
mysql -hlocalhost -uroot -p123456 db_test4 < back_file1.sql
還原壓縮的MySQL數(shù)據(jù)庫(kù)
格式:gunzip < {backfile.sql.gz} | mysql –u{username} –p{password} {databasename}
例如:
代碼如下:
1
gunzip < backfile.sql.gz | mysql –uzhuchao –p123456 db_test5
將數(shù)據(jù)庫(kù)轉(zhuǎn)移到新服務(wù)器
mysqldump –u{username} –p{password} {databasename} | mysql –host=*.*.*.* –C {databasename}
二、其他:
1、如果端口為默認(rèn)的3306時(shí),可省略 -P {端口號(hào)} 這一項(xiàng)。
2、命令行格式中 { } 中的內(nèi)容都是變量
主機(jī)名 : {hostname}
端 口:{port} (一般默認(rèn)3306,可缺省)
用戶(hù)名:{user} {username} (如root)
密 碼:{password}
數(shù)據(jù)庫(kù)名 :{databasename}
表 名:{table} {table1} {table2}
文件名:{backfile.sql}