目錄
DDL Options
--add-drop-database
default: false
在創建每個數據庫語句之前編寫一個DROP(if exists)數據庫語句. 這個選項通常和“--all-databases“或”--databases”選項一起使用,因爲除非指定了其中的一個選項,否則在導出的SQL文件中不會編寫 create database 語句。
--add-drop-table
default:true
在創建每個表前添加一個 DROP(if exists) table 語句 ----【體現在導入的SQL文件中】
--add-drop-trigger
default:false
在每個創建觸發器語句之前編寫一個DROP觸發器語句。
--all-tablespaces , -Y
default:false
將創建NDB表使用的任何表空間所需的所有SQL語句添加到表dump文件中。在mysqldump的輸出中沒有包含此信息。這個選項目前只與NDB集羣表相關,MySQL 5.7不支持NDB集羣表。
--no-create-db , -n
default:false
如果給定“--databases”或“--all-databases”選項,則禁止輸出中包含CREATE DATABASE語句。
如果未指定 -B 或 -A 選項,則輸出中也沒有 CREATE DATABASE 語句。
--no-create-info , -t
default:false
不導出表結構:無 create table 語句。
但是此選項可以導出創建日誌文件組或表空間的語句;您可以爲此使用--no-tablespaces選項來禁止導出。
--no-tablespaces , -y
default:FALSE
該選項不輸出CREATE LOGFILE GROUP and CREATE TABLESPACE 語句。
--replace
default:false
用replace 替換SQL文件中的 insert
--force, -f
default:false
忽略所有error,此選項比--ignore-error 優先級高。
--default-character-set=charset_name
使用charset_name作爲默認字符集,mysqldump默認使用utf8.
Replication Options
--apply-slave-statements
對使用--dump-slave選項生成的SQL文件中,會在change master to 語句之前添加 stop slave 語句,並在輸出末尾添加 start slave 語句。
--delete-master-logs
在主複製服務器上,執行完dump操作之後,會向服務器發送 PURGE BINARY LOGS 語句清除binlog。此選項自動啓用--master-data
--dump-slave
會在dump後的SQL文件中,添加 change master to 語句,該語句指定被轉儲從的binlog文件名和位置。
從SHOW SLAVE STATUS輸出中讀取Relay_Master_Log_File和Exec_Master_Log_Pos的值,分別用於MASTER_LOG_FILE和MASTER_LOG_POS。這些是主服務器的文件名和位置,從服務器開始複製。
--master-data
使用此選項dump a master replication server到dump文件,可用於設立另一臺服務器作爲master的slave。它會使dump輸出包含CHANGE MASTER TO語句,標記dump源的二進制日誌座標(文件名和位置)。在把load dump文件加載到slave之後,slave應當從該master座標開始複製。
如果選項賦值爲2,那麼CHANGE MASTER TO 語句會被寫成一個SQL comment(註釋),從而只提供信息;
如果選項賦值爲1,那麼語句不會被寫成註釋並且在dump被載入時生效。
如果沒有指定,默認值爲1。
--set-gtid-purged=ON/OFF
如果轉儲文件包含系統表,則不建議在服務器gtid_mode= on時加載轉儲文件.
如果不設置 --set-gtid-purged=OFF 這個參數,最終的備份文件中會有這樣一句話:SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';這個的區間是主庫中當前所完成的所有事務號。這條語句在備份被恢復的時候,起到的作用是,不再從主庫同步1-347 這個範圍內的事務了。如果我們不是主從之間的轉儲,我們不應該阻止該庫同步1-347全部區間的數據。因此部分備份是加上--set-gtid-purged=OFF 這句,不強行指定跳過這些操作.
Format Options
--hex-blob
使用十六進制表示法轉儲二進制列
--xml
轉儲爲xml格式
Filtering Options
--all-databases , -A
dump 所有數據庫。
--database ,-B
dump 指定數據庫 ,可以指定一個或多個。
--tables
mysqldump將該選項後面的所有名稱參數都視爲表名。
--events ,-E
dump 服務器事件。須有event權限。
--ignore-table=db_name.tal_name
不要dump給定的表,必須使用數據庫名和表名指定給定的表。若要忽略多個表,請多次使用此選項。這個選項也可以用來忽略視圖。
--no-data , -d
不導出數據
--triggers
導出表的觸發器,默認啓動。可以用 --skip-triggers 禁用。
--where='' , -w ''
只dump由where選擇的行,如果條件中包含特殊字符,須在條件周圍加上引號。
--insert-ignore
出現主鍵重複但使用了ignore則錯誤被忽略,數據不變。
--opt
提供了快速dump操作,默認開啓。
可通過 --skip-opt 關閉。
Transactional Options
--flush-logs , -F
切換一下binlog file。
在開始dump前,flush 一個新的binlog file。此選項適用於爲備份恢復加一個保險。
--single-transaction
不支持ddl,加上這個參數,對於innodb 表來說不鎖表和行。形成一致性快照。
--no-autocommit
將dump文件中的每一個INSERT語句括在SET autocommit = 0和COMMIT語句中。
--compact
優化備份文件。此選項啓用-skip-add-drop-table、-skip-add-locks、-skip-comments、-skip-disable-keys和-skip-set-charset選項。
-T
每一個表生成兩個文件,一個SQL 文件,一個TXT 文件。可以備份成一個文件,可以是點SQL 結尾,也可以是點txt 結尾,導出一行行數據,每行數據指定以tab 方式分割每一個列,每行的分隔符默認是回車。
--lines-terminated-by
行與行之間的分隔符,默認爲回車
--fileds-terminated-by=','
列與列之間的分割符。
總結
我在工作中所最長用的參數:
mysqldump -u user -ppassword --single-transaction --set-gtid-purged=off --hex-blob -R -E
(-F:備份開始時重建binlog文件)(--master-data=2:如爲master)(-d/--no-data:不導出數據)(-t:不導出結構)(--ignore-table=db.table)(--events/-E:導出事件)(-R/--routines:導出存儲過程和函數)(導出多個庫:--databases)(-where=‘where條件’)