国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

mysqldump參數詳細介紹

2017-06-23 11:17:29 5205

mysqldump客戶(hù)端可用來(lái)轉儲數據庫或搜集數據庫進(jìn)行備份或將數據轉移到另一個(gè)SQL服務(wù)器(不一定是一個(gè)MySQL服務(wù)器)。轉儲包含創(chuàng )建表和/或裝載表的SQL語(yǔ)句。

如果你在服務(wù)器上進(jìn)行備份,并且表均為MyISAM表,應考慮使用mysqlhotcopy,因為可以更快地進(jìn)行備份和恢復。

有3種方式來(lái)調用mysqldump:

shell> mysqldump [options] db_name [tables] shell> mysqldump [options] ---database DB1 [DB2 DB3...] shell> mysqldump [options] --all--database 如果沒(méi)有指定任何表或使用了---database或--all--database選項,則轉儲整個(gè)數據庫。

要想獲得你的版本的mysqldump支持的選項,執行mysqldump ---help。

如果運行mysqldump沒(méi)有--quick或--opt選項,mysqldump在轉儲結果前將整個(gè)結果集裝入內存。如果轉儲大數據庫可能會(huì )出現問(wèn)題。該選項默認啟用,但可以用--skip-opt禁用。

如果使用最新版本的mysqldump程序生成一個(gè)轉儲重裝到很舊版本的MySQL服務(wù)器中,不應使用--opt或-e選項。

mysqldump支持下面的選項:

·         ---help,-?

顯示幫助消息并退出。

·         --add-drop--database

在每個(gè)CREATE DATABASE語(yǔ)句前添加DROP DATABASE語(yǔ)句。

·         --add-drop-tables

在每個(gè)CREATE TABLE語(yǔ)句前添加DROP TABLE語(yǔ)句。

·         --add-locking

用LOCK TABLES和UNLOCK TABLES語(yǔ)句引用每個(gè)表轉儲。重載轉儲文件時(shí)插入得更快。

·         --all--database,-A

轉儲所有數據庫中的所有表。與使用---database選項相同,在命令行中命名所有數據庫。

·         --allow-keywords

允許創(chuàng )建關(guān)鍵字列名。應在每個(gè)列名前面加上表名前綴。

·         ---comments[={0|1}]

如果設置為 0,禁止轉儲文件中的其它信息,例如程序版本、服務(wù)器版本和主機。--skip—comments與---comments=0的結果相同。 默認值為1,即包括額外信息。

·         --compact

產(chǎn)生少量輸出。該選項禁用注釋并啟用--skip-add-drop-tables、--no-set-names、--skip-disable-keys和--skip-add-locking選項。

·         --compatible=name

產(chǎn)生與其它數據庫系統或舊的MySQL服務(wù)器更兼容的輸出。值可以為ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options或者no_field_options。要使用幾個(gè)值,用逗號將它們隔開(kāi)。這些值與設置服務(wù)器SQL模式的相應選項有相同的含義。

該選項不能保證同其它服務(wù)器之間的兼容性。它只啟用那些目前能夠使轉儲輸出更兼容的SQL模式值。例如,--compatible=oracle 不映射Oracle類(lèi)型或使用Oracle注釋語(yǔ)法的數據類(lèi)型。

·         --complete-insert,-c

使用包括列名的完整的INSERT語(yǔ)句。

·         --compress,-C

壓縮在客戶(hù)端和服務(wù)器之間發(fā)送的所有信息(如果二者均支持壓縮)。

·         --create-option

在CREATE TABLE語(yǔ)句中包括所有MySQL表選項。

·         ---database,-B

轉儲幾個(gè)數據庫。通常情況,mysqldump將命令行中的第1個(gè)名字參量看作數據庫名,后面的名看作表名。使用該選項,它將所有名字參量看作數據庫名。CREATE DATABASE IF NOT EXISTS db_name和USE db_name語(yǔ)句包含在每個(gè)新數據庫前的輸出中。

·         ---debug[=debug_options],-# [debug_options]

寫(xiě)調試日志。debug_options字符串通常為'd:t:o,file_name'。

·         --default-character-set=charset

使用charsetas默認字符集。如果沒(méi)有指定,mysqldump使用utf8。

·         --delayed-insert

使用INSERT DELAYED語(yǔ)句插入行。

·         --delete-master-logs

