程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysqldump敕令導入導出數據庫辦法與實例匯總

mysqldump敕令導入導出數據庫辦法與實例匯總

編輯:MySQL綜合教程

mysqldump敕令導入導出數據庫辦法與實例匯總。本站提示廣大學習愛好者:(mysqldump敕令導入導出數據庫辦法與實例匯總)文章只能為提供參考,不一定能成為您想要的結果。以下是mysqldump敕令導入導出數據庫辦法與實例匯總正文


mysqldump敕令的用法

1、導出一切庫

體系敕令行

mysqldump -uusername -ppassword --all-databases > all.sql

2、導入一切庫

mysql敕令行

mysql>source all.sql;

3、導出某些庫

體系敕令行

mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql

4、導入某些庫

mysql敕令行

mysql>source db1db2.sql;

5、導入某個庫

體系敕令行

mysql -uusername -ppassword db1 < db1.sql;

或mysql敕令行

mysql>source db1.sql;

6、導出某些數據表

體系敕令行

mysqldump -uusername -ppassword db1 table1 table2 > tb1tb2.sql

7、導入某些數據表

體系敕令行

mysql -uusername -ppassword db1 < tb1tb2.sql

或mysql敕令行

mysql>
user db1;
source tb1tb2.sql;

8、mysqldump字符集設置

mysqldump -uusername -ppassword --default-character-set=gb2312 db1 table1 > tb1.sql

mysqldump客戶端可用來轉儲數據庫或匯集數據庫停止備份或將數據轉移到另外一個sql辦事器(紛歧定是一個mysql辦事器)。轉儲包括創立表和/或裝載表的sql語句。
假如在辦事器長進行備份,而且表均為myisam表,應斟酌應用mysqlhotcopy,由於可以更快地停止備份和恢復。

有3種方法來挪用mysqldump:

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database db1 [db2 db3...]
shell> mysqldump [options] --all--database

假如沒有指定任何表或應用了---database或--all--database選項,則轉儲全部數據庫。
要想取得你的版本的mysqldump支撐的選項,履行mysqldump ---help。

假如運轉mysqldump沒有--quick或--opt選項,mysqldump在轉儲成果前將全部成果集裝入內存。假如轉儲年夜數據庫能夠會湧現成績。該選項默許啟用,但可以用--skip-opt禁用。
假如應用最新版本的mysqldump法式生成一個轉儲重裝到很舊版本的mysql辦事器中,不該應用--opt或-e選項。
mysqldump支撐上面的選項:

 ---help,-?

 顯示贊助新聞並加入。

 --add-drop--database

 在每一個create database語句前添加drop database語句。

 --add-drop-tables

 在每一個create table語句前添加drop table語句。

 --add-locking

 用lock tables和unlock tables語句援用每一個表轉儲。重載轉儲文件時拔出得更快。

 --all--database,-a

 轉儲一切數據庫中的一切表。與應用---database選項雷同,在敕令行中定名一切數據庫。

 --allow-keywords

 許可創立症結字列名。應在每一個列名後面加上表名前綴。

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

 假如設置為 0,制止轉儲文件中的其它信息,例如法式版本、辦事器版本和主機。--skip—comments與---comments=0的成果雷同。 默許值為1,即包含額定信息。

 --compact

 發生大批輸入。該選項禁用正文並啟用--skip-add-drop-tables、--no-set-names、--skip-disable-keys和--skip-add-locking選項。

 --compatible=name

 發生與其它數據庫體系或舊的mysql辦事器更兼容的輸入。值可認為ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options或許no_field_options。要應用幾個值,用逗號將它們離隔。這些值與設置辦事器sql形式的響應選項有雷同的寄義。

 該選項不克不及包管同其它辦事器之間的兼容性。它只啟用那些今朝可以或許使轉儲輸入更兼容的sql形式值。例如,--compatible=oracle 不映照oracle類型或應用oracle正文語法的數據類型。

 --complete-insert,-c

 應用包含列名的完全的insert語句。

 --compress,-c

 緊縮在客戶端和辦事器之間發送的一切信息(假如兩者均支撐緊縮)。

 --create-option

 在create table語句中包含一切mysql表選項。

 ---database,-b

 轉儲幾個數據庫。平日情形,mysqldump將敕令行中的第1個名字參量看做數據庫名,前面的名看做表名。應用該選項,它將一切名字參量看做數據庫名。create database if not exists db_name和use db_name語句包括在每一個新數據庫前的輸入中。

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

 寫調試日記。debug_options字符通同常為'd:t:o,file_name'。

 --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

可以如許將轉儲文件讀回到辦事器:

shell> mysql db_name < backup-file.sql

 或許為:

shell> mysql -e "source /path-to--backup/backup-file.sql" db_name

 mysqldump也可用於從一個mysql辦事器向另外一個辦事器復制數據古裝載數據庫:
shell> mysqldump --opt db_name | mysql --host=remote_host -c db_name

 可以用一個敕令轉儲幾個數據庫:
shell> mysqldump ---database db_name1 [db_name2 ...] > my_databases.sql

 假如想要轉儲一切數據庫,應用--all--database選項:

shell> mysqldump --all-databases > all_databases.sql

假如表保留在innodb存儲引擎中,mysqldump供給了一種聯機備份的門路(拜見上面的敕令)。該備份只須要在開端轉儲時對一切表停止全局讀鎖定(應用flush tables with read lock)。取得鎖定後,讀取二進制日記的響應內容並將鎖釋放。是以假如而且只要當收回flush...時正履行一個長的更新語句,mysql辦事器才停滯直到長語句停止,然後轉儲則釋放鎖。是以假如mysql辦事器只吸收到短("短履行時光")的更新語句,即便有年夜量的語句,也不會留意到鎖時代。

shell> mysqldump --all-databases --single-transaction > all_databases.sql 

關於點對點恢復(也稱為“前滾”,當你須要恢復古的備份偏重放該備份今後的更改時),輪回二進制日記或至多曉得轉儲對應的二進制日記內容很有效:

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供給了一個很便利的方法來停止合適點對點恢復的聯機備份。

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