天天看點

mysqldump指令詳解(轉載)

轉載:mysqldump指令詳解

官網參考:https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

1.簡介

mysqldump為MySQL邏輯備份工具,産生一系列SQL語句,之後重新執行以産生備份的庫、表及資料。也可産生CSV、XML等格式的資料。适用于各類引擎的表。

運作mysqldump需一定的權限。如,備份表的最低權限為select,備份視圖需show view權限,備份觸發器需trigger權限。mysqldump的輸出可能包含alter database語句,如,用于保持備份庫的字元集,此時需要有備份庫上的alter權限。若不使用—single-transaction選項則還需 lock tables權限,不同的選項可能需要對應的不同的權限。相應的,載入備份檔案也至少需與建立備份檔案時相同的權限。

2.文法

備份一個或多個表:

shell>mysqldump [options] db_name [table_name……]

備份一個或多個庫:

shell>mysqldump [options] –databases dbname……

備份所有資料庫:

shell>mysqldump [options] –all-databases

3.性能與擴充性

提供了在恢複前檢視并編輯備份檔案的便捷性和靈活性。不适用于大資料量的備份(即使備份過程較快,但在恢複資料時因插入、建索引等操作會造成高昂I/O開銷)。

對于大規模備份,考慮使用實體方法,如:mysqlbackup(适于InnoDB、MyISAM及其他表)、mysqlhotcopy(适于MyISAM表)、Xtrabackup(适于InnoDB及MyISAM表)、LVM(适于各類表)等。

4選項

mysqldump會依次從下列配置檔案中讀取預設:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. /usr/etc/my.cnf
  4. ~/.my.cnf

mysqldump僅從配置檔案的下列節中讀取預設選項:

Ø [mysqldump]

Ø [client]

mysqldump選項:

指令行

描述

–add-drop-database

在CREATE DATABASE前DROP DATABASE。

–add-drop-table

在CREATE TABLE前DROP TABLE。

–add-drop-trigger

在CREATE TRIGGER 前DROP TRIGGER。

–add-locks

在INSERT前後分别加LOCK TABLES和UNLOCK TABLES。

–all-databases

備份所有庫中所有表。

–allow-keywords

允許列名包含關鍵字。

–apply-slave-statements

在CHANGE MASTER前加 STOP SLAVE在最後添加 START SLAVE。

–bind-address=ip_address

對于有多個網絡接口的機器選擇使用指定的接口連接配接MySQL。

–comments

為備份檔案添加注釋。

–compact

禁用結構化注釋及首尾結構體。開啟–skip-add-drop-table、–skip-add-locks、–skip-comments、–skip-disable-keys、–skip-set-charset以産生更緊促的輸出。

–compatible=name[,name,…]

産生與其他資料庫或者老版MySQL相容的備份檔案,可用的值有ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options。可同時使用多個以逗号分隔的值。

–complete-insert

使用帶有列名的完整INSERT。

–create-options

在CREATE TABLE中使用MySQL特定的表選項。

–databases

備份多個資料庫,選項後跟多個庫名。備份檔案中會包含USE db_name。

–debug[=debug_options]

寫debug日志。

–debug-check

程式退出時列印一些調試資訊

–debug-info

程式退出時列印一些有關cpu和memory的統計資訊。

–default-auth=plugin

指明要使用的用戶端認證插件

–default-character-set=charset_name

設定預設字元集

–delayed-insert

使用INSERT DELAYED 而非INSERT。MySQL5.6.6中INSERT DELAYED已不被推薦使用,相應的該選項也将來未來的mysqldump中移除。

–delete-master-logs

在master上備份後删除其二進制日志。該選項會自動激活—master-data選項。

–disable-keys

對每個表在INSERT前後分别加/!40000 ALTER TABLE

articles

DISABLE KEYS /和/!40000 ALTER TABLE

articles

ENABLE KEYS /。可使從備份檔案恢複資料更快,因為索引在所有行插入後建立。僅對于MyISAM表的非唯一索引。

