天天看點

【MySQL】mysqldump參數詳解

參數 縮寫 是否預設 說明

--print-defaults

- - 用于列印預設參數

--no-defaults

- - 禁止從預設配置檔案中讀取預設參數,

mysqldump

預設會從

/etc/my.cnf

/etc/mysql/my.cnf

~/.my.cnf

預設配置檔案中

讀取

mysqldump

mariadb-dump

client、

client-server

client-mariadb

等用戶端配置。

--defaults-file

- - 指定

mysqldump

預設配置檔案,

mysqldump

将僅從該檔案讀取預設配置。

--defaults-extra-file

- - 指定

mysqldump

額外的配置檔案,

mysqldump

将除了從預設配置檔案讀取配置外,

還将從該檔案讀取。

--defaults-group-suffix

- - 除預設組外,額外讀取的組名,多個用逗号分隔。

--all-databases

-A

False

備份所有庫

--all-tablespaces

-Y

False

備份所有表空間

--no-tablespaces

-y

False

不備份任何表空間

--add-drop-database

False

CREATE DATABASE

前添加

DROP DATABASE

--add-drop-table

True

CREATE TABLE

前添加

DROP TABLE

--skip-add-drop-table

- 禁用**

--add-drop-table

**

--add-drop-trigger

False

CREATE TRIGGER

前添加

DROP TRIGGER

--add-locks

True

INSERT

語句前添加

LOCK TABLES

,語句後添加

UNLOCK TABLES;

--skip-add-locks

- 禁用**

--add-locks

**

--allow-keywords

False

允許建立包含關鍵字的列名

--apply-slave-statements

False

CHANGE MASTER

前添加

STOP SLAVE

,備份檔案末尾添加

START SLAVE

--character-sets-dir

- 字元集檔案目錄,用

--character-sets-dir=name

指定

--comments*

-i

True

添加注釋資訊

--skip-comments

- 禁用**

--comments*

**

--compatible

- 與其他資料庫或不同

mysql

版本比對,需要

4.1.0

以上版本;

可以設定的值有

ansi

,

mysql323

,

mysql40

,

postgresql

,

oracle

,

mssql

,

db2

,

maxdb

,

no_key_options

,

no_table_options

,

no_field_options

--compatible=name

指定,多個用逗号分隔

--compact

False

禁用注釋和前後的

dump

檔案資訊,提供較少輸出,适用于調試;

預設啟用以下選項:

--skip-add-drop-table

--skip-add-locks

--skip-comments

--skip-disable-keys

--skip-set-charset

--complete-insert

-c

False

使用帶有完整列名的

INSERT

語句,預設不帶列名

--compress

-C

False

在服務端和用戶端的協定中使用壓縮

--create-options

-a

True

包含所有MySQL的特定建立選項

--skip-create-options

- 禁用**

--create-options

**

--databases

-B

False

備份多個資料庫,如果沒有使用

--tables

選項,

後邊的值都将被認為是資料庫名,多個用逗号分隔;

将會在輸出檔案中添加

'USE db_name'

--debug

-#

非調試版本

--debug-check

False

在退出時檢查記憶體和打開檔案的使用情況

--debug-info

False

在退出時列印一些調試資訊,包括使用者占用

CPU

事件,

系統占用

CPU

事件,上下文切換等系統資訊。

--default-character-set

utf8

設定預設字元集,

--default-character-set=utf8

--delayed-insert

False

使用

INSERT DELAYED

而表示

INSERT

插入資料,

INSERT DELAYED

在空閑時候插入資料,當有如

SELECT

等其他操作時候,

先處理其他操作,新版本已經不支援了。

--delete-master-logs

False

備份後從

master

删除日志,該選項會自動啟用

--masert-data

選項

--disable-keys

-K

True

INSERT

語句前添加

';

禁用索引,

INSERT

語句後添加

';

啟用索引;

因為一次建立索引比逐行建立效率更高,這樣可以提高資料恢複效率。

--skip-disable-keys

禁用**

--disable-keys

**

--dump-slave

會将二進制檔案位置和主檔案名附加到備份檔案中,

預設為

如果為

1

,将會以

CHANGE MASTER

語句方式輸出到備份檔案;

如果為

2

CHANGE MASTER

語句将會以注釋形式輸出到備份檔案;

除非指定了

--single-transaction

,否則

将自動開啟全局鎖

--lock-all-tables

;

該選項會自動關閉

--lock-tables

--events

-E

False

備份事件

--extended-insert

-e

True

使用包含多個值清單的多行插入文法。

--skip-extended-insert

- 禁用**

--extended-insert

**

--fields-terminated-by

- 結合**

-T,--tab=path

**選項使用,

tb_name.txt

檔案中的字段以指定字元串結尾,預設是

TAB

--fields-terminated-by=name

--fields-enclosed-by

- 結合**

-T,--tab=path

**選項使用,

tb_name.txt

檔案中的字段以指定字元串括起來,預設無

--fields-enclosed-by=name

--fields-optionally-enclosed-by

- 結合**

-T,--tab=path

**選項使用,

tb_name.txt

檔案中的字段以指定字元串括起來,預設無

--fields-optionally-enclosed-by=name

--fields-escaped-by

- 結合**

-T,--tab=path

**選項使用,

tb_name.txt

檔案中的字段以指定字元串轉義,預設

\

,

效果就是将

\

替換成指定字元,

--fields-escaped-by=name

--flush-logs

-F

False

備份前生成新的伺服器備份庫的二進制日志檔案,

備份多個庫則每個庫都會生成一個,

需要

RELOAD

權限,

如果隻想生成一次,則應搭配

--lock-all-tables

--master-data

使用

--flush-privileges

False

在備份後執行

FLUSH PRIVILEGES

在備份包含

MySQL

資料庫或任何依賴

MySQL

中的資料庫的資料庫時需要使用

--force

-f

False

忽略錯誤

--gtid

-

--master-data=1

dump-slave=1

搭配使用,

當啟用時,輸出内容中将設定

GTID

位置替代

binlog

檔案和偏移量,

binlog

檔案和偏移量将僅作為注釋顯示;

當禁用時,與之相反,

GTID

将僅作為注釋顯示

--help

-?

- 顯示

mysqldump

工具幫助資訊

--hex-blob

False

BINARY, VARBINARY, BLOB

格式的二進制字元串備份成十六進制

--host

-h

- 指定連接配接主機,

--host=name

--ignore-database

-

忽略備份的庫,忽略多個庫需要多次使用該指令;

--all-database

-A

搭配使用

--ignore-database=db_name

--ignore-table-data

-

忽略備份的表的資料,忽略多個表的資料需要多次使用該指令;

必須同時指定資料庫和表名;

--ignore-table-data=db_name.tb_name

--ignore-table

-

忽略備份的表,忽略多個表需要多次使用該指令;

必須同時指定資料庫和表名;

--ignore-table=db_name.tb_name

--include-master-host-port

False

在使用

--dump-slave

時候,

CHANGE MASTER TO

語句中添加

MASTER_HOST=host

MASTER_PORT=port

--insert-ignore

False

使用

INSERT IGNORE

替代

INSERT

,有重複資料時候忽略報錯

--lines-terminated-by

- 結合**

-T,--tab=path

**選項使用,

tb_name.txt

檔案以指定字元串結尾,預設無,

--lines-terminated-by=name

--lock-all-tables

-x

False

在備份期間通過擷取全局讀取鎖來鎖定所有庫和所有表,

将會自動關閉

--single-transaction

--lock-tables

--lock-tables

-l

True

對需要備份的庫的所有表加讀鎖,

事務型表使用

--single-transaction

而非**

--lock-tables

**

--skip-lock-tables

- 關閉**

--lock-tables

**

--log-error

- 指定檔案中添加告警和錯誤日志,

--log-error=file

--log-queries

True

到資料恢複時,如果日志記錄是打開的,把查詢記錄到正常和慢查詢日志中

--skip-log-queries

- 禁用**

--log-queries

**

--master-data

将日志檔案名和位置附加到備份檔案中,預設值為 如果值為

1

,将會以

CHANGE MASTER

指令的形式附加,

如果值為2,

CHANGE MASTER

指令将會以注釋形式附加,

除非指定了

--single-transaction

否則将自動開啟全局讀鎖選項

--lock-all-tables

該選項會自動關閉

--lock-tables

--master-data=0

--max-allowed-packet

25165824

與伺服器通信的最大資料包長度,應該大于單行資料大小,

小于mysql服務端設定的該變量大小,預設

24M

--net-buffer-length

1046528

TCP/IP和Socket通信的緩沖區大小

--no-autocommit

False

INSERT

語句前添加

set autocommit=0;

INSERT

語句及

UNLOCK TABLES

後添加

commit;

,

autocommit=0

表示目前連接配接的操作都會被當成一個事務,

直到調用

commit

送出或

ROLLBACK

可以復原;

autocommit=1

每條語句會被當成單獨的事務,自動

commit

--no-create-db

-n

False

--all-databases

--databases

搭配使用,

取消建立資料庫

CREATE DATABASE...IF NOT EXISTS

語句

--no-create-info

-t

False

取消建立資料表相關語句,

包括

DROP TABLE IF EXISTS...

CREATE TABLE...

語句

--no-data

-d

False

僅備份資料結構,不備份資料

--no-set-names

-N

- 等同于

--skip-set-charset

--opt

- 等同于

--add-drop-table --add-locks --create-options --quick

--extended-insert --lock-tables --set-charset --disable-keys

--skip-opt

- 禁用**

--opt

**,

禁用

--add-drop-table --add-locks --create-options --quick

--extended-insert --lock-tables --set-charset --disable-keys

--order-by-primary

False

如果備份表存在主鍵和唯一鍵,将會以主鍵和唯一鍵排序,

對于需要将MyISAM資料導入INNODB表時非常有用,

但會增加資料備份時長

--password

-p

- 使用者賬号的密碼,如果沒有給出密碼則會提示輸入密碼,

--password=name

--port

-P

MySQL

服務連接配接端口,

--port=3306

--protocol

- 連接配接協定,可選的有

tcp、socket、pipe、memory

--protocol=name

--quick

-q

True

不緩沖查詢,直接将結果轉向标準輸出

--skip-quick

- 禁用**

--quick

**

--quote-names

-Q

True

表名、列名、字段等加反引号括起來

--skip-quote-names

- 禁用**

--quote-names

**

--replace

False

使用

REPLACE INTO

語句替代

INSERT INTO

語句,

REPLACE INTO

會先根據主鍵或唯一索引判斷是否有重複資料,

如果有則替換舊資料,沒有則直接插入新資料,

沒有主鍵或唯一索引的表可能導緻重複資料

--result-file=name

-r

-

結果輸出到指定檔案中,

用在使用回車換行符

\r\n

分隔文本的系統中,如

Windows

DOS

--result-file=name

--routines

-R

False

備份函數和存儲過程

--set-charset

True

再備份檔案中添加字元集相關資訊,

;

;

;

;

--skip-set-charset

- 禁用**

--set-charset

**

--single-transaction

False

通過在一個事務中備份所有表來建立一緻性快照,

設定事務隔離級别為可重複讀,即

Repeatable Read

并向服務端發送

START TRANSACTION

,在這期間不會鎖表

其他連接配接對資料的修改對事務内相同的查詢結果沒有影響,

僅對支援事務隔離的引擎有效,目前隻支援INNODB,

為保障備份有效性,其他連接配接不可以使用

ALTER TABLE

DROP TABLE

TRUNCATE TABLE

RENAME TABLE

語句,

因為事務快照不會與它們隔離,

該選項會自動關閉選項

--lock-tables

--dump-date

True

在備份檔案末尾添加備份完成日期和時間,

-- Dump completed on 2021-03-02 3:56:16

--skip-dump-date

- 禁用**

--dump-date

**,

備份檔案結尾為

-- Dump completed

,不再顯示日期和時間

--socket=name

-S

-

Socket

連接配接檔案位址,

--socket=name

--ssl

False

連接配接啟用

SSL

(使用其他标志自動啟用)

--ssl-ca

- 指定

PEM

格式的

CA

檔案名稱,自動啟用

--ssl

--ssl-ca=name

--ssl-capath

- 指定

CA

檔案目錄,自動啟用

--ssl

--ssl-capath=name

--ssl-cert

- 指定

PEM

格式的

X509

證書檔案名稱,自動啟用

--ssl

--ssl-cert=name

--ssl-cipher

- 用于

SSL

加密的密碼,自動啟用

--ssl

--ssl-cipher=name

--ssl-key

- 指定

PEM

格式的

X509

密鑰檔案名稱,自動啟用

--ssl

--ssl-key=name

--ssl-verify-server-cert

False

用主機名驗證證書中的

Common Name

字段

--tab

-T

- 在指定目錄建立

TAB

分隔的

tb_name.txt

檔案和資料備份檔案

tb_name.sql

僅當

mysqldump

與伺服器在一台伺服器時使用,

目錄需要設定

chown mysql.mysql tab_path

,

--tab=name

--tables

- 覆寫選項

--databases

,指定單個資料庫的多張表

--triggers

True

備份表關聯的觸發器

--skip-triggers

- 禁用**

--triggers

**

--tz-utc

True

在備份檔案開頭添加

SET TIME_ZONE='+00:00'

允許備份的資料庫中有不同時區的

TIMESTAMP

類型資料,

或要将這一類資料遷移到不同時區時

--skip-tz-utc

- 禁用**

--tz-utc

**

--user

-u

- 用于連接配接的使用者賬号,

--user=name

--verbose

-v

False

顯示備份過程中各階段資訊

--version

-V

- 列印版本号

--where=name

-w

- 僅備份標明的資料記錄,在查詢語句後邊添加

WHERE

條件語句

--where=name

--xml

-X

- 備份檔案以

xml

格式導出

--plugin-dir

- 用戶端插件目錄,

--plugin-dir=name

--default-auth

- 用戶端驗證插件名稱,

--default-auth=name

繼續閱讀