我們來詳細(xì)的介紹一下關(guān)于在mysql中的mysqldump命令的用法,我們現(xiàn)在常用的phpmyadmin對(duì)數(shù)據(jù)的備份還原都是調(diào)用了mysqldump這個(gè)命令.
我們先來了解一下這個(gè)mysqldump的用法,mysqldump工具有大量的選項(xiàng),部分選項(xiàng)如下表:
選項(xiàng)/Option 作用/Action Performed
--add-drop-table
這個(gè)選項(xiàng)將會(huì)在每一個(gè)表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導(dǎo)回MySQL數(shù)據(jù)庫的時(shí)候不會(huì)出錯(cuò),因?yàn)槊看螌?dǎo)回的時(shí)候,都會(huì)首先檢查表是否存在,存在就刪除
--add-locks
這個(gè)選項(xiàng)會(huì)在INSERT語句中捆上一個(gè)LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導(dǎo)入數(shù)據(jù)庫時(shí)其他用戶對(duì)表進(jìn)行的操作.
-c or - complete_insert
這個(gè)選項(xiàng)使得mysqldump命令給每一個(gè)產(chǎn)生INSERT語句加上列(field)的名字。當(dāng)把數(shù)據(jù)導(dǎo)出導(dǎo)另外一個(gè)數(shù)據(jù)庫時(shí)這個(gè)選項(xiàng)很有用。
--delayed-insert 在INSERT命令中加入DELAY選項(xiàng)
-F or -flush-logs 使用這個(gè)選項(xiàng),在執(zhí)行導(dǎo)出之前將會(huì)刷新MySQL服務(wù)器的log.
-f or -force 使用這個(gè)選項(xiàng),即使有錯(cuò)誤發(fā)生,仍然繼續(xù)導(dǎo)出.
--full 這個(gè)選項(xiàng)把附加信息也加到CREATE TABLE的語句中.
-l or -lock-tables 使用這個(gè)選項(xiàng),導(dǎo)出表的時(shí)候服務(wù)器將會(huì)給表加鎖.
-t or -no-create- info
這個(gè)選項(xiàng)使的mysqldump命令不創(chuàng)建CREATE TABLE語句,這個(gè)選項(xiàng)在您只需要數(shù)據(jù)而不需要DDL(數(shù)據(jù)庫定義語句)時(shí)很方便.
-d or -no-data 這個(gè)選項(xiàng)使的mysqldump命令不創(chuàng)建INSERT語句。
在您只需要DDL語句時(shí),可以使用這個(gè)選項(xiàng).
--opt 此選項(xiàng)將打開所有會(huì)提高文件導(dǎo)出速度和創(chuàng)造一個(gè)可以更快導(dǎo)入的文件的選項(xiàng)。
-q or -quick 這個(gè)選項(xiàng)使得MySQL不會(huì)把整個(gè)導(dǎo)出的內(nèi)容讀入內(nèi)存再執(zhí)行導(dǎo)出,而是在讀到的時(shí)候就寫入導(dǎo)文件中。
-T path or -tab = path 這個(gè)選項(xiàng)將會(huì)創(chuàng)建兩個(gè)文件,一個(gè)文件包含DDL語句或者表創(chuàng)建語句,另一個(gè)文件包含數(shù)據(jù)。DDL文件被命名為table_name.sql,數(shù)據(jù)文件被命名為table_name.txt.路徑名是存放這兩個(gè)文件的目錄。目錄必須已經(jīng)存在,并且命令的使用者有對(duì)文件的特權(quán)。
-w "WHERE Clause" or -where = "Where clause "
如前面所講的,您可以使用這一選項(xiàng)來過篩選將要放到導(dǎo)出文件的數(shù)據(jù).
假定您需要為一個(gè)表單中要用到的帳號(hào)建立一個(gè)文件,經(jīng)理要看今年(2004年)所有的訂單(Orders),它們并不對(duì)DDL感興趣,并且需要文件有逗號(hào)分隔,因?yàn)檫@樣就很容易導(dǎo)入到Excel中,為了完成這個(gè)人物,您可以使用下面的句子:
- bin/mysqldump –p –where "Order_Date >='2000-01-01'" --Vevb.com
- –tab = /home/mark –no-create-info –fields-terminated-by=, Meet_A_Geek Orders
這將會(huì)得到您想要的結(jié)果.
schema:模式:
The set of statements, expressed in data definition language, that completely describe the structure of a data base.
一組以數(shù)據(jù)定義語言來表達(dá)的語句集,該語句集完整地描述了數(shù)據(jù)庫的結(jié)構(gòu)。
SELECT INTO OUTFILE:
如果您覺得mysqldump工具不夠酷,就使用SELECT INTO OUTFILE吧, MySQL同樣提供一個(gè)跟LOAD DATA INFILE命令有相反作用的命令,這就是SELECT INTO OUTFILE 命令,這兩個(gè)命令有很多的相似之處。首先,它們有所有的選項(xiàng)幾乎相同。現(xiàn)在您需要完成前面用mysqldump完成的功能
好了下面詳細(xì)的來介紹一下關(guān)于mysqldump數(shù)據(jù)備份與還原吧.
備份MySQL數(shù)據(jù)庫的命令,代碼如下:
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
備份MySQL數(shù)據(jù)庫為帶刪除表的格式,能夠讓該備份覆蓋已有數(shù)據(jù)庫而不需要手動(dòng)刪除原有數(shù)據(jù)庫,代碼如下:
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接將MySQL數(shù)據(jù)庫壓縮備份,代碼如下:
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
備份MySQL數(shù)據(jù)庫某個(gè)(些)表,代碼如下:
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同時(shí)備份多個(gè)MySQL數(shù)據(jù)庫,代碼如下:
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
僅僅備份數(shù)據(jù)庫結(jié)構(gòu),代碼如下:
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
備份服務(wù)器上所有數(shù)據(jù)庫,代碼如下:
mysqldump –all-databases > allbackupfile.sql
還原MySQL數(shù)據(jù)庫的命令,代碼如下:
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
還原壓縮的MySQL數(shù)據(jù)庫,代碼如下:
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
將數(shù)據(jù)庫轉(zhuǎn)移到新服務(wù)器,代碼如下:
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
新聞熱點(diǎn)
疑難解答
圖片精選