時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(1)
MySQL mysqldump命令在實(shí)際中的應(yīng)用比例還是占為多數(shù)的,如果你對(duì)這一技術(shù),心存好奇的話,以下的文章將會(huì)揭開它的神秘面紗。希望會(huì)給你帶來一些幫助在以后的學(xué)習(xí)或是工作中。
1.用MySQL mysqldump對(duì)MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)備份與恢復(fù)
下面假設(shè)要備份tm這個(gè)數(shù)據(jù)庫:
Shell>mysqldump -uroot –p123456 tm > tm_050519.sql
這時(shí)可以利用gzip壓縮數(shù)據(jù),命令如下:
Shell>mysqldump -uroot -p123456 tm | gzip > tm_050519.sql.gz
恢復(fù)數(shù)據(jù):
Shell>mysql -uroot -p123456 tm < tm_050519.sql
從壓縮文件直接恢復(fù):
Shell>gzip < tm_050519.sql.gz | mysql -uroot -p123456 tm
2.關(guān)于使用mysqldump的一些參數(shù)選項(xiàng)
(1)直接使用MySQL mysqldump -uroot -pxxxx tetratest > "d:\data1.sql"
導(dǎo)出數(shù)據(jù)時(shí),沒有建庫語句,這時(shí)你可以手動(dòng)創(chuàng)建一個(gè)庫,然后使用:
mysql -uroot -pabcd mydatabase < "d:\data1.sql",即將一個(gè)數(shù)據(jù)庫"復(fù)制"到一個(gè)不同名稱的數(shù)據(jù)庫下。同時(shí),這種情況下,存儲(chǔ)過程及函數(shù)并沒有轉(zhuǎn)儲(chǔ)到文件中。
(2)如果你未使用--quick或者--opt選項(xiàng),那么mysqldump將在轉(zhuǎn)儲(chǔ)結(jié)果之前把全部內(nèi)容載入到內(nèi)存中。這在你轉(zhuǎn)儲(chǔ)大數(shù)據(jù)量的數(shù)據(jù)庫時(shí)將會(huì)有些問題。該選項(xiàng)默認(rèn)是打開的,但可以使用--skip-opt來關(guān)閉它。
(3)使用--skip-comments可以去掉導(dǎo)出文件中的注釋語句
(4)使用--compact選項(xiàng)可以只輸出最重要的語句,而不輸出注釋及刪除表語句等等
(5)使用--database或-B選項(xiàng),可以轉(zhuǎn)儲(chǔ)多個(gè)數(shù)據(jù)庫,在這個(gè)選項(xiàng)名后的參數(shù)都被認(rèn)定為數(shù)據(jù)庫名
mysqldump -uroot -paaa --database db1 db2 >"d:\mydata.sql"。同時(shí),使用該參數(shù)會(huì)使用導(dǎo)出文件中增加創(chuàng)建庫的語句。如不帶該選項(xiàng),則第二個(gè)參數(shù)將被認(rèn)定為表名,即:MySQL mysqldump -uroot -paaa my1 mytable1 >"d:\mydata.sql",將導(dǎo)出表mytable1的結(jié)構(gòu)及數(shù)據(jù)。
(6)--tables ,在此選項(xiàng)之后的參數(shù)都被認(rèn)定為表名。
(7)--no-create-db
(8)--no-create-info
(9)--no-data
(10)--routines, -R 將使存儲(chǔ)過程、函數(shù)也轉(zhuǎn)儲(chǔ)到文件中來。
(更多請(qǐng)參考MySQL手冊(cè))
3.MySQL中的臨時(shí)表及HEAP表
給正常的CREATE TABLE語句加上TEMPORARY關(guān)鍵字:
- CREATE?TEMPORARY?TABLE?tmp_table?( ?
- name?VARCHAR(10)?NOT?NULL, ?
- value?INTEGER?NOT?NULL ?
- ) ?
臨時(shí)表將在你連接MySQL期間存在。當(dāng)你斷開時(shí),MySQL將自動(dòng)刪除表并釋放所用的空間。當(dāng)然你可以在仍然連接的時(shí)候刪除表并釋放空間。
DROP TABLE tmp_table
如果你聲明臨時(shí)表是一個(gè)HEAP表,MySQL也允許你指定在內(nèi)存中創(chuàng)建它:
- CREATE?TEMPORARY?TABLE?tmp_table?( ?
- name?VARCHAR(10)?NOT?NULL, ?
- value?INTEGER?NOT?NULL ?
- )?TYPE?=?HEAP?
HEAP表格使用一個(gè)哈希索引并且存儲(chǔ)在內(nèi)存中,這使他們更快,但是如果MySQL崩潰,你將失去所有存儲(chǔ)的數(shù)據(jù)。HEAP作為臨時(shí)表很可用!
當(dāng)你使用HEAP表時(shí),這里是你應(yīng)該考慮的一些事情:
你應(yīng)該總是在CREATE語句中指定MAX_ROWS以保證你有意不使用所有的內(nèi)存。
索引將只能與與=和<=>一起使用(但是很快)。
HEAP表使用一個(gè)固定的記錄長度格式。
HEAP不支持BLOB/TEXT列。
HEAP不支持AUTO_INCREMENT列。
HEAP不支持在一個(gè)NULL列上的索引。
你可以在一個(gè)HEAP表中有非唯一鍵(哈希表一般不這樣)。
HEAP表格在所有的客戶之間被共享(就象任何其他的表)。
HEAP表的數(shù)據(jù)以小塊分配。表是100%動(dòng)態(tài)的(在插入時(shí)),無需溢出區(qū)和額外的鍵空間。刪除的行放入一個(gè)鏈接表并且當(dāng)你把新數(shù)據(jù)插入到表時(shí),它將被再次使用。
為了釋放內(nèi)存,你應(yīng)該執(zhí)行DELETE FROM heap_table或DROP TABLE heap_table。
為了保證你不會(huì)偶然做些愚蠢的事情,你不能創(chuàng)建比max_heap_table_size大的HEAP表。
上述的相關(guān)內(nèi)容就是對(duì)MySQL mysqldump命令的描述,希望會(huì)給你帶來一些幫助在此方面。
關(guān)鍵詞標(biāo)簽:MySQL,mysqldump命令
相關(guān)閱讀
熱門文章 Xbox Game Pass 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié)
人氣排行 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯(cuò)誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無法啟動(dòng)、無法停止各種解決方法總結(jié) 三種常用的MySQL建表語句