在主復制服務(wù)器上,完成轉儲操作后刪除二進(jìn)制日志。該選項自動(dòng)啟用--master-data。

·         --disable-keys,-K

對于每個(gè)表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;語(yǔ)句引用INSERT語(yǔ)句。這樣可以更快地裝載轉儲文件,因為在插入所有行后創(chuàng )建索引。該選項只適合MyISAM表。

·         --extended-insert,-e

使用包括幾個(gè)VALUES列表的多行INSERT語(yǔ)法。這樣使轉儲文件更小,重載文件時(shí)可以加速插入。

·         --fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--行-terminated-by=...

這些選項結合-T選項使用,與LOAD DATA INFILE的相應子句有相同的含義。

·         --first-slave,-x

不贊成使用,現在重新命名為--lock-all-tables。

·         --flush-logs,-F

開(kāi)始轉儲前刷新MySQL服務(wù)器日志文件。該選項要求RELOAD權限。請注意如果結合--all--database(或-A)選項使用該選項,根據每個(gè)轉儲的數據庫刷新日志。例外情況是當使用--lock-all-tables或--master-data的時(shí)候:在這種情況下,日志只刷新一次,在所有 表被鎖定后刷新。如果你想要同時(shí)轉儲和刷新日志,應使用--flush-logs連同--lock-all-tables或--master-data。

·         --force,-f

在表轉儲過(guò)程中,即使出現SQL錯誤也繼續。

·         --host=host_name,-h host_name

從給定主機的MySQL服務(wù)器轉儲數據。默認主機是localhost。

·         --hex-blob

使用十六進(jìn)制符號轉儲二進(jìn)制字符串列(例如,'abc' 變?yōu)?x616263)。影響到的列有BINARY、VARBINARY、BLOB。

·         --lock-all-tables,-x

所有數據庫中的所有表加鎖。在整體轉儲過(guò)程中通過(guò)全局讀鎖定來(lái)實(shí)現。該選項自動(dòng)關(guān)閉--single-transaction和--lock-tables。

·         --lock-tables,-l

開(kāi)始轉儲前鎖定所有表。用READ LOCAL鎖定表以允許并行插入MyISAM表。對于事務(wù)表例如InnoDB和BDB,--single-transaction是一個(gè)更好的選項,因為它不根本需要鎖定表。

請注意當轉儲多個(gè)數據庫時(shí),--lock-tables分別為每個(gè)數據庫鎖定表。因此,該選項不能保證轉儲文件中的表在數據庫之間的邏輯一致性。不同數據庫表的轉儲狀態(tài)可以完全不同。

·         --master-data[=value]

該選項將二進(jìn)制日志的位置和文件名寫(xiě)入到輸出中。該選項要求有RELOAD權限,并且必須啟用二進(jìn)制日志。如果該選項值等于1,位置和文件名被寫(xiě)入CHANGE MASTER語(yǔ)句形式的轉儲輸出,如果你使用該SQL轉儲主服務(wù)器以設置從服務(wù)器,從服務(wù)器從主服務(wù)器二進(jìn)制日志的正確位置開(kāi)始。如果選項值等于2,CHANGE MASTER語(yǔ)句被寫(xiě)成SQL注釋。如果value被省略,這是默認動(dòng)作。

--master-data選項啟用--lock-all-tables,除非還指定--single-transaction(在這種情況下,只在剛開(kāi)始轉儲時(shí)短時(shí)間獲得全局讀鎖定。又見(jiàn)--single-transaction。在任何一種情況下,日志相關(guān)動(dòng)作發(fā)生在轉儲時(shí)。該選項自動(dòng)關(guān)閉--lock-tables。

·         --no-create-db,-n

該選項禁用CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name語(yǔ)句,如果給出---database或--all--database選項,則包含到輸出中。

·         --no-create-info,-t

不寫(xiě)重新創(chuàng )建每個(gè)轉儲表的CREATE TABLE語(yǔ)句。

·         --no-data,-d

不寫(xiě)表的任何行信息。如果你只想轉儲表的結構這很有用。

·         --opt

該選項是速記;等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以給出很快的轉儲操作并產(chǎn)生一個(gè)可以很快裝入MySQL服務(wù)器的轉儲文件。該選項默認開(kāi)啟,但可以用--skip-opt禁用。要想只禁用確信用-opt啟用的選項,使用--skip形式;例如,--skip-add-drop-tables或--skip-quick。

·         --password[=password],-p[password]

連接服務(wù)器時(shí)使用的密碼。如果你使用短選項形式(-p),不能在選項和密碼之間有一個(gè)空格。如果在命令行中,忽略了--password或-p選項后面的 密碼值,將提示你輸入一個(gè)。

·         --port=port_num,-P port_num

用于連接的TCP/IP端口號。

·         --protocol={TCP | SOCKET | PIPE | MEMORY}

使用的連接協(xié)議。

·         --quick,-q

該選項用于轉儲大的表。它強制mysqldump從服務(wù)器一次一行地檢索表中的行而不是檢索所有行并在輸出前將它緩存到內存中。

·         --quote-names,-Q

用‘`’字符引用數據庫、表和列名。如果服務(wù)器SQL模式包括ANSI_QUOTES選項,用‘"’字符引用名。默認啟用該選項??梢杂?-skip-quote-names禁用,但該選項應跟在其它選項后面,例如可以啟用--quote-names的--compatible。

·         --result-file=file,-r file

將輸出轉向給定的文件。該選項應用在Windows中,因為它禁止將新行‘\n’字符轉換為‘\r\n’回車(chē)、返回/新行序列。

·         --routines,-R

在轉儲的數據庫中轉儲存儲程序(函數和程序)。使用---routines產(chǎn)生的輸出包含CREATE PROCEDURE和CREATE FUNCTION語(yǔ)句以重新創(chuàng )建子程序。但是,這些語(yǔ)句不包括屬性,例如子程序定義者或創(chuàng )建和修改時(shí)間戳。這說(shuō)明當重載子程序時(shí),對它們進(jìn)行創(chuàng )建時(shí)定義者應設置為重載用戶(hù),時(shí)間戳等于重載時(shí)間。

如果你需要創(chuàng )建的子程序使用原來(lái)的定義者和時(shí)間戳屬性,不使用--routines。相反,使用一個(gè)具有mysql數據庫相應權限的MySQL賬戶(hù)直接轉儲和重載mysql.proc表的內容。

該選項在MySQL 5.1.2中添加進(jìn)來(lái)。在此之前,存儲程序不轉儲。

·         --set-charset

將SET NAMES default_character_set加到輸出中。該選項默認啟用。要想禁用SET NAMES語(yǔ)句,使用--skip-set-charset。

·         --single-transaction

該選項從服務(wù)器轉儲數據之前發(fā)出一個(gè)BEGIN SQL語(yǔ)句。它只適用于事務(wù)表,例如InnoDB和BDB,因為然后它將在發(fā)出BEGIN而沒(méi)有阻塞任何應用程序時(shí)轉儲一致的數據庫狀態(tài)。

當使用該選項時(shí),應記住只有InnoDB表能以一致的狀態(tài)被轉儲。例如,使用該選項時(shí)任何轉儲的MyISAM或HEAP表仍然可以更改狀態(tài)。

--single-transaction選項和--lock-tables選項是互斥的,因為L(cháng)OCK TABLES會(huì )使任何掛起的事務(wù)隱含提交。

要想轉儲大的表,應結合--quick使用該選項。

·         --socket=path,-S path

當連接localhost(為默認主機)時(shí)使用的套接字文件。

·         --skip--comments

參見(jiàn)---comments選項的描述。

·         --tab=path,-T path

產(chǎn)生tab分割的數據文件。對于每個(gè)轉儲的表,mysqldump創(chuàng )建一個(gè)包含創(chuàng )建表的CREATE TABLE語(yǔ)句的tbl_name.sql文件,和一個(gè)包含其數據的tbl_name.txt文件。選項值為寫(xiě)入文件的目錄。

默認情況,.txt數據文件的格式是在列值和每行后面的新行之間使用tab字符??梢允褂?-fields-xxx和--行--xxx選項明顯指定格式。

注釋?zhuān)涸撨x項只適用于mysqldump與mysqld服務(wù)器在同一臺機器上運行時(shí)。你必須具有FILE權限,并且服務(wù)器必須有在你指定的目錄中有寫(xiě)文件的許可。

·         --tables

覆蓋---database或-B選項。選項后面的所有參量被看作表名。

·         --triggers

為每個(gè)轉儲的表轉儲觸發(fā)器。該選項默認啟用;用--skip-triggers禁用它。

·         --tz-utc

在轉儲文件中加入SET TIME_ZONE='+00:00'以便TIMESTAMP列可以在具有不同時(shí)區的服務(wù)器之間轉儲和重載。(不使用該選項,TIMESTAMP列在具有本地時(shí)區的源服務(wù)器和目的服務(wù)器之間轉儲和重載)。--tz-utc也可以保護由于夏令時(shí)帶來(lái)的更改。--tz-utc默認啟用。要想禁用它,使用--skip-tz-utc。該選項在MySQL 5.1.2中加入。

·         --user=user_name,-u user_name

連接服務(wù)器時(shí)使用的MySQL用戶(hù)名。

·         --verbose,-v

冗長(cháng)模式。打印出程序操作的詳細信息。

·         --version,-V

顯示版本信息并退出。

·         --where='where-condition', -w 'where-condition'

只轉儲給定的WHERE條件選擇的記錄。請注意如果條件包含命令解釋符專(zhuān)用空格或字符,一定要將條件引用起來(lái)。

例如:

"--where=user='jimf'" "-wuserid>1" "-wuserid<1" ·         --xml,-X

將轉儲輸出寫(xiě)成XML。

還可以使用--var_name=value選項設置下面的變量:

·         max_allowed_packet

客戶(hù)端/服務(wù)器之間通信的緩存區的最大大小。最大為1GB。

·         net_buffer_length

客戶(hù)端/服務(wù)器之間通信的緩存區的初始大小。當創(chuàng )建多行插入語(yǔ)句時(shí)(如同使用選項--extended-insert或--opt),mysqldump創(chuàng )建長(cháng)度達net_buffer_length的行。如果增加該變量,還應確保在MySQL服務(wù)器中的net_buffer_length變量至少這么大。

還可以使用--set-variable=var_name=value或-O var_name=value語(yǔ)法設置變量。然而,現在不贊成使用該語(yǔ)法。

mysqldump最常用于備份一個(gè)整個(gè)的數據庫:

shell> mysqldump --opt db_name > backup-file.sql 你可以這樣將轉儲文件讀回到服務(wù)器:

shell> mysql db_name < backup-file.sql 或者為:

shell> mysql -e "source /path-to--backup/backup-file.sql" db_name mysqldump也可用于從一個(gè)MySQL服務(wù)器向另一個(gè)服務(wù)器復制數據時(shí)裝載數據庫:

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name 可以用一個(gè)命令轉儲幾個(gè)數據庫:

shell> mysqldump ---database db_name1 [db_name2 ...] > my_databases.sql 如果你想要轉儲所有數據庫,使用--all--database選項:

shell> mysqldump --all-databases > all_databases.sql 如果表保存在InnoDB存儲引擎中,mysqldump提供了一種聯(lián)機備份的途徑(參見(jiàn)下面的命令)。該備份只需要在開(kāi)始轉儲時(shí)對所有表進(jìn)行全局讀鎖定(使用FLUSH TABLES WITH READ LOCK)。獲得鎖定后,讀取二進(jìn)制日志的相應內容并將鎖釋放。因此如果并且只有當發(fā)出FLUSH...時(shí)正執行一個(gè)長(cháng)的更新語(yǔ)句,MySQL服務(wù)器才停止直到長(cháng)語(yǔ)句結束,然后轉儲則釋放鎖。因此如果MySQL服務(wù)器只接收到短("短執行時(shí)間")的更新語(yǔ)句,即使有大量的語(yǔ)句,也不會(huì )注意到鎖期間。

shell> mysqldump --all-databases --single-transaction > all_databases.sql 對于點(diǎn)對點(diǎn)恢復(也稱(chēng)為“前滾”,當你需要恢復舊的備份并重放該備份以后的更改時(shí)),循環(huán)二進(jìn)制日志或至少知道轉儲對應的二進(jìn)制日志內容很有用:

shell> mysqldump --all-databases --master-data=2 > all_databases.sql 或 shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql 如果表保存在InnoDB存儲引擎中,同時(shí)使用--master-data和--single-transaction提供了一個(gè)很方便的方式來(lái)進(jìn)行適合點(diǎn)對點(diǎn)恢復的聯(lián)機備份。


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->