mysql備份還原-mysqldump參數介紹

1 參數分類
    1.1 連接選項
    --bind-address=ip_address

    在計算機上有多個網絡接口,該選項可以指定選擇哪個接口連接mysql數據庫。mysql5.6.1版本之後才啓用該選項。
    --compress, -C
    在客戶端和服務器之間啓用壓縮傳遞所有信息,前提是客戶端和服務端都支持壓縮。
    --default-auth=plugin
    使用客戶端身份認證插件。
    --host=host_name, -h host_name
    需要備份的mysql主機,默認爲localhost,可指定遠程IP。
    --login-path=name
    從.mylogin.cnf文件裏讀取登錄路徑配置信息。
    --password[=password], -p[password]
    連接mysql數據庫的密碼,使用-p參數時密碼和-p之間不能有空格。
    --pipe, -W
    使用命名管道連接mysql(windows系統可用)
    --plugin-dir=path
    查找插件的目錄,一般使用--default-auth=plugin參數,且mysqldump找不到插件時使用該參數顯示指定。
    --port=port_num, -P port_num
    連接mysql數據庫的TCP/IP端口名。
    --protocol={TCP|SOCKET|PIPE|MEMORY}
    使用的連接協議,包括:tcp, socket, pipe, memory.
    --secure-auth
    傳輸密碼時使用新的格式而不用老的pre-4.1格式。該參數默認開啓,使用--skip-secure-auth關閉。該參數在mysql5.6.17及其後續版本有效。
    --socket=path, -S path
    指定連接mysql的socket文件位置,默認路徑/tmp/mysql.sock
    --ssl
    /*使用ssl選項需要mysql編譯時添加SSL支持,否則關於ssl的參數無效*/
    啓用ssl安全連接
    --ssl-ca=file_name
    包含PEM格式的可信SSL CA的清單的文件的路徑。該選項隱式開啓--ssl。
    --ssl-capath=dir_name
    包含PEM格式的可信SSL CA證書的目錄的路徑。該選項隱式開啓--ssl。
    --ssl-cert=file_name
    用於建立安全連接的PEM格式的SSL證書文件名。
    --ssl-cipher=cipher_list
    允許的用於SSL加密的密碼的清單。如果清單中的密碼不可用,則SSL連接將不工作。該選項隱式開啓--ssl。cipher_list的格式與OpenSSL ciphers命令相同。
    例如:
