mysqldump命令導(dǎo)入導(dǎo)出數(shù)據(jù)庫方法與實(shí)例匯總
mysqldump命令的用法
1、導(dǎo)出所有庫
系統(tǒng)命令行
mysqldump -uusername -ppassword --all-databases > all.sql
2、導(dǎo)入所有庫
mysql命令行
mysql>source all.sql;
3、導(dǎo)出某些庫
系統(tǒng)命令行
mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql
4、導(dǎo)入某些庫
mysql命令行
mysql>source db1db2.sql;
5、導(dǎo)入某個庫
系統(tǒng)命令行
mysql -uusername -ppassword db1 < db1.sql;
或mysql命令行
mysql>source db1.sql;
6、導(dǎo)出某些數(shù)據(jù)表
系統(tǒng)命令行
mysqldump -uusername -ppassword db1 table1 table2 > tb1tb2.sql
7、導(dǎo)入某些數(shù)據(jù)表
系統(tǒng)命令行
mysql -uusername -ppassword db1 < tb1tb2.sql
或mysql命令行
mysql>
user db1;
source tb1tb2.sql;
8、mysqldump字符集設(shè)置
mysqldump -uusername -ppassword --default-character-set=gb2312 db1 table1 > tb1.sql
mysqldump客戶端可用來轉(zhuǎn)儲數(shù)據(jù)庫或搜集數(shù)據(jù)庫進(jìn)行備份或?qū)?shù)據(jù)轉(zhuǎn)移到另一個sql服務(wù)器(不一定是一個mysql服務(wù)器)。轉(zhuǎn)儲包含創(chuàng)建表和/或裝載表的sql語句。
如果在服務(wù)器上進(jìn)行備份,并且表均為myisam表,應(yīng)考慮使用mysqlhotcopy,因為可以更快地進(jìn)行備份和恢復(fù)。
有3種方式來調(diào)用mysqldump:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database db1 [db2 db3...]
shell> mysqldump [options] --all--database
如果沒有指定任何表或使用了---database或--all--database選項,則轉(zhuǎn)儲整個數(shù)據(jù)庫。
要想獲得你的版本的mysqldump支持的選項,執(zhí)行mysqldump ---help。
如果運(yùn)行mysqldump沒有--quick或--opt選項,mysqldump在轉(zhuǎn)儲結(jié)果前將整個結(jié)果集裝入內(nèi)存。如果轉(zhuǎn)儲大數(shù)據(jù)庫可能會出現(xiàn)問題。該選項默認(rèn)啟用,但可以用--skip-opt禁用。
如果使用最新版本的mysqldump程序生成一個轉(zhuǎn)儲重裝到很舊版本的mysql服務(wù)器中,不應(yīng)使用--opt或-e選項。
mysqldump支持下面的選項:
---help,-?
顯示幫助消息并退出。
--add-drop--database
在每個create database語句前添加drop database語句。
--add-drop-tables
在每個create table語句前添加drop table語句。
--add-locking
用lock tables和unlock tables語句引用每個表轉(zhuǎn)儲。重載轉(zhuǎn)儲文件時插入得更快。
--all--database,-a
轉(zhuǎn)儲所有數(shù)據(jù)庫中的所有表。與使用---database選項相同,在命令行中命名所有數(shù)據(jù)庫。
--allow-keywords
允許創(chuàng)建關(guān)鍵字列名。應(yīng)在每個列名前面加上表名前綴。
---comments[={0|1}]
如果設(shè)置為 0,禁止轉(zhuǎn)儲文件中的其它信息,例如程序版本、服務(wù)器版本和主機(jī)。--skip—comments與---comments=0的結(jié)果相同。 默認(rèn)值為1,即包括額外信息。
--compact
產(chǎn)生少量輸出。該選項禁用注釋并啟用--skip-add-drop-tables、--no-set-names、--skip-disable-keys和--skip-add-locking選項。
--compatible=name
產(chǎn)生與其它數(shù)據(jù)庫系統(tǒng)或舊的mysql服務(wù)器更兼容的輸出。值可以為ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options或者no_field_options。要使用幾個值,用逗號將它們隔開。這些值與設(shè)置服務(wù)器sql模式的相應(yīng)選項有相同的含義。
該選項不能保證同其它服務(wù)器之間的兼容性。它只啟用那些目前能夠使轉(zhuǎn)儲輸出更兼容的sql模式值。例如,--compatible=oracle 不映射oracle類型或使用oracle注釋語法的數(shù)據(jù)類型。
--complete-insert,-c
使用包括列名的完整的insert語句。
--compress,-c
壓縮在客戶端和服務(wù)器之間發(fā)送的所有信息(如果二者均支持壓縮)。
--create-option
在create table語句中包括所有mysql表選項。
---database,-b
轉(zhuǎn)儲幾個數(shù)據(jù)庫。通常情況,mysqldump將命令行中的第1個名字參量看作數(shù)據(jù)庫名,后面的名看作表名。使用該選項,它將所有名字參量看作數(shù)據(jù)庫名。create database if not exists db_name和use db_name語句包含在每個新數(shù)據(jù)庫前的輸出中。
---debug[=debug_options],-# [debug_options]
寫調(diào)試日志。debug_options字符串通常為'd:t:o,file_name'。
--default-character-set=charset
使用charsetas默認(rèn)字符集。如果沒有指定,mysqldump使用utf8。
--delayed-insert
使用insert delayed語句插入行。
--delete-master-logs
在主復(fù)制服務(wù)器上,完成轉(zhuǎn)儲操作后刪除二進(jìn)制日志。該選項自動啟用--master-data。
--disable-keys,-k
對于每個表,用/*!40000 alter table tbl_name disable keys */;和/*!40000 alter table tbl_name enable keys */;語句引用insert語句。這樣可以更快地裝載轉(zhuǎn)儲文件,因為在插入所有行后創(chuàng)建索引。該選項只適合myisam表。
--extended-insert,-e
使用包括幾個values列表的多行insert語法。這樣使轉(zhuǎn)儲文件更小,重載文件時可以加速插入。
--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--行-terminated-by=...
這些選項結(jié)合-t選項使用,與load data infile的相應(yīng)子句有相同的含義。
--first-slave,-x
不贊成使用,現(xiàn)在重新命名為--lock-all-tables。
--flush-logs,-f
開始轉(zhuǎn)儲前刷新mysql服務(wù)器日志文件。該選項要求reload權(quán)限。請注意如果結(jié)合--all--database(或-a)選項使用該選項,根據(jù)每個轉(zhuǎn)儲的數(shù)據(jù)庫刷新日志。例外情況是當(dāng)使用--lock-all-tables或--master-data的時候:在這種情況下,日志只刷新一次,在所有 表被鎖定后刷新。如果你想要同時轉(zhuǎn)儲和刷新日志,應(yīng)使用--flush-logs連同--lock-all-tables或--master-data。
--force,-f
在表轉(zhuǎn)儲過程中,即使出現(xiàn)sql錯誤也繼續(xù)。
--host=host_name,-h host_name
從給定主機(jī)的mysql服務(wù)器轉(zhuǎn)儲數(shù)據(jù)。默認(rèn)主機(jī)是localhost。
--hex-blob
使用十六進(jìn)制符號轉(zhuǎn)儲二進(jìn)制字符串列(例如,'abc' 變?yōu)?x616263)。影響到的列有binary、varbinary、blob。
--lock-all-tables,-x
所有數(shù)據(jù)庫中的所有表加鎖。在整體轉(zhuǎn)儲過程中通過全局讀鎖定來實(shí)現(xiàn)。該選項自動關(guān)閉--single-transaction和--lock-tables。
--lock-tables,-l
開始轉(zhuǎn)儲前鎖定所有表。用read local鎖定表以允許并行插入myisam表。對于事務(wù)表例如innodb和bdb,--single-transaction是一個更好的選項,因為它不根本需要鎖定表。
請注意當(dāng)轉(zhuǎn)儲多個數(shù)據(jù)庫時,--lock-tables分別為每個數(shù)據(jù)庫鎖定表。因此,該選項不能保證轉(zhuǎn)儲文件中的表在數(shù)據(jù)庫之間的邏輯一致性。不同數(shù)據(jù)庫表的轉(zhuǎn)儲狀態(tài)可以完全不同。
--master-data[=value]
該選項將二進(jìn)制日志的位置和文件名寫入到輸出中。該選項要求有reload權(quán)限,并且必須啟用二進(jìn)制日志。如果該選項值等于1,位置和文件名被寫入change master語句形式的轉(zhuǎn)儲輸出,如果你使用該sql轉(zhuǎn)儲主服務(wù)器以設(shè)置從服務(wù)器,從服務(wù)器從主服務(wù)器二進(jìn)制日志的正確位置開始。如果選項值等于2,change master語句被寫成sql注釋。如果value被省略,這是默認(rèn)動作。
--master-data選項啟用--lock-all-tables,除非還指定--single-transaction(在這種情況下,只在剛開始轉(zhuǎn)儲時短時間獲得全局讀鎖定。又見--single-transaction。在任何一種情況下,日志相關(guān)動作發(fā)生在轉(zhuǎn)儲時。該選項自動關(guān)閉--lock-tables。
--no-create-db,-n
該選項禁用create database /*!32312 if not exists*/ db_name語句,如果給出---database或--all--database選項,則包含到輸出中。
--no-create-info,-t
不寫重新創(chuàng)建每個轉(zhuǎn)儲表的create table語句。
--no-data,-d
不寫表的任何行信息。如果你只想轉(zhuǎn)儲表的結(jié)構(gòu)這很有用。
--opt
該選項是速記;等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以給出很快的轉(zhuǎn)儲操作并產(chǎn)生一個可以很快裝入mysql服務(wù)器的轉(zhuǎn)儲文件。該選項默認(rèn)開啟,但可以用--skip-opt禁用。要想只禁用確信用-opt啟用的選項,使用--skip形式;例如,--skip-add-drop-tables或--skip-quick。
--password[=password],-p[password]
連接服務(wù)器時使用的密碼。如果你使用短選項形式(-p),不能在選項和密碼之間有一個空格。如果在命令行中,忽略了--password或-p選項后面的 密碼值,將提示你輸入一個。
--port=port_num,-p port_num
用于連接的tcp/ip端口號。
--protocol={tcp | socket | pipe | memory}
使用的連接協(xié)議。
--quick,-q
該選項用于轉(zhuǎn)儲大的表。它強(qiáng)制mysqldump從服務(wù)器一次一行地檢索表中的行而不是檢索所有行并在輸出前將它緩存到內(nèi)存中。
--quote-names,-q
用‘`'字符引用數(shù)據(jù)庫、表和列名。如果服務(wù)器sql模式包括ansi_quotes選項,用‘"'字符引用名。默認(rèn)啟用該選項??梢杂?-skip-quote-names禁用,但該選項應(yīng)跟在其它選項后面,例如可以啟用--quote-names的--compatible。
--result-file=file,-r file
將輸出轉(zhuǎn)向給定的文件。該選項應(yīng)用在windows中,因為它禁止將新行‘\n'字符轉(zhuǎn)換為‘\r\n'回車、返回/新行序列。
--routines,-r
在轉(zhuǎn)儲的數(shù)據(jù)庫中轉(zhuǎn)儲存儲程序(函數(shù)和程序)。使用---routines產(chǎn)生的輸出包含create procedure和create function語句以重新創(chuàng)建子程序。但是,這些語句不包括屬性,例如子程序定義者或創(chuàng)建和修改時間戳。這說明當(dāng)重載子程序時,對它們進(jìn)行創(chuàng)建時定義者應(yīng)設(shè)置為重載用戶,時間戳等于重載時間。
如果你需要創(chuàng)建的子程序使用原來的定義者和時間戳屬性,不使用--routines。相反,使用一個具有mysql數(shù)據(jù)庫相應(yīng)權(quán)限的mysql賬戶直接轉(zhuǎn)儲和重載mysql.proc表的內(nèi)容。
該選項在mysql 5.1.2中添加進(jìn)來。在此之前,存儲程序不轉(zhuǎn)儲。
--set-charset
將set names default_character_set加到輸出中。該選項默認(rèn)啟用。要想禁用set names語句,使用--skip-set-charset。
--single-transaction
該選項從服務(wù)器轉(zhuǎn)儲數(shù)據(jù)之前發(fā)出一個begin sql語句。它只適用于事務(wù)表,例如innodb和bdb,因為然后它將在發(fā)出begin而沒有阻塞任何應(yīng)用程序時轉(zhuǎn)儲一致的數(shù)據(jù)庫狀態(tài)。
當(dāng)使用該選項時,應(yīng)記住只有innodb表能以一致的狀態(tài)被轉(zhuǎn)儲。例如,使用該選項時任何轉(zhuǎn)儲的myisam或heap表仍然可以更改狀態(tài)。
--single-transaction選項和--lock-tables選項是互斥的,因為lock tables會使任何掛起的事務(wù)隱含提交。
要想轉(zhuǎn)儲大的表,應(yīng)結(jié)合--quick使用該選項。
--socket=path,-s path
當(dāng)連接localhost(為默認(rèn)主機(jī))時使用的套接字文件。
--skip--comments
參見---comments選項的描述。
--tab=path,-t path
產(chǎn)生tab分割的數(shù)據(jù)文件。對于每個轉(zhuǎn)儲的表,mysqldump創(chuàng)建一個包含創(chuàng)建表的create table語句的tbl_name.sql文件,和一個包含其數(shù)據(jù)的tbl_name.txt文件。選項值為寫入文件的目錄。
默認(rèn)情況,.txt數(shù)據(jù)文件的格式是在列值和每行后面的新行之間使用tab字符??梢允褂?-fields-xxx和--行--xxx選項明顯指定格式。
注釋:該選項只適用于mysqldump與mysqld服務(wù)器在同一臺機(jī)器上運(yùn)行時。你必須具有file權(quán)限,并且服務(wù)器必須有在你指定的目錄中有寫文件的許可。
--tables
覆蓋---database或-b選項。選項后面的所有參量被看作表名。
--triggers
為每個轉(zhuǎn)儲的表轉(zhuǎn)儲觸發(fā)器。該選項默認(rèn)啟用;用--skip-triggers禁用它。
--tz-utc
在轉(zhuǎn)儲文件中加入set time_zone='+00:00'以便timestamp列可以在具有不同時區(qū)的服務(wù)器之間轉(zhuǎn)儲和重載。(不使用該選項,timestamp列在具有本地時區(qū)的源服務(wù)器和目的服務(wù)器之間轉(zhuǎn)儲和重載)。--tz-utc也可以保護(hù)由于夏令時帶來的更改。--tz-utc默認(rèn)啟用。要想禁用它,使用--skip-tz-utc。該選項在mysql 5.1.2中加入。
--user=user_name,-u user_name
連接服務(wù)器時使用的mysql用戶名。
--verbose,-v
冗長模式。打印出程序操作的詳細(xì)信息。
--version,-v
顯示版本信息并退出。
--where='where-condition', -w 'where-condition'
只轉(zhuǎn)儲給定的where條件選擇的記錄。請注意如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。
例如:
"--where=user='jimf'"
"-wuserid>1"
"-wuserid<1"
--xml,-x
將轉(zhuǎn)儲輸出寫成xml。
還可以使用--var_name=value選項設(shè)置下面的變量:
max_allowed_packet
客戶端/服務(wù)器之間通信的緩存區(qū)的最大大小。最大為1gb。
net_buffer_length
客戶端/服務(wù)器之間通信的緩存區(qū)的初始大小。當(dāng)創(chuàng)建多行插入語句時(如同使用選項--extended-insert或--opt),mysqldump創(chuàng)建長度達(dá)net_buffer_length的行。如果增加該變量,還應(yīng)確保在mysql服務(wù)器中的net_buffer_length變量至少這么大。
還可以使用--set-variable=var_name=value或-o var_name=value語法設(shè)置變量。然而,現(xiàn)在不贊成使用該語法。
mysqldump最常用于備份一個整個的數(shù)據(jù)庫:
shell> mysqldump --opt db_name > backup-file.sql
可以這樣將轉(zhuǎn)儲文件讀回到服務(wù)器:
shell> mysql db_name < backup-file.sql
或者為:
shell> mysql -e "source /path-to--backup/backup-file.sql" db_name
mysqldump也可用于從一個mysql服務(wù)器向另一個服務(wù)器復(fù)制數(shù)據(jù)時裝載數(shù)據(jù)庫:
shell> mysqldump --opt db_name | mysql --host=remote_host -c db_name
可以用一個命令轉(zhuǎn)儲幾個數(shù)據(jù)庫:
shell> mysqldump ---database db_name1 [db_name2 ...] > my_databases.sql
如果想要轉(zhuǎn)儲所有數(shù)據(jù)庫,使用--all--database選項:
shell> mysqldump --all-databases > all_databases.sql
如果表保存在innodb存儲引擎中,mysqldump提供了一種聯(lián)機(jī)備份的途徑(參見下面的命令)。該備份只需要在開始轉(zhuǎn)儲時對所有表進(jìn)行全局讀鎖定(使用flush tables with read lock)。獲得鎖定后,讀取二進(jìn)制日志的相應(yīng)內(nèi)容并將鎖釋放。因此如果并且只有當(dāng)發(fā)出flush...時正執(zhí)行一個長的更新語句,mysql服務(wù)器才停止直到長語句結(jié)束,然后轉(zhuǎn)儲則釋放鎖。因此如果mysql服務(wù)器只接收到短("短執(zhí)行時間")的更新語句,即使有大量的語句,也不會注意到鎖期間。
shell> mysqldump --all-databases --single-transaction > all_databases.sql
對于點(diǎn)對點(diǎn)恢復(fù)(也稱為“前滾”,當(dāng)你需要恢復(fù)舊的備份并重放該備份以后的更改時),循環(huán)二進(jìn)制日志或至少知道轉(zhuǎn)儲對應(yīng)的二進(jìn)制日志內(nèi)容很有用:
shell> mysqldump --all-databases --master-data=2 > all_databases.sql
或
shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql
如果表保存在innodb存儲引擎中,同時使用--master-data和--single-transaction提供了一個很方便的方式來進(jìn)行適合點(diǎn)對點(diǎn)恢復(fù)的聯(lián)機(jī)備份。
- mysql mysqldump只導(dǎo)出表結(jié)構(gòu)或只導(dǎo)出數(shù)據(jù)的實(shí)現(xiàn)方法
- MySQL mysqldump命令使用詳解
- 用mysqldump備份和恢復(fù)指定表的方法
- MySQL數(shù)據(jù)庫使用mysqldump導(dǎo)出數(shù)據(jù)詳解
- 使用MySQL MySqldump命令導(dǎo)出數(shù)據(jù)時的注意事項
- mysql mysqldump數(shù)據(jù)備份和增量備份
- 詳談mysqldump數(shù)據(jù)導(dǎo)出的問題
- MySQL之mysqldump的使用詳解
- mysqldump數(shù)據(jù)庫備份參數(shù)詳解
- MySQL邏輯備份工具mysqldump的原理剖析與實(shí)操技巧
相關(guān)文章
刪除mysql數(shù)據(jù)庫中的重復(fù)數(shù)據(jù)記錄
mysql中select distinct * from text不能顯示不重復(fù)的記錄,而是直接全部顯示2008-06-06
關(guān)于MySQL?onlinedb數(shù)據(jù)庫的一些查詢語句大全
這篇文章主要給大家介紹了關(guān)于MySQL?onlinedb數(shù)據(jù)庫的一些查詢語句,文中通過代碼實(shí)例介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考價值,需要的朋友可以參考下2023-12-12
MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has
這篇文章主要給大家介紹了MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has?failed.?You?can...錯誤的解決辦法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09

