??mysqldump 是一個數據庫備份程序。
??mysqldump 客戶端執行邏輯備份,生成一組 SQL 語句,可以執行這些語句來重現原始數據庫對象定義和表數據。它導出一個或多個 MySQL 數據庫進行備份或遷移到另一個 SQL server。mysqldump 命令還可以生成 CSV、其他分隔文本或 XML 格式的輸出。
??本文對其常用參數總結如下(mysql 版本是 5.7),用戶也可以通過 “man mysqldump” 或 “mysqldump --help” 查看其全面的用法。
-
-host=host_name
, -h host_name
MySQL 數據庫主機地址,默認為 localhost。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--port=port_num
, -P port_num
連接數據庫端口號
--user=user_name
, -u user_name
指定連接數據庫的用戶名。
--password
[=password
], -p
[password]
連接數據庫的密碼
--all
-databases
, -A
導出全部數據庫的全部表。示例:mysqldump
-uroot
-p
--all
-databases
--databases
, -B
導出幾個數據庫。參數后面所有名字參量都被看作數據庫名。
示例:mysqldump
-uroot
-p
--databases test mysql
--single
-transaction
該選項在導出數據之前,設置事務隔離模式為 REPEATABLE READ,并提交一個
START TRANSACTION SQL 語句,
BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。
它只適用于 InnoDB。
本選項和
--lock
-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。
要想導出大表的話,應結合使用
--quick 選項。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--single
-transaction
--tables
覆蓋
--databases 或
-B 參數,指定需要導出的表名。
示例:mysqldump
-uroot
-p
--host=localhost
--databases test
--tables test
--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
--skip
-add
-drop
-table
(取消drop語句
)--add
-locks
在每個表導出之前增加 LOCK TABLES 并且之后 UNLOCK TABLES。
默認為打開狀態,使用
--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=dir_name
字符集文件的目錄。
示例:mysqldump
-uroot
-p
--all
-databases
--character
-sets
-dir=
/usr
/local
/mysql
/share
/mysql
/charsets
--comments
, -i
附加注釋信息,默認為打開,可以用
--skip
-comments 取消。
示例:mysqldump
-uroot
-p
--all
-databases
(默認記錄注釋
);
mysqldump
-uroot
-p
--all
-databases
--skip
-comments
(取消注釋
)--compatible=name
導出的數據將和其它數據庫或舊版本的 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
在 CREATE TABLE 語句中包括所有 MySQL 特性選項
(默認為打開狀態
)。
示例:mysqldump
-uroot
-p
--all
-databases
--debug
[=debug_options
], -
輸出 debug 信息,用于調試。默認值為:d:t:o
,/tmp
/mysqldump
.trace。
示例:mysqldump
-uroot
-p
--all
-databases
--debug;
mysqldump
-uroot
-p
--all
-databases
--debug=” d:t:o
,/tmp
/debug
.trace”
--debug
-check
程序退出時,打印一些調試信息。
示例:mysqldump
-uroot
-p
--all
-databases
--debug
-check
--debug
-info
程序退出時,打印調試信息和內存、CPU 使用數據。
示例:mysqldump
-uroot
-p
--all
-databases
--debug
-info
--default
-character
-set
設置默認字符集,默認值為 utf8。
示例:mysqldump
-uroot
-p
--all
-databases
--default
-character
-set=latin1
--delete
-master
-logs
master 備份后刪除日志。這個參數將自動激活
--master
-data。
示例:mysqldump
-uroot
-p
--all
-databases
--delete
-master
-logs
--disable
-keys
, -K
對于每個表,在 INSERT 語句前后使用
/*
!40000 ALTER TABLE tbl_name DISABLE KEYS
*/; 和
/*
!40000 ALTER TABLE tbl_name ENABLE KEYS
*/;。
這樣可以更快地導入 dump 出來的文件,因為它是在插入所有行后創建索引。該選項只適合 MyISAM 表,默認為打開狀態。
示例:mysqldump
-uroot
-p
--all
-databases
--dump
-slave
[=value
]
該選項將導致主的 binlog 位置和文件名追加到導出數據的文件中。
設置為 1 時,將會以 CHANGE MASTER 命令輸出到數據文件;設置為 2 時,在命令前增加說明信息。
該選項將會打開
--lock
-all
-tables,除非
--single
-transaction 被指定。
該選項會自動關閉
--lock
-tables 選項。默認值為0。
示例:mysqldump
-uroot
-p
--all
-databases
--dump
-slave=1
--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=
..., --fields
-enclosed
-by=
..., --fields
-optionally
-enclosed
-by=
..., --fields
-escaped
-by=
...
這些選項和
--tab 選項一起使用,和 LOAD
DATA INFILE 的 FIELDS 語法類似。
--fields
-terminated
-by 列以指定符合分隔。
--fields
-enclosed
-by 輸出文件中的各個字段用指定字符包裹。
--fields
-optionally
-enclosed
-by 輸出文件中的各個字段用給定字符選擇性包裹。
--fields
-escaped
-by 輸出文件中的各個字段忽略給定字符。
不能用于
--databases 和
--all
-databases 選項。
示例:mysqldump
-uroot
-p test test
--tab=”
/home
/mysql”
--fields
-terminated
-by=”
--flush
-logs
, -F
開始導出之前刷新日志。
請注意:假如一次導出多個數據庫
(使用選項
--databases 或者
--all
-databases
),將會逐個數據庫刷新日志。
當使用
--lock
-all
-tables 或者
--master
-data 時,只刷新一次日志,相應的所有表同時被加上讀鎖。
因此,如果你想導出操作和刷新日志操作發生在同一時刻,應該將
--flush
-logs 和
--lock
-all
-tables,
--master
-data 一起使用,或者
--flush
-logs 和
--single
-transaction 一起使用。
示例:mysqldump
-uroot
-p
--all
-databases
--flush
-logs
--flush
-privileges
在導出 mysql 數據庫之后,發出一條 FLUSH PRIVILEGES 語句。
為了正確恢復,該選項應該用于導出 mysql 數據庫和依賴 mysql 數據庫數據的任何時候。
示例:mysqldump
-uroot
-p
--all
-databases
--flush
-privileges
--force
, -f
在導出過程中忽略出現的 SQL 錯誤。
示例:mysqldump
-uroot
-p
--all
-databases
--force
--help
, -?
顯示幫助信息并退出。示例:mysqldump
--help
--hex
-blob
使用十六進制格式導出二進制字段。如果有二進制數據就必須使用該選項。
影響到的字段類型有BINARY、VARBINARY、BLOB。
示例:mysqldump
-uroot
-p
--all
-databases
--hex
-blob
--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,
--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
--master
-data
該選項將 binlog 的位置和文件名追加到輸出文件中。
如果為 1,將會輸出 CHANGE MASTER 命令;
如果為 2,輸出的 CHANGE MASTER 命令前添加注釋信息。
該選項將打開
--lock
-all
-tables 選項,除非
--single
-transaction 也被指定
(在這種情況下,全局讀鎖在開始導出時獲得很短的時間;
其他內容參考
--single
-transaction 選項)。
該選項自動關閉
--lock
-tables選項。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--master
-data=1max_allowed_packet
客戶端
/服務器通信的最大 buffer size。默認值為 24MB,最大值為 1GB。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases max_allowed_packet=10240net_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
關閉
--set-charset 設置,等同于
--skip
-set-charset。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--no
-set-names
--opt
等同于
--add
-drop
-table
--add
-locks
--create
-options
--disable
-keys
--extended
-insert
--lock
-tables
--quick
--set-charset。
該選項默認開啟,可以用
--skip
-opt 禁用。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--opt
--skip
-opt
禁用
--opt 選項。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--skip
-opt
--order
-by
-primary
按主鍵導出每個表的記錄,或者按照第一個唯一鍵,對每個表的記錄進行排序。
在導出 MyISAM 表到 InnoDB 表時有用,但會使得導出工作花費很長時間。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--order
-by
-primary
--pipe
, -W
在 windows 系統,使用命名管道連接 mysql。該選項只適用于服務器支持命名管道連接的情況。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--pipe
--protocol=
{TCP
|SOCKET
|PIPE
|MEMORY
}
使用的連接協議,包括: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=file_name
, -r file_name
直接輸出到指定文件中。該選項應該用在使用回車換行的系統上(例如: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
--dump
-date
將導出時間添加到輸出文件中。默認為打開狀態,使用
--skip
-dump
-date 關閉選項。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases;
mysqldump
-uroot
-p
--host=localhost
--all
-databases
--skip
-dump
-date
--socket
, -S
指定連接 mysql 的 socket 文件位置,默認路徑
/tmp
/mysql
.sock。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--socket=
/tmp
/mysqld
.sock
--tab=dir_name
, -T dir_name
為每個表在給定路徑創建 tab 分割的文本文件。
注意:僅僅用于 mysqldump 和 mysqld 服務器運行在相同機器上。
示例:mysqldump
-uroot
-p
--host=localhost test test
--tab=
"/home/mysql"--where=
'where_condition', -w
'where_condition'
只轉儲給定的 WHERE 條件選擇的記錄。
請注意如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--where=” user=’root’”
--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
--verbose
, -v
輸出多種平臺信息。
--version
, -V
輸出 mysqldump 版本信息并退出。
--xml
, -X
導出 XML 格式。
示例:mysqldump
-uroot
-p
--host=localhost
--all
-databases
--xml
--set-gtid
-purged=value
該選項通過是否添加
SET @@global
.gtid_purged 語句來控制是否向導出文件中寫入全局事務ID(GTID)。
這個選項還可能導致在輸出中寫入一條語句,該語句在重新加載轉儲文件時禁用二進制日志記錄。
該選項的值可能為:OFF、ON、AUTO。默認值為 AUTO。
各項取值含義如下所示:
OFF:不向輸出文件中添加
SET 命令(跳過導 gtid);
ON:向輸出文件中添加
SET 命令。如果服務端不支持 GTIDs 會報錯;
AUTO:如果服務端支持 GTIDs,會向輸出文件中添加
SET 命令。
文章參考:
- Mysqldump參數大全(參數來源于mysql5.5.19源碼)
總結
以上是生活随笔為你收集整理的mysqldump 命令参数大全的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。