–dump-date

若使用了—comments選項則會在末尾顯示– Dump completed on xxxxxx,以标記時間。

–dump-slave[=value]

會在輸出結果添加包含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結 合使用。

–events

為備份的資料庫備份事件。

–extended-insert

使用包含多個值清單的多行INSERT。

–fields-enclosed-by=string

與—tab選項結合使用。指明輸出檔案中的filed以何種字元串enclosed,與 LOAD DATA INFILE對應的選項意義相同。

–fields-escaped-by

同上

–fields-optionally-enclosed-by=string

同上

–fields-terminated-by=string

同上

–flush-logs

在備份前重新整理MySQL日志。需RELOAD權限。若同時備份多個資料庫,如使用—all-database或—database,則對于每個備份 的資料庫都會重新整理一次日志,除非使用了—master-data或—lock-all-tables,此時日志僅在鎖定表時重新整理一次。若想讓備份和重新整理日 志同時進行需結合使用—lock-all-tables或—master-data。

–flush-privileges

在備份了mysql這個資料庫後發出FLUSH PRIVILEGES語句。本分mysql庫或依賴mysql庫中資料的庫時需使用。

–help

顯示幫助資訊

–hex-blob

将二進制列,如,BINARY,VARBINARY,BLOB,BIT備份為十六進制形式。

–host

要連接配接的主機

–ignore-table=db_name.tbl_name

指明不備份的表

–include-master-host-port

使用了–dump-slave時在CHANGE MASTER語句中加入MASTER_HOST和MASTER_PORT。

–insert-ignore

用INSERT IGNORE 而非INSERT ,以忽略重複的資料。

–lines-terminated-by=string

與—tab選項結合使用。與LOAD DATA INFILE的LINE意義相同。指明行由何種字元串terminated。

–lock-all-tables

通過在備份期前加read lock鎖定所有庫的所有表。會自動關閉—single-transaction和—lock-tables。

–lock-tables

對于備份的庫在備份前鎖定将被備份的屬于該庫的表。使用READ LOCAL鎖定以允許MyIASM表的并發插入。對于事務型的表請使用—single-transaction而非—lock-tables。另外該選項 不能保證備份檔案上各資料庫間的表在邏輯上是一緻的,因為市委每個庫單獨鎖定表。一些選項如—opt會自動開啟—locak-tables,可通過使用在 其後使用–skip-lock-tables規避。

–log-error=file_name

在給定檔案中附加警告和錯誤資訊。

–login-path=name

從.mylogin.cnf登入檔案讀取登入參數。可通過mysql_config_editor建立登入檔案。

–master-data[=value]

在輸出中添加二進制日志名和位置。會開啟—lock-all-tables除非也是用了—single-transaction。會自動關閉—lock-tables。

–max_allowed_packet=value

可發送或接收的最大包分組長度。

–net_buffer_length=value

TCP/IP及socket通訊的buffer大小。

–no-autocommit

在INSERT前後添加set autocommit=0和commit。

–no-create-db

若使用了—all-databases或—databases,不在輸出中添加CREATE DATABASE。

–no-create-info

不使用CREATE TABLE 重建備份的表。

–no-data

隻備份結構不備份資料。

–no-set-names

同–skip-set-charset不設定charset。

–no-tablespaces

不在輸出中使用CREATE LOG FILE和CREATE TABLESPACE。

–opt

–add-drop-table, –add-locks, –create-options, –quick, –extended-insert, –lock-tables, –set-charset,和–disable-keys幾個選項合起來的簡寫形式。

–order-by-primary

将備份的表中的行按主鍵排序或者第一個唯一鍵排序。當備份MyISAM表且将被載入到InnoDB表時很有用,打包備份本身的時間會較長。

–password[=password]

連接配接主機的密碼

–pipe

在Windows上通過命名管道連接配接server。

–plugin-dir=path

插件存放目錄。

–port=port_num

通過主機所使用的端口。

