程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL mysqldump命令的正確使用

MySQL mysqldump命令的正確使用

編輯:關於MYSQL數據庫

MySQL MySQLdump命令在實際中的應用比例還是占為多數的,如果你對這一技術,心存好奇的話,以下的文章將會揭開它的神秘面紗。希望會給你帶來一些幫助在以後的學習或是工作中。

1.用MySQL mysqldump對MySQL數據庫進行數據備份與恢復

下面假設要備份tm這個數據庫:

Shell>MySQLdump -uroot –p123456 tm > tm_050519.sql

這時可以利用gzip壓縮數據,命令如下:

Shell>MySQLdump -uroot -p123456 tm | gzip > tm_050519.sql.gz

恢復數據:

Shell>MySQL -uroot -p123456 tm < tm_050519.sql

從壓縮文件直接恢復:

Shell>gzip < tm_050519.sql.gz | MySQL -uroot -p123456 tm

2.關於使用MySQLdump的一些參數選項

(1)直接使用MySQL MySQLdump -uroot -pxxxx tetratest > "d:\data1.sql"

導出數據時,沒有建庫語句,這時你可以手動創建一個庫,然後使用:

MySQL -uroot -pabcd mydatabase < "d:\data1.sql",即將一個數據庫“復制”到一個不同名稱的數據庫下。同時,這種情況下,存儲過程及函數並沒有轉儲到文件中。

(2)如果你未使用--quick或者--opt選項,那麼MySQLdump將在轉儲結果之前把全部內容載入到內存中。這在你轉儲大數據量的數據庫時將會有些問題。該選項默認是打開的,但可以使用--skip-opt來關閉它。

(3)使用--skip-comments可以去掉導出文件中的注釋語句

(4)使用--compact選項可以只輸出最重要的語句,而不輸出注釋及刪除表語句等等

(5)使用--database或-B選項,可以轉儲多個數據庫,在這個選項名後的參數都被認定為數據庫名
mysqldump -uroot -paaa --database db1 db2 >"d:\mydata.sql"。同時,使用該參數會使用導出文件中增加創建庫的語句。如不帶該選項,則第二個參數將被認定為表名,即:MySQL MySQLdump -uroot -paaa my1 mytable1 >"d:\mydata.sql",將導出表mytable1的結構及數據。

(6)--tables ,在此選項之後的參數都被認定為表名。

(7)--no-create-db

(8)--no-create-info

(9)--no-data

(10)--routines, -R 將使存儲過程、函數也轉儲到文件中來。
(更多請參考MySQL手冊)

3.MySQL中的臨時表及HEAP表

給正常的CREATE TABLE語句加上TEMPORARY關鍵字:

  • CREATE TEMPORARY TABLE tmp_table (
  • name VARCHAR(10) NOT NULL,
  • value INTEGER NOT NULL
  • )

    臨時表將在你連接MySQL期間存在。當你斷開時,MySQL將自動刪除表並釋放所用的空間。當然你可以在仍然連接的時候刪除表並釋放空間。

    DROP TABLE tmp_table

    如果你聲明臨時表是一個HEAP表,MySQL也允許你指定在內存中創建它:

  • CREATE TEMPORARY TABLE tmp_table (
  • name VARCHAR(10) NOT NULL,
  • value INTEGER NOT NULL
  • ) TYPE = HEAP

    HEAP表格使用一個哈希索引並且存儲在內存中,這使他們更快,但是如果MySQL崩潰,你將失去所有存儲的數據。HEAP作為臨時表很可用!

    當你使用HEAP表時,這裡是你應該考慮的一些事情:

    你應該總是在CREATE語句中指定MAX_ROWS以保證你有意不使用所有的內存。

    索引將只能與與=和<=>一起使用(但是很快)。

    HEAP表使用一個固定的記錄長度格式。

    HEAP不支持BLOB/TEXT列。

    HEAP不支持AUTO_INCREMENT列。

    HEAP不支持在一個NULL列上的索引。

    你可以在一個HEAP表中有非唯一鍵(哈希表一般不這樣)。

    HEAP表格在所有的客戶之間被共享(就象任何其他的表)。

    HEAP表的數據以小塊分配。表是100%動態的(在插入時),無需溢出區和額外的鍵空間。刪除的行放入一個鏈接表並且當你把新數據插入到表時,它將被再次使用。

    為了釋放內存,你應該執行DELETE FROM heap_table或DROP TABLE heap_table。

    為了保證你不會偶然做些愚蠢的事情,你不能創建比max_heap_table_size大的HEAP表。

    上述的相關內容就是對MySQL MySQLdump命令的描述,希望會給你帶來一些幫助在此方面。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved