mysqldump命令詳解

1.簡介html

mysqldump爲MySQL邏輯備份工具,產生一系列SQL語句,以後從新執行以產生備份的庫、表及數據。也可產生CSV、XML等格式的數據。適用於各種引擎的表。mysql

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

2.語法shell

備份一個或多個表:
shell>mysqldump [options] db_name [table_name……]數據庫

備份一個或多個庫:
shell>mysqldump [options] –databases dbname……安全

備份全部數據庫:
shell>mysqldump [options] –all-databases網絡

3.性能與擴展性併發

提供了在恢復前查看並編輯備份文件的便捷性和靈活性。不適用於大數據量的備份(即便備份過程較快,但在恢復數據時因插入、建索引等操做會形成高昂I/O開銷)。oracle

對於大規模備份,考慮使用物理方法,如:mysqlbackup(適於InnoDB、MyISAM及其餘表)、mysqlhotcopy(適於MyISAM表)、Xtrabackup(適於InnoDB及MyISAM表)、LVM(適於各種表)等。app

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

0

 

--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

0

 

--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

0

 

--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

相關文章
相關標籤/搜索