1.用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)直接使用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選項,可以轉儲多個數據庫,在這個選項名後的參數都被認定爲數據庫名 (6)--tables ,在此選項之後的參數都被認定爲表名。 (7)--no-create-db (8)--no-create-info (9)--no-data (10)--routines, -R 將使存儲過程、函數也轉儲到文件中來。 mysqldump支持下列選項: 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表。 4.MySQL的數據庫引擎的類型 你能用的數據庫引擎取決於mysql在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個引擎:ISAM、MYISAM和HEAP。另外兩種類型INNODB和BERKLEY(BDB),也常常可以使用。 ISAM ISAM是一個定義明確且歷經時間考驗的數據表格管理方法,它在設計之時就考慮到數據庫被查詢的次數要遠大於更新的次數。因此,ISAM執行讀取操作的速度很快,而且不佔用大量的內存和存儲資源。ISAM的兩個主要不足之處在於,它不支持事務處理,也不能夠容錯:如果你的硬盤崩潰了,那麼數據文件就無法恢復了。如果你正在把ISAM用在關鍵任務應用程序裏,那就必須經常備份你所有的實時數據,通過其複製特性,MYSQL能夠支持這樣的備份應用程序。 MYISAM MYISAM是MYSQL的ISAM擴展格式和缺省的數據庫引擎。除了提供ISAM裏所沒有的索引和字段管理的大量功能,MYISAM還使用一種表格鎖定的機制,來優化多個併發的讀寫操作。其代價是你需要經常運行OPTIMIZE TABLE命令,來恢復被更新機制所浪費的空間。MYISAM還有一些有用的擴展,例如用來修復數據庫文件的MYISAMCHK工具和用來恢復浪費空間的MYISAMPACK工具。 MYISAM強調了快速讀取操作,這可能就是爲什麼MYSQL受到了WEB開發如此青睞的主要原因:在WEB開發中你所進行的大量數據操作都是讀取操作。所以,大多數虛擬主機提供商和INTERNET平臺提供商只允許使用MYISAM格式。 HEAP HEAP允許只駐留在內存裏的臨時表格。駐留在內存裏讓HEAP要比ISAM和MYISAM都快,但是它所管理的數據是不穩定的,而且如果在關機之前沒有進行保存,那麼所有的數據都會丟失。在數據行被刪除的時候,HEAP也不會浪費大量的空間。HEAP表格在你需要使用SELECT表達式來選擇和操控數據的時候非常有用。要記住,在用完表格之後就刪除表格。 INNODB和BERKLEYDB INNODB和BERKLEYDB(BDB)數據庫引擎都是造就MYSQL靈活性的技術的直接產品,這項技術就是MYSQL++ API。在使用MYSQL的時候,你所面對的每一個挑戰幾乎都源於ISAM和MYISAM數據庫引擎不支持事務處理也不支持外來鍵。儘管要比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了對事務處理和外來鍵的支持,這兩點都是前兩個引擎所沒有的。如前所述,如果你的設計需要這些特性中的一者或者兩者,那你就要被迫使用後兩個引擎中的一個了。 |
mysqldump及相關mysql知識
mysqldump及相關mysql知識
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.