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

MySQL數據庫應用mysqldump導出數據詳解

編輯:MySQL綜合教程

MySQL數據庫應用mysqldump導出數據詳解。本站提示廣大學習愛好者:(MySQL數據庫應用mysqldump導出數據詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據庫應用mysqldump導出數據詳解正文


mysqldump是mysql用於轉存儲數據庫的客戶端法式。它重要發生一系列的SQL語句,可以封裝到文件,該文件包括有一切重建您的數據庫所須要的 SQL敕令如CREATE DATABASE,CREATE TABLE,INSERT等等。可以用來完成輕量級的疾速遷徙或恢單數據庫。是mysql數據庫完成邏輯備份的一種方法。

在平常保護任務傍邊常常會須要對數據停止導出操作,而mysqldump是導出數據進程中應用異常頻仍的一個對象;它自帶的功效參數異常多,文章中會羅列出一些經常使用的操作,在文章末尾會將一切的參數具體解釋列出來。

語法:

默許不帶參數的導出,導出文本內容年夜概以下:創立數據庫斷定語句-刪除表-創立表-鎖表-禁用索引-拔出數據-啟用索引-解鎖表。

Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS] 

拔出測試數據

CREATE DATABASE db1 DEFAULT CHARSET utf8;
USE db1;
CREATE TABLE a1(id int);
insert into a1() values(1),(2);
CREATE TABLE a2(id int);
insert into a2() values(2);
CREATE TABLE a3(id int);
insert into a3() values(3);
CREATE DATABASE db2 DEFAULT CHARSET utf8;
USE db2;
CREATE TABLE b1(id int);
insert into b1() values(1);
CREATE TABLE b2(id int);
insert into b2() values(2); 

1.導出一切數據庫

該敕令會導出包含體系數據庫在內的一切數據庫

mysqldump -uroot -proot --all-databases >/tmp/all.sql 

2.導出db1、db2兩個數據庫的一切數據

mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql 

3.導出db1中的a1、a2表

留意導出指定表只能針對一個數據庫停止導出,且導出的內容中和導出數據庫也紛歧樣,導出指定表的導出文本中沒有創立數據庫的斷定語句,只要刪除表-創立表-導入數據

mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql 

4.前提導出,導出db1表a1中id=1的數據

前提導出只能導出單個表

mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql 

5.生成新的binlog文件,-F

有時刻會願望導出數據以後生成一個新的binlog文件,只須要加上-F參數便可

mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql 

6.只導出表構造不導出數據,--no-data

mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql 

7.跨辦事器導出導入數據

mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2

將h1辦事器中的db1數據庫的一切數據導入到h2中的db2數據庫中,db2的數據庫必需存在不然會報錯

mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
加上-C參數可以啟用緊縮傳遞。

8.將主庫的binlog地位和文件名追加到導出數據的文件中,--dump-slave

該參數在在從辦事器上履行,相當於履行show slave status。當設置為1時,將會以CHANGE MASTER敕令輸入到數據文件;設置為2時,會在change前加上正文。

該選項將會翻開--lock-all-tables,除非--single-transaction被指定。

在履行完後會主動封閉--lock-tables選項。--dump-slave默許是1

mysqldump -uroot -proot --dump-slave=1 --database db1 >/tmp/db1.sql 

mysqldump -uroot -proot --dump-slave=2 --database db1 >/tmp/db1.sql 

9.將以後辦事器的binlog的地位和文件名追加到輸入文件,--master-data

改參數和--dump-slave辦法一樣,只是它是記載的是以後辦事器的binlog,相當於履行show master status。

10--opt

同等於--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項默許開啟, 可以用--skip-opt禁用.

mysqldump -uroot -p --host=localhost --all-databases --opt 

11包管導出的分歧性狀況--single-transaction

該選項在導出數據之條件交一個BEGIN SQL語句,BEGIN 不會壅塞任何運用法式且能包管導出時數據庫的分歧性狀況。它只實用於多版本存儲引擎(它不顯示加鎖經由過程斷定版原來比較數據),僅InnoDB。本選項和--lock-tables 選項是互斥的,由於LOCK TABLES 會使任何掛起的事務隱含提交。要想導出年夜表的話,應聯合應用--quick 選項。

