語法:mysql
1. mysqldump [options] -all-databaseslinux
2. mysqldump [options] --databases database [database ...]sql
3. mysqldump [options] database [table]shell
mysqldump能夠導出mysql中的數據和表結構。一般可使用該實用工具有份數據庫或將數據庫從一個服務器複製到另外一個服務器。你能夠在處於運行狀態的服務器上執行該工具。若要保持表間數據的一致性,須要給表加鎖(參見 --lock-tables選項)或關閉mysqld後臺。數據庫
該工具備三種語法形式。第一種語法用於備份服務器上全部的數據庫。第二種語法用於備份指定數據庫中全部的表。第三種語法用於備份指定數據庫的指定表。服務器
下面給出第一種語法的示例,對服務器上全部數據庫進行備份(在linux的命令行下並非mysql的命令行執行命令,使用mysql的root賬號)。工具
$ mysqldump --host=russell.dyerhouse.com --user=russell --password --lock-tables --all-databases > /tmp/workrequests.sql
若是備份操做是在遠程服務器上進行(例如:不是本機),則需使用--host選項指定主機的域名地址,也能夠用IP地址替代域名。只有主機授予用戶russell必要的權限,而且mysqldump正在主機上運行時,遠程備份數據的操做才能實現。命令行
要備份指定的數據庫,可使用mysqldump的第二種語法。在命令行輸入下列內容:code
$ mysqldump -u russell -p --lock-tables workrequests > /tmp/wokrequests.sql
在此示例中,使用-u選項指定用戶名。-p選項能夠告知實用工具提示用戶輸入密碼。這些短格式選項可同詳細格式選項相互替換,可是詳細格式選項已經漸漸成爲標準,所以建議使用詳細格式選項。--lock-tables選項能夠令服務器鎖定表,當備份操做結束後爲表解鎖。下一步,指定須要備份的數據庫(workrequests)。最後使用重定向(大於標記)將備份結果存放到指定的文件中。ip
--lock-tables選項一般不是必需的,由於--opt是默認選項,它包含了對錶的鎖定操做。事實上,若是正在作備份操做的用戶不具有LOCK TABLES權限,則運行mysqldump時會收到出錯信息,這就是由於--opt對錶進行了鎖定。這種狀況下,須要使用--skip-opt選項使用--opt失效,這樣就不會對錶進行鎖定了。
若是你想備份指定的表而不是整個數據庫,則可使用第三種語法。語法並不複雜:只需在數據庫名後指定一個或多個表名。示例:
$ mysqldump -u russell -p workrequests work_req clients > /tmp/workreq_clients_tables.sql
mysqldump建立的備份文件是文本文件格式。文件通常包含一個CREATE TABLE語句,該語句用於建立數據庫中的表。若是你想省略CREATE TABLE語句,能夠爲mysqldump添加 --no-create-info(也就是簡寫的 -t 選項) 選項,這樣作就是隻導出數據,示例:
$ mysqldump -u russell -p -t workrequests work_req clients > /tmp/workreq_clients_tables.sql
若是隻導出表結構,可使用 --no-data選項(也就是簡寫的 -d 選項):
$ mysqldump -u russell -p -d workrequests work_req clients > /tmp/workreq_clients_tables.sql
使用mysql客戶機能夠從mysqldump建立的備份文件中恢復數據。你能夠在命令行輸入以下內容,恢復前面語句建立的備份文件(其實只要是外部sql文件均可以這樣執行):
$ mysql -u russell -p workrequests < /tmp/workrequests.sql
示例中經過小於號標記重定向stdin。這樣能夠令mysql客戶機從指定的文件獲取數據。接下來mysql客戶機會按照順序執行備份文件中的SQL語句。執行的過程當中不用切換到監視器模式,能夠一直保持在命令行狀態下直到全部語句執行結束爲止。
示例總結
導出整個數據庫(表結構與數據,-u表示用戶名選項,-p表示密碼選項,若是是遠程,還有-h表示主機):
$ mysqldump -u root -p openscanner > ~/openscanner.sql
導出整個數據庫的表結構(-d選項,全稱爲--no-data選項,表示不導出數據):
$ mysqldump -u root -p -d openscanner > ~/openscanner.sql
導出整個數據庫的數據(不導表結構,選項爲-t,全稱爲 --no-create-info,表示不導出表結構):
$ mysqldump -u root -p -t openscanner > ~/openscanner.sql
導出某兩張表:
$ mysqldump -u root -p openscanner wwos_sys_resource wwos_sys_user > ~/openscanner.sql
導出某兩張表的表結構:
$ mysqldump -u root -p -d openscanner wwos_sys_resource wwos_sys_user > ~/openscanner.sql
導出某兩張表的數據:
$ mysqldump -u root -p -t openscanner wwos_sys_resource wwos_sys_user > ~/openscanner.sql
mysqldump的更多參數請查看文檔!!!