--ssl-cipher=AES128-SHA
--ssl-cipher=DHE-RSA-AES256-SHA:AES128-SHA
    --ssl-crl=file_name
    包含PEM格式的證書撤銷列表的文件名
    --ssl-crlpath=dir_name
    包含PEM格式的證書撤銷列表的文件路徑
    --ssl-key=file_name
    用於建立安全連接的SSL密鑰文件名。
    --ssl-verify-server-cert
    該參數僅對客戶端生效。
    --user=user_name, -u user_name
    連接mysql數據庫的用戶名
    1.2 可選文件選項
    --defaults-extra-file=file_name

    除了全局配置文件所讀取的配置文件名。如果給出,必須首選該選項(unix下)。
    --defaults-file=file_name
    指定默認配置文件。
    --defaults-group-suffix=str
    讀取配置文件my.cnf組選項中的內容。不僅可以讀取[client],[mysqldump]組信息,也可讀取諸如[client_str],[mysqldump_str]等自定義組信息。
    --no-defaults
    不讀取配置文件信息,比如程序開始時讀取到了錯誤的配置信息,使用該參數比較有效。.mylogin.cnf文件是個例外,該文件無論何時都會被讀取。
    --print-defaults
    打印配置文件的相關信息
    1.3 DDL選項
    --add-drop-database

    在CREATE DATABASE語句前增加DROP DATABASE語句,一般配合--all-databases 或 --databases使用,因爲只有使用了這二者其一,纔會記錄CREATE DATABASE語句。
    --add-drop-table 
    在CREATE TABLE語句前增加CREATE TABLE語句。
    --add-drop-trigger
    在CREATE TRIGGER語句前增加DROP TRIGGER語句
    --all-tablespaces, -Y
    導出全部表空間。該參數目前僅用在MySQL Cluster表上(NDB引擎)
    --no-create-db, -n
    只導出數據,而不添加CREATE DATABASE 語句。除非加上參數 --databases 或 --all-databases 
    --no-create-info, -t
    只導出數據,而不添加CREATE TABLE 語句
    --no-tablespaces, -y
    不導出任何表空間信息
    --replace

    使用REPLACE INTO 取代INSERT INTO.


    1.4 debug選項
    --allow-keywords

    允許創建是關鍵詞的列名字。但需要在列名前加表名作爲前綴。
    --comments, -i
    附加註釋信息,如數據庫版本,主機名等。默認爲打開,可以用--skip-comments取消 
    --debug[=debug_options], -# [debug_options]
    輸出debug信息,用於調試。debug_options格式爲d:t:o,file_name,默認爲d:t:o,/tmp/mysqldump.trace
    --debug-check
    mysqldump退出時打印調試信息。
    --debug-info
    mysqldump退出時打印調試信息及cup,內存的使用統計。
    --dump-date

    添加DUMP時間到輸出末尾,默認開啓,禁用的話--skip-dump-date


    --force, -f
    在導出過程中忽略出現的SQL錯誤。
    --log-error=file_name
    記錄warning及error信息島指定文件,默認不輸出。
    --skip-comments
    取消附加註釋信息。
    --verbose, -v
    冗長模式,輸出更多的信息。
    1.5 help選項
    --help, -?

    顯示幫助信息並退出。
    --version, -V
    顯示版本信息並退出。
    1.6 字符集選項
    --character-sets-dir=path

    字符集文件的安裝目錄
    --default-character-set=charset_name
    設置默認字符集,若不設置默認爲utf8,早期版本默認爲latin1,導出tab格式文件時最好顯示指定,方便通過LOAD DATA INFILE方式導入.
    --set-charset
    添加'SET NAMES  default_character_set'到輸出文件。默認爲打開狀態,使用--skip-set-charset關閉選項。
    --no-set-names, -N
    關閉--set-charset選項,也可用--skip-set-charset代替。
    1.7 複製選項
    --apply-slave-statements

    在--dump-slave產生的'CHANGE  MASTER TO..'前增加STOP SLAVE命令,並在文件末尾增加START SLAVE 命令。
    --delete-master-logs
    master備份完成後通過語句PURGE BINARY LOGS刪除日誌. 這個參數將自動激活--master-data。
    --dump-slave[=value]
    在從機上導出數據,同--master-data類似,value值爲1或2,默認爲1,即mysqldump出來的文件就會包括CHANGE MASTER TO這個語句,如果爲2,mysqldump出來的文件包含的CHANGE MASTER TO這個語句會被註釋掉。該選項可配合 --apply-slave-statements 和 --include-master-host-port參數使用。
    --include-master-host-port
    在--dump-slave產生的'CHANGE  MASTER TO..'語句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>' 
    --master-data[=value]
    該參數有兩個值1和2,默認爲1 
    mysqldump導出數據時,當這個參數的值爲1的時候,mysqldump出來的文件就會包括CHANGE MASTER TO這個語句,CHANGE MASTER TO後面緊接着就是file和position的記錄,在slave上導入數據時就會執行這個語句,salve就會根據指定這個文件位置從master端複製binlog。當這個值是2的時候,chang master to也是會寫到dump文件裏面去的,但是這個語句是被註釋的狀態。
    使用該選項需要在my.cnf中開啓binary log並需要擁有RELOAD權限。該參數會主動關閉--lock-tables,如果未使用--single-transaction,該參數還會自動開啓--lock-all-tables,否則不開啓。
    --set-gtid-purged=value
    控制是否向備份文件寫入gtid信息,即添加SET @@global.gtid_purged,參數包括ON,OFF,AUTO,默認爲AUTO。ON添加(數據庫沒啓用GTID時會報錯),OFF不添加,AUTO(如果數據庫啓用GTID便自動添加)
    1.8 格式化選項
    --compact

    輸出更加緊湊(較少)的信息,該參數開啓選項:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset 
    --compatible=name
    導出的數據將和其它數據庫或舊版本的MySQL 相兼容。值可以爲ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。要使用幾個值,用逗號將它們隔開。它並不保證能完全兼容,而是儘量兼容。
    --complete-insert, -c

    使用完整的insert語句(包含列名稱)。這麼做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導致插入失敗。


    --create-options
    在CREATE TABLE語句中包括所有MySQL特性選項。(默認爲打開狀態)
    --fields-terminated-by=name
    導出文件中忽略給定字段。與--tab選項一起使用,不能用於--databases和--all-databases選項
    --fields-enclosed-by=name
    輸出文件中的各個字段用給定字符包裹(包裹所有字段)。與--tab選項一起使用,不能用於--databases和--all-databases選項。
    --fields-optionally-enclosed-by=name
    輸出文件中的各個字段用給定字符選擇性包裹(包裹除數字類型之外的所有字段)。與--tab選項一起使用,不能用於--databases和--all-databases選項。
    --fields-escaped-by=name
    輸出文件中的各個字段忽略給定字符。與--tab選項一起使用,不能用於--databases和--all-databases選項
    --hex-blob
    使用十六進制格式導出二進制字符串字段。如果有二進制數據就必須使用該選項。影響到的字段類型有BINARY、VARBINARY、BLOB及BIT。
    --lines-terminated-by=name
    輸出文件的每行用給定字符串劃分。與--tab選項一起使用,不能用於--databases和--all-databases選項。
    --quote-names, -Q
    使用(`)引起表和列名。默認爲打開狀態,使用--skip-quote-names取消該選項。
    --result-file=file_name, -r file_name
    直接輸出到指定文件中。該選項應該用在使用回車換行對(\r\n)換行的系統上(例如:DOS,Windows)。該選項確保只有一行被使用。
    --tab=path, -T path
    爲每個表在給定路徑創建tab分割的文本文件,對每個dump的表,創建包含CREATE TABLE語句的tbl_name.sql文件和只包含數據的tbl_name.txt文件。注意:僅僅用於mysqldump和mysqld服務器運行在相同機器上。
    --tz-utc
    在導出頂部設置時區TIME_ZONE='+00:00' ,以保證在不同時區導出的TIMESTAMP 數據或者數據被移動其他時區時的正確性。該參數默認開啓,如需關閉使用參數 --skip-tz-utc
    --xml, -X
    導出XML格式.
    1.9 過濾選項
    --all-databases, -A

    備份所有數據庫的所有表
    --databases, -B
    備份指定的數據庫(以及庫中的表),不指定該參數情況下,mysqldump認爲第一個名稱是數據庫名,後面跟的都是表名,指定該參數,該參數後面的都認爲是數據庫名。
    --events, -E
    導出事件調度。
    --ignore-table=db_name.tbl_name
    不導出指定表。指定忽略多個表時,需要重複多次,每次一個表。每個表必須同時指定數據庫和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……,該選項也可用來忽略視圖。
    --no-data, -d
    不導出任何數據,只導出數據庫表結構
    --routines, -R
    導出存儲過程以及存儲函數。注意:該參數並不導出屬性信息如:存儲過程創建和修改的時間戳。導入時創建的時間戳和導入時時間相同。假如要使用原始的時間戳,不要使用參數--routines,而是直接備份mysql.proc的內容(需要用戶有相關權限)。
    --tables
    覆蓋--databases (-B)參數,指定需要導出的表名,後面可直接跟多個表。
    --triggers
    導出觸發器。該選項默認啓用,用--skip-triggers禁用它。
    --where='where_condition', -w 'where_condition'
    只轉儲給定的WHERE條件選擇的記錄。請注意如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。
    1.10 性能選項
    --delayed-insert

    對於非事物表採用延時插入方式(INSERT DELAYED)而非INSERT導出數據。如dump文件中一行INSERT  DELAYED INTO `dump` VALUES (1);


    --disable-keys, -K
    對於每個表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;語句引用INSERT語句。這樣可以更快地導入dump出來的文件,因爲它是在插入所有行後創建索引的。該選項只適合非唯一索引的MyISAM表,默認爲打開狀態。
    --extended-insert, -e

    使用具有多個VALUES列的INSERT語法。這樣使導出文件更小,並加速導入時的速度。默認爲打開狀態,使用--skip-extended-insert取消選項。


    --insert-ignore

    使用INSERT IGNORE語句替代INSERT語句,如dump文件中一行INSERT  IGNORE INTO `dump` VALUES (1);


    --opt(默認開啓)
    提供了mysqldump快速備份還原的操作,是如下參數的簡寫
    ( --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset)不啓用該參數的話要顯示指定--skip-opt。
    --quick, -q
    該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中,即不緩衝查詢,直接導出到標準輸出。默認爲打開狀態,使用--skip-quick取消該選項。
    --skip-opt
    關閉--opt選項。
    1.11 事務選項
    --add-locks

    在每個表導出內容之前增加LOCK TABLES語句並且在表最後添加UNLOCK  TABLE語句。(默認爲打開狀態,使用--skip-add-locks取消選項),這樣在導入數據時可以加快insert的速度。
    --flush-logs, -F
    開始導出之前刷新日誌。使用--all-databases參數時,對將要導出的數據庫執行flush操作。例外是使用--lock-all-tables, --master-data, 或 --single-transaction參數,和這些參數配合使用時,flush只在dump進行時執行一次。
    --flush-privileges
    在導出[mysql]數據庫之後,發出一條FLUSH  PRIVILEGES 語句。爲了正確恢復,該選項應該用於導出[mysql]數據庫或依賴[mysql]數據庫數據的任何時候。
    --lock-all-tables, -x
    在備份過程中,提交請求鎖定所有數據庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,並且自動關閉 --single-transaction 和 --lock-tables 選項。
    --lock-tables,-l
    該參數適用於myisam表,僅鎖定將要進行備份的數據庫的相應表。相應的表使用READ LOCAL方式鎖定,即:鎖定期間允許允許讀及從表的尾部對錶進行併發熱插入。
    --no-autocommit

    每一個導出表的所有insert語句作爲一個整體,在其前後加上SET autocommit = 0 和 COMMIT,設置爲非自動提交模式,即全部insert執行完,在執行COMMIT(通過驗證)。


    --order-by-primary
    如果存在主鍵,或者第一個唯一鍵,對每個表的記錄進行排序。在導出MyISAM表到InnoDB表時有效,但會使得導出工作花費很長時間。
    --shared-memory-base-name=name
    該參數主要用於windows上,默認值爲MYSQL,且大小寫敏感。mysql server啓動時使用--shared-memory參數該參數纔有效。
    --single-transaction
    該參數適用於InnoDB表,與--lock-tables參數互斥,備份期間不鎖表,即熱備份。
    爲確保得到有效的備份文件,使用該參數備份期間應避免使用DDL(ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.)語句,因爲連續性的讀並沒有對這些語句進行隔離,備份期間使用這些DDL語句會導致潛在的select獲取到的返回的數據不一致或錯誤,比如數據讀出一半表被刪了。
****************************************************************************************
    原文地址:http://blog.csdn.net/jesseyoung/article/details/41042825
    博客主頁:http://blog.csdn.net/jesseyoung
****************************************************************************************
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章