--quick, -q

不緩沖查詢,直接導出到尺度輸入。默許為翻開狀況,應用--skip-quick撤消該選項。

12--lock-tables, -l

開端導出前,鎖定一切表。用READ LOCAL鎖定表以許可MyISAM表並行拔出。關於支撐事務的表例如InnoDB和BDB,--single-transaction是一個更好的選擇,由於它基本不須要鎖定表。

請留意當導出多個數據庫時,--lock-tables分離為每一個數據庫鎖定表。是以,該選項不克不及包管導出文件中的表在數據庫之間的邏輯分歧性。分歧數據庫表的導出狀況可以完整分歧。

13導出存儲進程和自界說函數--routines, -R

mysqldump -uroot -p --host=localhost --all-databases --routines 

參數解釋:

--all-databases , -A
導出全體數據庫。
mysqldump -uroot -p --all-databases
--all-tablespaces , -Y
導出全體表空間。
mysqldump -uroot -p --all-databases --all-tablespaces
--no-tablespaces , -y
不導出任何表空間信息。
mysqldump -uroot -p --all-databases --no-tablespaces
--add-drop-database
每一個數據庫創立之前添加drop數據庫語句。
mysqldump -uroot -p --all-databases --add-drop-database
--add-drop-table
每一個數據表創立之前添加drop數據表語句。(默許為翻開狀況,應用--skip-add-drop-table撤消選項)
mysqldump -uroot -p --all-databases (默許添加drop語句)
mysqldump -uroot -p --all-databases –skip-add-drop-table (撤消drop語句)
--add-locks
在每一個表導出之前增長LOCK TABLES而且以後UNLOCK TABLE。(默許為翻開狀況,應用--skip-add-locks撤消選項)
mysqldump -uroot -p --all-databases (默許添加LOCK語句)
mysqldump -uroot -p --all-databases –skip-add-locks (撤消LOCK語句)
--allow-keywords
許可創立是症結詞的列名字。這由表名前綴於每一個列名做到。
mysqldump -uroot -p --all-databases --allow-keywords
--apply-slave-statements
在'CHANGE MASTER'前添加'STOP SLAVE',而且在導出的最初添加'START SLAVE'。
mysqldump -uroot -p --all-databases --apply-slave-statements
--character-sets-dir
字符集文件的目次
mysqldump -uroot -p --all-databases --character-sets-dir=/usr/local/mysql/share/mysql/charsets
--comments
附加正文信息。默許為翻開,可以用--skip-comments撤消
mysqldump -uroot -p --all-databases (默許記載正文)
mysqldump -uroot -p --all-databases --skip-comments (撤消正文)
--compatible
導出的數據將和其它數據庫或舊版本的MySQL 相兼容。值可認為ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,
要應用幾個值,用逗號將它們離隔。它其實不包管能完整兼容,而是盡可能兼容。
mysqldump -uroot -p --all-databases --compatible=ansi
--compact
導出更少的輸入信息(用於調試)。去失落正文和頭尾等構造。可使用選項:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys
mysqldump -uroot -p --all-databases --compact
--complete-insert, -c
應用完全的insert語句(包括列稱號)。這麼做能進步拔出效力,然則能夠會遭到max_allowed_packet參數的影響而招致拔出掉敗。
mysqldump -uroot -p --all-databases --complete-insert
--compress, -C
在客戶端和辦事器之間啟用緊縮傳遞一切信息
mysqldump -uroot -p --all-databases --compress
--create-options, -a
在CREATE TABLE語句中包含一切MySQL特征選項。(默許為翻開狀況)
mysqldump -uroot -p --all-databases
--databases, -B
導出幾個數據庫。參數前面一切名字參量都被看做數據庫名。
mysqldump -uroot -p --databases test mysql
--debug
輸入debug信息,用於調試。默許值為:d:t,/tmp/mysqldump.trace
mysqldump -uroot -p --all-databases --debug
mysqldump -uroot -p --all-databases --debug=” d:t,/tmp/debug.trace”
--debug-check
檢討內存和翻開文件應用解釋並加入。
mysqldump -uroot -p --all-databases --debug-check
--debug-info
輸入調試信息並加入
mysqldump -uroot -p --all-databases --debug-info
--default-character-set
設置默許字符集,默許值為utf8
mysqldump -uroot -p --all-databases --default-character-set=utf8
--delayed-insert
采取延時拔出方法(INSERT DELAYED)導出數據
mysqldump -uroot -p --all-databases --delayed-insert
--delete-master-logs
master備份後刪除日記. 這個參數將主動激活--master-data。
mysqldump -uroot -p --all-databases --delete-master-logs
--disable-keys
關於每一個表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;語句援用INSERT語句。如許可以更快地導入dump出來的文件,由於它是在拔出一切行後創立索引的。該選項只合適MyISAM表,默許為翻開狀況。
mysqldump -uroot -p --all-databases 
--dump-slave
該選項將主的binlog地位和文件名追加到導出數據的文件中(show slave status)。設置為1時,將會以CHANGE MASTER敕令輸入到數據文件;設置為2時,會在change前加上正文。該選項將會翻開--lock-all-tables,除非--single-transaction被指定。該選項會主動封閉--lock-tables選項。默許值為0。
mysqldump -uroot -p --all-databases --dump-slave=1
mysqldump -uroot -p --all-databases --dump-slave=2 --master-data
該選項將以後辦事器的binlog的地位和文件名追加到輸入文件中(show master status)。假如為1,將會輸入CHANGE MASTER 敕令;假如為2,輸入的CHANGE MASTER敕令前添加正文信息。該選項將翻開--lock-all-tables 選項,除非--single-transaction也被指定(在這類情形下,全局讀鎖在開端導出時取得很短的時光;其他內容參考上面的--single-transaction選項)。該選項主動封閉--lock-tables選項。
mysqldump -uroot -p --host=localhost --all-databases --master-data=1;
mysqldump -uroot -p --host=localhost --all-databases --master-data=2; --events, -E
導失事件。
mysqldump -uroot -p --all-databases --events
--extended-insert, -e
應用具有多個VALUES列的INSERT語法。如許使導出文件更小,並加快導入時的速度。默許為翻開狀況,應用--skip-extended-insert撤消選項。
mysqldump -uroot -p --all-databases
mysqldump -uroot -p --all-databases--skip-extended-insert (撤消選項)
--fields-terminated-by
導出文件中疏忽給定字段。與--tab選項一路應用,不克不及用於--databases和--all-databases選項
mysqldump -uroot -p test test --tab=”/home/mysql” --fields-terminated-by=”#”
--fields-enclosed-by
輸入文件中的各個字段用給定字符包裹。與--tab選項一路應用,不克不及用於--databases和--all-databases選項
mysqldump -uroot -p test test --tab=”/home/mysql” --fields-enclosed-by=”#”
--fields-optionally-enclosed-by
輸入文件中的各個字段用給定字符選擇性包裹。與--tab選項一路應用,不克不及用於--databases和--all-databases選項
mysqldump -uroot -p test test --tab=”/home/mysql” --fields-enclosed-by=”#” --fields-optionally-enclosed-by =”#”
--fields-escaped-by
輸入文件中的各個字段疏忽給定字符。與--tab選項一路應用,不克不及用於--databases和--all-databases選項
mysqldump -uroot -p mysql user --tab=”/home/mysql” --fields-escaped-by=”#”
--flush-logs
開端導出之前刷新日記。
請留意:假設一次導出多個數據庫(應用選項--databases或許--all-databases),將會逐一數據庫刷新日記。除應用--lock-all-tables或許--master-data外。在這類情形下,日記將會被刷新一次,響應的所以表同時被鎖定。是以,假如盤算同時導出和刷新日記應當應用--lock-all-tables 或許--master-data 和--flush-logs。
mysqldump -uroot -p --all-databases --flush-logs
--flush-privileges
在導出mysql數據庫以後,收回一條FLUSH PRIVILEGES 語句。為了准確恢復,該選項應當用於導出mysql數據庫和依附mysql數據庫數據的任什麼時候候。
mysqldump -uroot -p --all-databases --flush-privileges
--force
在導出進程中疏忽湧現的SQL毛病。
mysqldump -uroot -p --all-databases --force
--help
顯示贊助信息並加入。
mysqldump --help
--hex-blob
應用十六進制格局導出二進制字符串字段。假如有二進制數據就必需應用該選項。影響到的字段類型有BINARY、VARBINARY、BLOB。
mysqldump -uroot -p --all-databases --hex-blob
--host, -h
須要導出的主機信息
mysqldump -uroot -p --host=localhost --all-databases
--ignore-table
不導出指定表。指定疏忽多個表時,須要反復屢次,每次一個表。每一個表必需同時指定命據庫和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
mysqldump -uroot -p --host=localhost --all-databases --ignore-table=mysql.user
--include-master-host-port
在--dump-slave發生的'CHANGE MASTER TO..'語句中增長'MASTER_HOST=<host>,MASTER_PORT=<port>' 
mysqldump -uroot -p --host=localhost --all-databases --include-master-host-port
--insert-ignore
在拔出行時應用INSERT IGNORE語句.
mysqldump -uroot -p --host=localhost --all-databases --insert-ignore
--lines-terminated-by
輸入文件的每行用給定字符串劃分。與--tab選項一路應用,不克不及用於--databases和--all-databases選項。
mysqldump -uroot -p --host=localhost test test --tab=”/tmp/mysql” --lines-terminated-by=”##”
--lock-all-tables, -x
提交要求鎖定一切數據庫中的一切表,以包管數據的分歧性。這是一個全局讀鎖,而且主動封閉--single-transaction 和--lock-tables 選項。
mysqldump -uroot -p --host=localhost --all-databases --lock-all-tables
--lock-tables, -l
開端導出前,鎖定一切表。用READ LOCAL鎖定表以許可MyISAM表並行拔出。關於支撐事務的表例如InnoDB和BDB,--single-transaction是一個更好的選擇,由於它基本不須要鎖定表。
請留意當導出多個數據庫時,--lock-tables分離為每一個數據庫鎖定表。是以,該選項不克不及包管導出文件中的表在數據庫之間的邏輯分歧性。分歧數據庫表的導出狀況可以完整分歧。
mysqldump -uroot -p --host=localhost --all-databases --lock-tables
--log-error
附加正告和毛病信息到給定文件
mysqldump -uroot -p --host=localhost --all-databases --log-error=/tmp/mysqldump_error_log.err
--max_allowed_packet
辦事器發送和接收的最年夜包長度。
mysqldump -uroot -p --host=localhost --all-databases --max_allowed_packet=10240
--net_buffer_length
TCP/IP和socket銜接的緩存年夜小。
mysqldump -uroot -p --host=localhost --all-databases --net_buffer_length=1024
--no-autocommit
應用autocommit/commit 語句包裹表。
mysqldump -uroot -p --host=localhost --all-databases --no-autocommit
--no-create-db, -n
只導出數據,而不添加CREATE DATABASE 語句。
mysqldump -uroot -p --host=localhost --all-databases --no-create-db
--no-create-info, -t
只導出數據,而不添加CREATE TABLE 語句。
mysqldump -uroot -p --host=localhost --all-databases --no-create-info
--no-data, -d
不導出任何數據,只導出數據庫表構造。
mysqldump -uroot -p --host=localhost --all-databases --no-data
--no-set-names, -N
同等於--skip-set-charset
mysqldump -uroot -p --host=localhost --all-databases --no-set-names
--opt
同等於--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項默許開啟, 可以用--skip-opt禁用.
mysqldump -uroot -p --host=localhost --all-databases --opt
--order-by-primary
假如存在主鍵,或許第一個獨一鍵,對每一個表的記載停止排序。在導出MyISAM表到InnoDB表時有用,但會使得導收工作消費很長時光。 
mysqldump -uroot -p --host=localhost --all-databases --order-by-primary
--password, -p
銜接數據庫暗碼
--pipe(windows體系可用)
應用定名管道銜接mysql
mysqldump -uroot -p --host=localhost --all-databases --pipe
--port, -P
銜接數據庫端標語
--protocol
應用的銜接協定,包含:tcp, socket, pipe, memory.
mysqldump -uroot -p --host=localhost --all-databases --protocol=tcp
--quick, -q
不緩沖查詢,直接導出到尺度輸入。默許為翻開狀況,應用--skip-quick撤消該選項。
mysqldump -uroot -p --host=localhost --all-databases 
mysqldump -uroot -p --host=localhost --all-databases --skip-quick
--quote-names,-Q
應用(`)惹起表和列名。默許為翻開狀況,應用--skip-quote-names撤消該選項。
mysqldump -uroot -p --host=localhost --all-databases
mysqldump -uroot -p --host=localhost --all-databases --skip-quote-names
--replace
應用REPLACE INTO 代替INSERT INTO.
mysqldump -uroot -p --host=localhost --all-databases --replace
--result-file, -r
直接輸入到指定文件中。該選項應當用在應用回車換行對(\\r\\n)換行的體系上(例如:DOS,Windows)。該選項確保只要一行被應用。
mysqldump -uroot -p --host=localhost --all-databases --result-file=/tmp/mysqldump_result_file.txt
--routines, -R
導出存儲進程和自界說函數。
mysqldump -uroot -p --host=localhost --all-databases --routines
--set-charset
添加'SET NAMES default_character_set'到輸入文件。默許為翻開狀況,應用--skip-set-charset封閉選項。
mysqldump -uroot -p --host=localhost --all-databases 
mysqldump -uroot -p --host=localhost --all-databases --skip-set-charset
--single-transaction
該選項在導出數據之條件交一個BEGIN SQL語句,BEGIN 不會壅塞任何運用法式且能包管導出時數據庫的分歧性狀況。它只實用於多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,由於LOCK TABLES 會使任何掛起的事務隱含提交。要想導出年夜表的話,應聯合應用--quick 選項。
mysqldump -uroot -p --host=localhost --all-databases --single-transaction
--dump-date
將導出時光添加到輸入文件中。默許為翻開狀況,應用--skip-dump-date封閉選項。
mysqldump -uroot -p --host=localhost --all-databases
mysqldump -uroot -p --host=localhost --all-databases --skip-dump-date
--skip-opt
禁用–opt選項.
mysqldump -uroot -p --host=localhost --all-databases --skip-opt
--socket,-S
指定銜接mysql的socket文件地位,默許途徑/tmp/mysql.sock
mysqldump -uroot -p --host=localhost --all-databases --socket=/tmp/mysqld.sock
--tab,-T
為每一個表在給定途徑創立tab朋分的文本文件。留意:僅僅用於mysqldump和mysqld辦事器運轉在雷同機械上。
mysqldump -uroot -p --host=localhost test test --tab="/home/mysql"
--tables
籠罩--databases (-B)參數,指定須要導出的表名。
mysqldump -uroot -p --host=localhost --databases test --tables test
--triggers
導出觸發器。該選項默許啟用,用--skip-triggers禁用它。
mysqldump -uroot -p --host=localhost --all-databases --triggers
--tz-utc
在導出頂部設置時區TIME_ZONE='+00:00' ,以包管在分歧時區導出的TIMESTAMP 數據或許數據被挪動其他時區時的准確性。
mysqldump -uroot -p --host=localhost --all-databases --tz-utc
--user, -u
指定銜接的用戶名。
--verbose, --v
輸入多種平台信息。
--version, -V
輸入mysqldump版本信息並加入
--where, -w
只轉儲給定的WHERE前提選擇的記載。請留意假如前提包括敕令說明符公用空格或字符,必定要將前提援用起來。
mysqldump -uroot -p --host=localhost --all-databases --where=” user='root'”
--xml, -X
導出XML格局.
mysqldump -uroot -p --host=localhost --all-databases --xml
--plugin_dir
客戶端插件的目次,用於兼容分歧的插件版本。
mysqldump -uroot -p --host=localhost --all-databases --plugin_dir=”/usr/local/lib/plugin”
--default_auth
客戶端插件默許應用權限。
mysqldump -uroot -p --host=localhost --all-databases --default-auth=”/usr/local/lib/plugin/<PLUGIN>” 

總結

文章中羅列了一些經常使用的導出操作,還有許多其它的參數也會常常用到,包含“--add-drop-database”,“--apply-slave-statements”,“--triggers”等。

以上內容是小編給年夜家引見的MySQL數據庫應用mysqldump導出數據詳解,願望對年夜家有所贊助!

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