–protocol=type

連接配接主機所使用的協定。

–quick

備份時逐行讀取表而非一次全部行後緩沖在記憶體中。在備份大表時有用。

–quote-names

使用“`”包圍資料庫名、表名、列名等辨別符。若使用了ANSI_QUOTES則用“””包圍。特别的,可能需要在—compatible後開啟該選項。

–replace

使用REPLACE而非INSERT。

–result-file=file

将結果輸出帶指定的檔案。

–routines

備份routines(存儲過程和函數)。

–set-charset

添加SET NAMES default_character_set。預設開啟。

–set-gtid-purged=value

确定是否在結果中添加SET @@GLOBAL.GTID_PURGED。若為ON但在server中沒有開啟GTID則發生錯誤。若OFF則什麼都不做。若AUTO則server中開啟GTID那麼添加上述語句,反之不加。

–single-transaction

在備份前設定事務隔離級别為REPEATABLE READ并向server發送START TRANSACTION語句。僅對事務型表如InnoDB有用。與–ock-tables互斥。對于大檔案備份–single- transaction與–quick結合使用。

–skip-add-drop-table

禁用–add-drop-table。

–skip-add-locks

禁用–add-locks。

–skip-comments

禁用—comments。

–skip-compact

禁用—compact。

–skip-disable-keys

禁用—disable-keys。

–skip-extended-insert

禁用–extended-insert。

–skip-opt

禁用–skip-opt。

–skip-quick

禁用–quick。

–skip-quote-names

禁用–quote-names。

–skip-set-charset

禁用—set-charset。

–skip-triggers

不備份triggers

–skip-tz-utc

禁用– tz-utc

–socket=path

連接配接本機server所使用的socket。

–ssl-ca=file_name

包含信任的SSL CAs清單的檔案名。

–ssl-capath=dir_name

包含PEM格式的可信任SSL CA憑證的目錄。

–ssl-cert=file_name

用于建立安全連接配接的SSL證書檔案的名字。

–ssl-cipher=cipher_list

一系列用于SSL加密的所允許的密碼。

–ssl-crl=file_name

包含證書廢止清單的檔案名。

–ssl-crlpath=dir_name

包含證書廢止清單的檔案的目錄。

–ssl-key=file_name

用于建立安全連接配接的SSL key檔案名。

–ssl-verify-server-cert

The server’s Common Name value in its certificate is verified against the host name used when connecting to the server

–tab=path

對于每個備份的表mysqldump建立一個包含CREATE TABLE語句的tbl_name.sql,而被連接配接的server會建立一個由tab鍵分隔的包含相應資料的tbl_name.txt。選項值為将被寫 入的目錄。當mysqldump與mysqld處于同一主機時使用。否則tbl_name.txt檔案會被寫入遠端主機相應的目錄。當使用了— databases或—all-databases時該選項不适用。

–tables

覆寫–databases 或 -B 選項。該選項後的名稱參數均被認為是表名。

–triggers

為每個備份的表備份trigger。

–tz-utc

在備份檔案中添加SET TIME_ZONE=’+00:00’。

–user=user_name

連接配接server所使用的使用者名

–verbose

詳細模式。

–version

顯示版本資訊并退出。t

–where=’where_condition’

僅備份與where條件中比對的行。

–xml

産生XML格式的輸出。

指令行選項對應的配置檔案及預設值

指令行

配置檔案

預設值

引入版本

–add-drop-database

add-drop-database

FALSE

–add-drop-table

add-drop-table

TRUE

–add-drop-trigger

add-drop-trigger

FALSE

–add-locks

add-locks

TRUE

–all-databases

all-databases

FALSE

–allow-keywords

allow-keywords

FALSE

–apply-slave-statements

apply-slave-statements

FALSE

–bind-address=ip_address

bind-address

NO

–comments

comments

TRUE

–compact

compact

FALSE

–compatible=name[,name,…]

compatible

NO

–complete-insert

complete-insert

FALSE

–create-options

create-options

TRUE

–databases

databases

FALSE

–debug[=debug_options]

debug

FALSE

–debug-check

debug-check

FALSE

–debug-info

debug-info

FALSE

–default-auth=plugin

default-auth=plugin

NO

–default-character-set=charset_name

default-character-set

utf8

–delayed-insert

delayed-insert

FALSE

–delete-master-logs

delete-master-logs

FALSE

–disable-keys

disable-keys

TRUE

–dump-date

dump-date

TRUE

–dump-slave[=value]

dump-slave

–events

events

FALSE

–extended-insert

extended-insert

TRUE

–fields-enclosed-by=string

fields-enclosed-by

NO

–fields-escaped-by

fields-escaped-by

NO

–fields-optionally-enclosed-by=string

fields-optionally-enclosed-by

NO

–fields-terminated-by=string

fields-terminated-by

NO

–flush-logs

flush-logs

FALSE

–flush-privileges

flush-privileges

FALSE

–help

–hex-blob

hex-blob

FALSE

–host

host

NO

–ignore-table=db_name.tbl_name

ignore-table

NO

–include-master-host-port

include-master-host-port

FALSE

–insert-ignore

insert-ignore

FALSE

–lines-terminated-by=string

lines-terminated-by

NO

–lock-all-tables

lock-all-tables

FALSE

–lock-tables

lock-tables

TRUE

–log-error=file_name

log-error

NO

–login-path=name

NO

5.6.6

–master-data[=value]

master-data

–max_allowed_packet=value

max_allowed_packet

25165824

–net_buffer_length=value

net_buffer_length

1046528

–no-autocommit

no-autocommit

FALSE

–no-create-db

no-create-db

FALSE

–no-create-info

no-create-info

FALSE

–no-data

no-data

FALSE

–no-set-names

no-set-names

FALSE

–no-tablespaces

no-tablespaces

FALSE

–opt

opt

TRUE

–order-by-primary

order-by-primary

FALSE

–password[=password]

password

NO

–pipe

NO

–plugin-dir=path

plugin-dir=path

NO

–port=port_num

port

–protocol=type

protocol

–quick

quick

TRUE

–quote-names

quote-names

TRUE

–replace

replace

FALSE

–result-file=file

result-file

NO

–routines

routines

FALSE

–set-charset

set-charset

TRUE

–set-gtid-purged=value

set-gtid-purged

5.6.9

–single-transaction

single-transaction

FALSE

–skip-add-drop-table

skip-add-drop-table

FALSE

–skip-add-locks

skip-add-locks

FALSE

–skip-comments

skip-comments

FALSE

–skip-compact

skip-compact

TRUE

–skip-disable-keys

skip-disable-keys

FALSE

–skip-extended-insert

skip-extended-insert

FALSE

–skip-opt

skip-opt

FALSE

–skip-quick

skip-quick

FALSE

–skip-quote-names

skip-quote-names

FALSE

–skip-set-charset

skip-set-charset

FALSE

–skip-triggers

skip-triggers

FALSE

–skip-tz-utc

skip-tz-utc

FALSE

–socket=path

socket

NO

–ssl-ca=file_name

ssl-ca

NO

–ssl-capath=dir_name

ssl-capath

NO

–ssl-cert=file_name

ssl-cert

NO

–ssl-cipher=cipher_list

ssl-cipher

NO

–ssl-crl=file_name

ssl-crl

NO

5.6.3

–ssl-crlpath=dir_name

ssl-crlpath

NO

5.6.3

–ssl-key=file_name

ssl-key

NO

–ssl-verify-server-cert

ssl-verify-server-cert

NO

–tab=path

tab

NO

–tables

tables

NO

–triggers

triggers

TRUE

–tz-utc

tz-utc

TRUE

–user=user_name

user

NO

–verbose

FALSE

–version

TRUE

–where=’where_condition’

where

NO

–xml

xml

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

繼續閱讀