mysqldump爲MySQL邏輯備份工具,產生一系列SQL語句,以後從新執行以產生備份的庫、表及數據。也可產生CSV、XML等格式的數據。適用於各種引擎的表。mysql
運行mysqldump需必定的權限。如,備份表的最低權限爲select,備份視圖需show view權限,備份觸發器需trigger權限。mysqldump的輸出可能包含alter database語句,如,用於保持備份庫的字符集,此時須要有備份庫上的alter權限。若不使用—single-transaction選項則還需lock tables權限,不一樣的選項可能須要對應的不一樣的權限。相應的,載入備份文件也至少需與建立備份文件時相同的權限。sql
備份一個或多個表:
shell>mysqldump [options] db_name [table_name……]數據庫
備份一個或多個庫:
shell>mysqldump [options] –databases dbname……安全
備份全部數據庫:
shell>mysqldump [options] –all-databases網絡
提供了在恢復前查看並編輯備份文件的便捷性和靈活性。不適用於大數據量的備份(即便備份過程較快,但在恢復數據時因插入、建索引等操做會形成高昂I/O開銷)。oracle
對於大規模備份,考慮使用物理方法,如:mysqlbackup(適於InnoDB、MyISAM及其餘表)、mysqlhotcopy(適於MyISAM表)、Xtrabackup(適於InnoDB及MyISAM表)、LVM(適於各種表)等。app
mysqldump會依次從下列配置文件中讀取默認:
1. /etc/my.cnf
2. /etc/mysql/my.cnf
3. /usr/etc/my.cnf
4. ~/.my.cnf
mysqldump僅從配置文件的下列節中讀取默認選項:
Ø [mysqldump]
Ø [client]
mysqldump選項:
命令行 |
描述 |
在CREATE DATABASE前DROP DATABASE。 |
|
在CREATE TABLE前DROP TABLE。 |
|
在CREATE TRIGGER 前DROP TRIGGER。 |
|
在INSERT先後分別加LOCK TABLES和UNLOCK TABLES。 |
|
備份全部庫中全部表。 |
|
容許列名包含關鍵字。 |
|
在CHANGE MASTER前加 STOP SLAVE在最後添加 START SLAVE。 |
|
對於有多個網絡接口的機器選擇使用指定的接口鏈接MySQL。 |
|
爲備份文件添加註釋。 |
|
禁用結構化註釋及首尾結構體。開啓--skip-add-drop-table、--skip-add-locks、--skip-comments、--skip-disable-keys、--skip-set-charset以產生更緊促的輸出。 |
|
產生與其餘數據庫或者老版MySQL兼容的備份文件,可用的值有ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options。可同時使用多個以逗號分隔的值。 |
|
使用帶有列名的完整INSERT。 |
|
在CREATE TABLE中使用MySQL特定的表選項。 |
|
備份多個數據庫,選項後跟多個庫名。備份文件中會包含USE db_name。 |
|
寫debug日誌。 |
|
程序退出時打印一些調試信息 |
|
程序退出時打印一些有關cpu和memory的統計信息。 |
|
指明要使用的客戶端認證插件 |
|
設置默認字符集 |
|
使用INSERT DELAYED 而非INSERT。MySQL5.6.6中INSERT DELAYED已不被推薦使用,相應的該選項也未來將來的mysqldump中移除。 |
|
在master上備份後刪除其二進制日誌。該選項會自動激活—master-data選項。 |
|
對每一個表在INSERT先後分別加/*!40000 ALTER TABLE `articles` DISABLE KEYS */和/*!40000 ALTER TABLE `articles` ENABLE KEYS */。可以使從備份文件恢復數據更快,由於索引在全部行插入後建立。僅對於MyISAM表的非惟一索引。 |
|
若使用了—comments選項則會在末尾顯示-- Dump completed on xxxxxx,以標記時間。 |
|
會在輸出結果添加包含master二進制文件和位置信息的CHANGE MASTER語句。與—master-data選項相似,但用於複製slave以創建另外的與其同master的slave。會開啓—lock-all-tables除非使用了—single-transaction。會在dump前中止slave的SQL thread在dump後開始該線程。可與--apply-slave-statements、--include-master-host-port結合使用。 |
|
爲備份的數據庫備份事件。 |
|
使用包含多個值列表的多行INSERT。 |
|
與—tab選項結合使用。指明輸出文件中的filed以何種字符串enclosed,與 LOAD DATA INFILE對應的選項意義相同。 |
|
同上 |
|
同上 |
|
同上 |
|
在備份前刷新MySQL日誌。需RELOAD權限。若同時備份多個數據庫,如使用—all-database或—database,則對於每一個備份的數據庫都會刷新一第二天志,除非使用了—master-data或—lock-all-tables,此時日誌僅在鎖定表時刷新一次。若想讓備份和刷新日誌同時進行需結合使用—lock-all-tables或—master-data。 |
|
在備份了mysql這個數據庫後發出FLUSH PRIVILEGES語句。本分mysql庫或依賴mysql庫中數據的庫時需使用。 |
|
顯示幫助信息 |
|
將二進制列,如,BINARY,VARBINARY,BLOB,BIT備份爲十六進制形式。 |
|
要鏈接的主機 |
|
指明不備份的表 |
|
使用了--dump-slave時在CHANGE MASTER語句中加入MASTER_HOST和MASTER_PORT。 |
|
用INSERT IGNORE 而非INSERT ,以忽略重複的數據。 |
|
與—tab選項結合使用。與LOAD DATA INFILE的LINE意義相同。指明行由何種字符串terminated。 |
|
經過在備份期前加read lock鎖定全部庫的全部表。會自動關閉—single-transaction和—lock-tables。 |
|
對於備份的庫在備份前鎖定將被備份的屬於該庫的表。使用READ LOCAL鎖定以容許MyIASM表的併發插入。對於事務型的表請使用—single-transaction而非—lock-tables。另外該選項不能保證備份文件上各數據庫間的表在邏輯上是一致的,由於市委每一個庫單獨鎖定表。一些選項如—opt會自動開啓—locak-tables,可經過使用在其後使用--skip-lock-tables規避。 |
|
在給定文件中附加警告和錯誤信息。 |
|
從.mylogin.cnf登陸文件讀取登陸參數。可經過mysql_config_editor建立登陸文件。 |
|
在輸出中添加二進制日誌名和位置。會開啓—lock-all-tables除非也是用了—single-transaction。會自動關閉—lock-tables。 |
|
可發送或接收的最大包分組長度。 |
|
TCP/IP及socket通信的buffer大小。 |
|
在INSERT先後添加set autocommit=0和commit。 |
|
若使用了—all-databases或—databases,不在輸出中添加CREATE DATABASE。 |
|
不使用CREATE TABLE 重建備份的表。 |
|
只備份結構不備份數據。 |
|
同--skip-set-charset不設置charset。 |
|
不在輸出中使用CREATE LOG FILE和CREATE TABLESPACE。 |
|
--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset,和--disable-keys幾個選項合起來的簡寫形式。 |
|
將備份的表中的行按主鍵排序或者第一個惟一鍵排序。當備份MyISAM表且將被載入到InnoDB表時頗有用,打包備份自己的時間會較長。 |
|
鏈接主機的密碼 |
|
在Windows上經過命名管道鏈接server。 |
|
插件存放目錄。 |
|
經過主機所使用的端口。 |
|
鏈接主機所使用的協議。 |
|
備份時逐行讀取表而非一次所有行後緩衝在內存中。在備份大表時有用。 |
|
使用「`」包圍數據庫名、表名、列名等標識符。若使用了ANSI_QUOTES則用「」」包圍。特別的,可能須要在—compatible後開啓該選項。 |
|
使用REPLACE而非INSERT。 |
|
將結果輸出帶指定的文件。 |
|
備份routines(存儲過程和函數)。 |
|
添加SET NAMES default_character_set。默認開啓。 |
|
肯定是否在結果中添加SET @@GLOBAL.GTID_PURGED。若爲ON但在server中沒有開啓GTID則發生錯誤。若OFF則什麼都不作。若AUTO則server中開啓GTID那麼添加上述語句,反之不加。 |
|
在備份前設置事務隔離級別爲REPEATABLE READ並向server發送START TRANSACTION語句。僅對事務型表如InnoDB有用。與--ock-tables互斥。對於大文件備份--single-transaction與--quick結合使用。 |
|
禁用--add-drop-table。 |
|
禁用--add-locks。 |
|
禁用—comments。 |
|
禁用—compact。 |
|
禁用—disable-keys。 |
|
禁用--extended-insert。 |
|
禁用--skip-opt。 |
|
禁用--quick。 |
|
禁用--quote-names。 |
|
禁用—set-charset。 |
|
不備份triggers |
|
禁用-- tz-utc |
|
鏈接本機server所使用的socket。 |
|
包含信任的SSL CAs列表的文件名。 |
|
包含PEM格式的可信任SSL CA證書的目錄。 |
|
用於創建安全鏈接的SSL證書文件的名字。 |
|
一系列用於SSL加密的所容許的密碼。 |
|
包含證書廢止列表的文件名。 |
|
包含證書廢止列表的文件的目錄。 |
|
用於創建安全鏈接的SSL key文件名。 |
|
The server's Common Name value in its certificate is verified against the host name used when connecting to the server |
|
對於每一個備份的表mysqldump建立一個包含CREATE TABLE語句的tbl_name.sql,而被鏈接的server會建立一個由tab鍵分隔的包含相應數據的tbl_name.txt。選項值爲將被寫入的目錄。當mysqldump與mysqld處於同一主機時使用。不然tbl_name.txt文件會被寫入遠程主機相應的目錄。當使用了—databases或—all-databases時該選項不適用。 |
|
覆蓋--databases 或 -B 選項。該選項後的名稱參數均被認爲是表名。 |
|
爲每一個備份的表備份trigger。 |
|
在備份文件中添加SET TIME_ZONE='+00:00'。 |
|
鏈接server所使用的用戶名 |
|
詳細模式。 |
|
顯示版本信息並退出。t |
|
僅備份與where條件中匹配的行。 |
|
產生XML格式的輸出。 |
命令行選項對應的配置文件及默認值
命令行 |
配置文件 |
默認值 |
引入版本 |
FALSE |
|
||
TRUE |
|
||
FALSE |
|
||
TRUE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
NO |
|
||
TRUE |
|
||
FALSE |
|
||
NO |
|
||
FALSE |
|
||
TRUE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
NO |
|
||
utf8 |
|
||
FALSE |
|
||
FALSE |
|
||
TRUE |
|
||
TRUE |
|
||
0 |
|
||
FALSE |
|
||
TRUE |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
FALSE |
|
||
FALSE |
|
||
|
|
|
|
FALSE |
|
||
NO |
|
||
NO |
|
||
FALSE |
|
||
FALSE |
|
||
NO |
|
||
FALSE |
|
||
TRUE |
|
||
NO |
|
||
|
NO |
5.6.6 |
|
0 |
|
||
25165824 |
|
||
1046528 |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
TRUE |
|
||
FALSE |
|
||
NO |
|
||
|
NO |
|
|
NO |
|
||
0 |
|
||
|
|
||
TRUE |
|
||
TRUE |
|
||
FALSE |
|
||
NO |
|
||
FALSE |
|
||
TRUE |
|
||
|
5.6.9 |
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
TRUE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
FALSE |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
NO |
5.6.3 |
||
NO |
5.6.3 |
||
NO |
|
||
NO |
|
||
NO |
|
||
NO |
|
||
TRUE |
|
||
TRUE |
|
||
NO |
|
||
|
FALSE |
|
|
|
TRUE |
|
|
NO |
|
||
NO |
|
上述選項可大體分爲如下幾個方面(有些選項有簡寫形式)便於記憶:
Ø 鏈接選項
l --bind-address=ip_address
l --compress,-C
l --default-auth=plugin
l --password[=password],-p[password]
l --pipe,-W
l --plugin-dir=path
l --port=port_num,-P port_num
l --protocol={TCP|SOCKET|PIPE|MEMORY}
l --socket=path,-S path
l --ssl*
l --user=user_name,-u user_name
l max_allowed_packet
l net_buffer_length
Ø DDL選項
l --add-drop-database
l --add-drop-table
l --add-drop-trigger
l --all-tablespaces,-Y
l --no-create-db,-n
l --no-create-info,-t
l --no-tablespaces,-y
l --replace
Ø Debug選項
l --allow-keywords
l --comments,-i
l --debug[=debug_options],-# [debug_options]
l --debug-check
l --debug-info
l --dump-date
l --force,-f
l --log-error=file_name
l --skip-comments
l --verbose,-v
Ø 幫助選項
l --help,-?
l --version,-V
Ø 國際化選項
l --character-sets-dir=path
l --default-character-set=charset_name
l --no-set-names,-N
l --set-charset
Ø 複製選項
l --apply-slave-statements
l --delete-master-logs
l --dump-slave[=value]
l --include-master-host-port
l --master-data[=value]
l --set-gtid-purged=value
Ø 格式選項
l --compact
l --compatible=name
l --complete-insert,-c
l --create-options
l --fields-terminated-by=...,--fields-enclosed-by=..., --fields-optionally-enclosed-by=...,--fields-escaped-by=...
l --hex-blob
l --lines-terminated-by=...
l --quote-names,-Q
l --result-file=file_name,-r file_name
l --tab=path,-T path
l --tz-utc
l --xml,-X
Ø 過濾選項
l --all-databases,-A
l --databases,-B
l --events,-E
l --ignore-table=db_name.tbl_name
l --no-data,-d
l --routines,-R
l --tables
l --triggers
l --skip-triggers
l --where='where_condition',-w 'where_condition'
Ø 性能選項
l --delayed-insert
l --disable-keys,-K
l --extended-insert,-e
l --insert-ignore
l --opt
l --quick,-q
l --skip-opt
Ø 事務選項
l --add-locks
l --flush-logs,-F
l --flush-privileges
l --lock-all-tables,-x
l --lock-tables,-l
l --no-autocommit
l --order-by-primary
l --single-transaction
Ø 選項組
l --compact
l --opt
參考
http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_protocol