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