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導出數據詳解,願望對年夜家有所贊助!