mysqldump 用戶端公用程式執行邏輯備份,產生一組 SQL 陳述式,這些陳述式可以執行以重現原始資料庫物件定義和資料表資料。它會傾印一個或多個 MySQL 資料庫以進行備份或傳輸到另一個 SQL 伺服器。mysqldump 命令也可以產生 CSV、其他分隔文字或 XML 格式的輸出。
請考慮使用MySQL Shell 傾印公用程式,它提供多執行緒的平行傾印、檔案壓縮和進度資訊顯示,以及雲端功能,例如 Oracle Cloud Infrastructure Object Storage 串流,以及 MySQL HeatWave Service 相容性檢查和修改。可以使用MySQL Shell 載入傾印公用程式,輕鬆將傾印匯入 MySQL 伺服器執行個體或 MySQL HeatWave Service DB 系統。MySQL Shell 的安裝說明可以在這裡找到。
mysqldump 至少需要傾印資料表的SELECT
權限、傾印檢視表的SHOW VIEW
權限、傾印觸發器的TRIGGER
權限、如果未使用--single-transaction
選項則需要LOCK TABLES
權限,如果未使用 --no-tablespaces
選項則需要PROCESS
權限,以及如果 gtid_mode=ON
和 gtid_purged=ON|AUTO
都存在,則使用--single-transaction
時需要 RELOAD
或 FLUSH_TABLES
權限。某些選項可能需要其他權限,如選項描述中所述。
若要重新載入傾印檔案,您必須擁有執行其中包含的陳述式所需的權限,例如為這些陳述式建立的物件提供適當的 CREATE
權限。
mysqldump 輸出可以包含變更資料庫定序的 ALTER DATABASE
陳述式。當傾印儲存的程式以保留其字元編碼時,可能會使用這些陳述式。若要重新載入包含這類陳述式的傾印檔案,則需要受影響資料庫的 ALTER
權限。
在 Windows 上使用 PowerShell 進行傾印,並使用輸出重新導向會建立具有 UTF-16 編碼的檔案
mysqldump [options] > dump.sql
但是,UTF-16 不允許作為連線字元集(請參閱不允許的用戶端字元集),因此傾印檔案無法正確載入。若要解決此問題,請使用 --result-file
選項,它會以 ASCII 格式建立輸出
mysqldump [options] --result-file=dump.sql
如果您的傾印檔案包含系統資料表,則不建議在伺服器上啟用 GTID 時載入傾印檔案(gtid_mode=ON
)。mysqldump 會針對使用非交易性 MyISAM 儲存引擎的系統資料表發出 DML 指示,當啟用 GTID 時,不允許此組合。
效能和可擴展性考量
mysqldump
的優點包括在還原之前檢視甚至編輯輸出的便利性和彈性。您可以複製資料庫以進行開發和 DBA 工作,或產生現有資料庫的輕微變體以進行測試。它不適用於備份大量資料的快速或可擴展解決方案。對於大型資料大小,即使備份步驟花費合理的時間,還原資料也可能非常緩慢,因為重新執行 SQL 陳述式涉及插入、索引建立等的磁碟 I/O。
對於大規模備份和還原,實體備份更適合,以原始格式複製資料檔案,以便可以快速還原。
如果您的資料表主要為 InnoDB
資料表,或者如果您同時有 InnoDB
和 MyISAM
資料表,請考慮使用 mysqlbackup,這是 MySQL Enterprise 的一部分。此工具為 InnoDB
備份提供高效能且干擾最小;它也可以備份來自 MyISAM
和其他儲存引擎的資料表;它還提供許多方便的選項,以適應不同的備份情境。請參閱第 32.1 節,〈MySQL Enterprise Backup 概觀〉。
mysqldump 可以逐行擷取並傾印表格內容,或者它可以從表格中擷取全部內容並在傾印前將其緩衝至記憶體中。如果您傾印大型表格,記憶體緩衝可能會造成問題。要逐行傾印表格,請使用 --quick
選項(或 --opt
,它會啟用 --quick
)。預設情況下會啟用 --opt
選項(因此也會啟用 --quick
),因此要啟用記憶體緩衝,請使用 --skip-quick
。
如果您使用較新版本的 mysqldump 來產生要重新載入到非常舊的 MySQL 伺服器中的傾印,請使用 --skip-opt
選項,而不是 --opt
或 --extended-insert
選項。
有關 mysqldump 的其他資訊,請參閱 第 9.4 節,〈使用 mysqldump 進行備份〉。
調用語法
一般來說,有三種方式可以使用 mysqldump — 以傾印一組或多個表格、一組或多個完整的資料庫,或整個 MySQL 伺服器 — 如下所示
mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases
要傾印整個資料庫,請不要在 db_name
後面命名任何表格,或使用 --databases
或 --all-databases
選項。
若要查看您版本的 mysqldump 支援的選項清單,請發出命令 mysqldump --help
。
選項語法 - 依字母順序摘要
mysqldump 支援以下選項,這些選項可以在命令列或選項檔案的 [mysqldump]
和 [client]
群組中指定。有關 MySQL 程式使用的選項檔案資訊,請參閱 第 6.2.2.2 節,〈使用選項檔案〉。
表 6.13 mysqldump 選項
選項名稱 | 描述 |
---|---|
--add-drop-database | 在每個 CREATE DATABASE 陳述式之前新增 DROP DATABASE 陳述式 |
--add-drop-table | 在每個 CREATE TABLE 陳述式之前新增 DROP TABLE 陳述式 |
--add-drop-trigger | 在每個 CREATE TRIGGER 陳述式之前新增 DROP TRIGGER 陳述式 |
--add-locks | 用 LOCK TABLES 和 UNLOCK TABLES 陳述式包圍每個表格傾印 |
--all-databases | 傾印所有資料庫中的所有表格 |
--allow-keywords | 允許建立為關鍵字的欄名稱 |
--apply-replica-statements | 在 CHANGE REPLICATION SOURCE TO 陳述式之前包含 STOP REPLICA,並在輸出結束時包含 START REPLICA |
--apply-slave-statements | 在 CHANGE MASTER 陳述式之前包含 STOP SLAVE,並在輸出結束時包含 START SLAVE |
--bind-address | 使用指定的網路介面連線到 MySQL 伺服器 |
--character-sets-dir | 字元集安裝所在的目錄 |
--column-statistics | 寫入 ANALYZE TABLE 陳述式以產生統計直方圖 |
--comments | 將註解新增至傾印檔案 |
--compact | 產生更精簡的輸出 |
--compatible | 產生與其他資料庫系統或較舊的 MySQL 伺服器更相容的輸出 |
--complete-insert | 使用包含欄名稱的完整 INSERT 陳述式 |
--compress | 壓縮用戶端與伺服器之間傳送的所有資訊 |
--compression-algorithms | 允許連線到伺服器的壓縮演算法 |
--create-options | 在 CREATE TABLE 陳述式中包含所有 MySQL 特有的表格選項 |
--databases | 將所有名稱引數解譯為資料庫名稱 |
--debug | 寫入除錯日誌 |
--debug-check | 程式結束時列印除錯資訊 |
--debug-info | 程式結束時列印除錯資訊、記憶體和 CPU 統計資料 |
--default-auth | 要使用的驗證外掛程式 |
--default-character-set | 指定預設字元集 |
--defaults-extra-file | 除了常用的選項檔案外,還讀取指定的選項檔案 |
--defaults-file | 僅讀取指定的選項檔案 |
--defaults-group-suffix | 選項群組後綴值 |
--delete-master-logs | 在複寫來源伺服器上,執行傾印作業後刪除二進位日誌 |
--delete-source-logs | 在複寫來源伺服器上,執行傾印作業後刪除二進位日誌 |
--disable-keys | 針對每個表格,用陳述式來停用和啟用索引鍵包圍 INSERT 陳述式 |
--dump-date | 如果給定 --comments,則包含傾印日期作為「傾印完成於」註解 |
--dump-replica | 包含列出複本來源二進位日誌座標的 CHANGE REPLICATION SOURCE TO 陳述式 |
--dump-slave | 包含列出複本來源二進位日誌座標的 CHANGE MASTER 陳述式 |
--enable-cleartext-plugin | 啟用明文驗證外掛程式 |
--events | 從傾印的資料庫中傾印事件 |
--extended-insert | 使用多列 INSERT 語法 |
--fields-enclosed-by | 此選項與 --tab 選項一起使用,其含義與 LOAD DATA 的對應子句相同 |
--fields-escaped-by | 此選項與 --tab 選項一起使用,其含義與 LOAD DATA 的對應子句相同 |
--fields-optionally-enclosed-by | 此選項與 --tab 選項一起使用,其含義與 LOAD DATA 的對應子句相同 |
--fields-terminated-by | 此選項與 --tab 選項一起使用,其含義與 LOAD DATA 的對應子句相同 |
--flush-logs | 在開始傾印之前清除 MySQL 伺服器日誌檔案 |
--flush-privileges | 傾印 mysql 資料庫後發出 FLUSH PRIVILEGES 陳述式 |
--force | 即使在表格傾印期間發生 SQL 錯誤,仍繼續執行 |
--get-server-public-key | 從伺服器請求 RSA 公開金鑰 |
--help | 顯示說明訊息並結束 |
--hex-blob | 使用十六進位標記傾印二進位欄 |
--host | MySQL 伺服器所在的伺服器主機 |
--ignore-error | 忽略指定的錯誤 |
--ignore-table | 不要傾印指定的表格 |
--ignore-views | 跳過傾印表格檢視 |
--include-master-host-port | 在用 --dump-slave 產生的 CHANGE MASTER 陳述式中包含 MASTER_HOST/MASTER_PORT 選項 |
--include-source-host-port | 在用 --dump-replica 產生的 CHANGE REPLICATION SOURCE TO 陳述式中包含 SOURCE_HOST 和 SOURCE_PORT 選項 |
--init-command | 連線或重新連線到 MySQL 伺服器後要執行的單一 SQL 陳述式;重設現有已定義的命令 |
--init-command-add | 新增一個 SQL 陳述式,以便在連線或重新連線到 MySQL 伺服器後執行 |
--insert-ignore | 寫入 INSERT IGNORE 而不是 INSERT 陳述式 |
--lines-terminated-by | 此選項與 --tab 選項一起使用,其含義與 LOAD DATA 的對應子句相同 |
--lock-all-tables | 鎖定所有資料庫中的所有表格 |
--lock-tables | 在傾印所有表格之前先鎖定它們 |
--log-error | 將警告和錯誤附加到指定檔案 |
--login-path | 從 .mylogin.cnf 讀取登入路徑選項 |
--master-data | 將二進位日誌檔案名稱和位置寫入輸出 |
--max-allowed-packet | 要傳送至或接收自伺服器的最大封包長度 |
--mysqld-long-query-time | 慢查詢臨界值的會話值 |
--net-buffer-length | 用於 TCP/IP 和 Socket 通訊的緩衝區大小 |
--network-timeout | 增加網路逾時,以允許較大的表格傾印 |
--no-autocommit | 將每個傾印表格的 INSERT 陳述式包圍在 SET autocommit = 0 和 COMMIT 陳述式中 |
--no-create-db | 不要寫入 CREATE DATABASE 陳述式 |
--no-create-info | 不要寫入重新建立每個傾印表格的 CREATE TABLE 陳述式 |
--no-data | 不要傾印表格內容 |
--no-defaults | 不讀取任何選項檔案 |
--no-login-paths | 不要從登入路徑檔案讀取登入路徑 |
--no-set-names | 與 --skip-set-charset 相同 |
--no-tablespaces | 不要在輸出中寫入任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 陳述式 |
--opt | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 的縮寫 |
--order-by-primary | 將每個表格的資料列依其主索引鍵或其第一個唯一索引排序後傾印 |
--output-as-version | 決定傾印中使用的複本和事件術語;以與較舊版本相容 |
--password | 連線到伺服器時要使用的密碼 |
--password1 | 連線到伺服器時要使用的第一個多因素驗證密碼 |
--password2 | 連線到伺服器時要使用的第二個多因素驗證密碼 |
--password3 | 連線到伺服器時要使用的第三個多因素驗證密碼 |
--pipe | 使用具名管道連線到伺服器(僅限 Windows) |
--plugin-authentication-kerberos-client-mode | 允許透過 Windows 上的 MIT Kerberos 程式庫進行 GSSAPI 外掛程式驗證 |
--plugin-dir | 外掛程式安裝所在的目錄 |
--port | 連線的 TCP/IP 連接埠號碼 |
--print-defaults | 列印預設選項 |
--protocol | 要使用的傳輸協定 |
--quick | 一次從伺服器擷取表格的一列資料列 |
--quote-names | 在反引號字元中引用識別碼 |
--replace | 寫入 REPLACE 陳述式而不是 INSERT 陳述式 |
--result-file | 將輸出直接導向至指定的檔案 |
--routines | 從傾印的資料庫中傾印已儲存的常式(程序和函式) |
--server-public-key-path | 包含 RSA 公開金鑰的檔案路徑名稱 |
--set-charset | 將 SET NAMES default_character_set 新增至輸出 |
--set-gtid-purged | 是否將 SET @@GLOBAL.GTID_PURGED 新增至輸出 |
--shared-memory-base-name | 用於共用記憶體連線的共用記憶體名稱(僅限 Windows) |
--show-create-skip-secondary-engine | 從 CREATE TABLE 陳述式中排除 SECONDARY ENGINE 子句 |
--single-transaction | 在從伺服器傾印資料之前發出 BEGIN SQL 陳述式 |
--skip-add-drop-table | 不要在每個 CREATE TABLE 陳述式之前新增 DROP TABLE 陳述式 |
--skip-add-locks | 不要新增鎖定 |
--skip-comments | 不要將註解新增至傾印檔案 |
--skip-compact | 不要產生更精簡的輸出 |
--skip-disable-keys | 不要停用索引鍵 |
--skip-extended-insert | 關閉 extended-insert |
--skip-generated-invisible-primary-key | 不要在傾印檔案中包含產生的隱藏主索引鍵 |
--skip-opt | 關閉 --opt 設定的選項 |
--skip-quick | 不要一次從伺服器擷取表格的一列資料列 |
--skip-quote-names | 不要引用識別碼 |
--skip-set-charset | 不要寫入 SET NAMES 語句 |
--skip-triggers | 不要傾印觸發器 |
--skip-tz-utc | 關閉 tz-utc |
--socket | 要使用的 Unix socket 檔案或 Windows 具名管道 |
--source-data | 將二進位日誌檔案名稱和位置寫入輸出 |
--ssl-ca | 包含受信任 SSL 憑證授權單位列表的檔案 |
--ssl-capath | 包含受信任 SSL 憑證授權單位憑證檔案的目錄 |
--ssl-cert | 包含 X.509 憑證的檔案 |
--ssl-cipher | 用於連線加密的允許密碼 |
--ssl-fips-mode | 是否在客戶端啟用 FIPS 模式 |
--ssl-key | 包含 X.509 金鑰的檔案 |
--ssl-mode | 與伺服器連線所需的安全性狀態 |
--ssl-session-data | 包含 SSL 會期資料的檔案 |
--ssl-session-data-continue-on-failed-reuse | 若會期重複使用失敗是否要建立連線 |
--tab | 產生以 Tab 分隔的資料檔案 |
--tables | 覆寫 --databases 或 -B 選項 |
--tls-ciphersuites | 用於加密連線的允許 TLSv1.3 密碼套件 |
--tls-sni-servername | 客戶端提供的伺服器名稱 |
--tls-version | 用於加密連線的允許 TLS 協定 |
--triggers | 傾印每個傾印表格的觸發器 |
--tz-utc | 將 SET TIME_ZONE='+00:00' 新增至傾印檔案 |
--user | 連線至伺服器時要使用的 MySQL 使用者名稱 |
--verbose | 詳細模式 |
--version | 顯示版本資訊並結束 |
--where | 僅傾印由給定 WHERE 條件選取的列 |
--xml | 產生 XML 輸出 |
--zstd-compression-level | 使用 zstd 壓縮連線至伺服器的壓縮層級 |
連線選項
mysqldump 命令會登入 MySQL 伺服器以擷取資訊。以下選項指定如何連線至同一部機器或遠端系統上的 MySQL 伺服器。
-
命令列格式 --bind-address=ip_address
在具有多個網路介面的電腦上,使用此選項選取要用於連線至 MySQL 伺服器的介面。
--compress
,-C
命令列格式 --compress[={OFF|ON}]
已棄用 是 類型 布林值 預設值 關閉
如果可能,壓縮用戶端和伺服器之間傳送的所有資訊。請參閱第 6.2.8 節,「連線壓縮控制」。
此選項已棄用。預計會在 MySQL 的未來版本中移除。請參閱設定舊版連線壓縮。
--compression-algorithms=
value
命令列格式 --compression-algorithms=value
類型 設定 預設值 未壓縮
有效值 zlib
zstd
未壓縮
允許連線至伺服器的壓縮演算法。可用的演算法與
protocol_compression_algorithms
系統變數的相同。預設值為uncompressed
。如需詳細資訊,請參閱第 6.2.8 節,「連線壓縮控制」。
-
命令列格式 --default-auth=plugin
類型 字串 關於要使用的用戶端驗證外掛程式的提示。請參閱第 8.2.17 節,「可插拔驗證」。
-
命令列格式 --enable-cleartext-plugin
類型 布林值 預設值 FALSE
啟用
mysql_clear_password
明文驗證外掛程式。(請參閱第 8.4.1.3 節,「用戶端明文可插拔驗證」。) -
命令列格式 --get-server-public-key
類型 布林值 要求伺服器提供 RSA 金鑰對密碼交換所需的公開金鑰。此選項適用於使用
caching_sha2_password
驗證外掛程式進行驗證的用戶端。對於該外掛程式,伺服器不會傳送公開金鑰,除非要求。對於不使用該外掛程式進行驗證的帳戶,會忽略此選項。如果未使用基於 RSA 的密碼交換,也會忽略此選項,就像用戶端使用安全連線連線至伺服器時一樣。如果給定
--server-public-key-path=
並指定有效的公開金鑰檔案,它會優先於file_name
--get-server-public-key
。如需有關
caching_sha2_password
外掛程式的資訊,請參閱第 8.4.1.1 節,「快取 SHA-2 可插拔驗證」。 --host=
,host_name
-h
host_name
命令列格式 --host
從給定主機上的 MySQL 伺服器傾印資料。預設主機為
localhost
。-
命令列格式 --login-path=name
類型 字串 從
.mylogin.cnf
登入路徑檔案中具名的登入路徑讀取選項。「「登入路徑」」是一個選項群組,其中包含指定要連線至哪個 MySQL 伺服器以及要驗證為哪個帳戶的選項。若要建立或修改登入路徑檔案,請使用 mysql_config_editor 公用程式。請參閱第 6.6.7 節,「mysql_config_editor — MySQL 設定公用程式」。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --no-login-paths
略過從登入路徑檔案讀取選項。
請參閱
--login-path
以取得相關資訊。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
--password[=
,password
]-p[
password
]命令列格式 --password[=password]
類型 字串 用於連線至伺服器的 MySQL 帳戶密碼。密碼值是選用的。若未指定,mysqldump 會提示輸入密碼。若有指定,
--password=
或-p
與後面的密碼之間不得有空格。如果未指定密碼選項,則預設為不傳送密碼。在命令列上指定密碼應視為不安全。為避免在命令列上提供密碼,請使用選項檔案。請參閱第 8.1.2.1 節,「最終使用者密碼安全指南」。
若要明確指定沒有密碼,且 mysqldump 不應提示輸入密碼,請使用
--skip-password
選項。用於連線至伺服器的 MySQL 帳戶多因素驗證因素 1 的密碼。密碼值是選用的。若未指定,mysqldump 會提示輸入密碼。若有指定,
--password1=
與後面的密碼之間不得有空格。如果未指定密碼選項,則預設為不傳送密碼。在命令列上指定密碼應視為不安全。為避免在命令列上提供密碼,請使用選項檔案。請參閱第 8.1.2.1 節,「最終使用者密碼安全指南」。
若要明確指定沒有密碼,且 mysqldump 不應提示輸入密碼,請使用
--skip-password1
選項。--password1
和--password
是同義詞,--skip-password1
和--skip-password
也是同義詞。用於連線至伺服器的 MySQL 帳戶多因素驗證因素 2 的密碼。此選項的語意與
--password1
的語意類似;請參閱該選項的描述以取得詳細資訊。用於連線至伺服器的 MySQL 帳戶多因素驗證因素 3 的密碼。此選項的語意與
--password1
的語意類似;請參閱該選項的描述以取得詳細資訊。--pipe
,-W
命令列格式 --pipe
類型 字串 在 Windows 上,使用具名管道連線至伺服器。僅當伺服器啟動時已啟用
named_pipe
系統變數以支援具名管道連線時,此選項才適用。此外,建立連線的使用者必須是named_pipe_full_access_group
系統變數指定的 Windows 群組成員。--plugin-authentication-kerberos-client-mode=
value
命令列格式 --plugin-authentication-kerberos-client-mode
類型 字串 預設值 SSPI
有效值 GSSAPI
在 Windows 上,
authentication_kerberos_client
驗證外掛程式支援此外掛程式選項。它提供用戶端使用者可在執行階段設定的兩個可能值:SSPI
和GSSAPI
。用戶端外掛程式選項的預設值使用安全支援提供者介面 (Security Support Provider Interface, SSPI),它可以從 Windows 的記憶體快取中取得憑證。或者,用戶端使用者可以選擇一種模式,該模式透過 Windows 上的 MIT Kerberos 程式庫支援通用安全服務應用程式介面 (Generic Security Service Application Program Interface, GSSAPI)。GSSAPI 能夠取得先前使用 kinit 命令產生的快取憑證。
如需更多資訊,請參閱GSSAPI 模式中 Windows 用戶端的命令。
-
命令列格式 --plugin-dir=dir_name
類型 目錄名稱 尋找外掛程式的目錄。如果
--default-auth
選項用於指定身分驗證外掛程式,但 mysqldump 找不到它,請指定此選項。請參閱第 8.2.17 節「可插拔驗證」。 --port=
,port_num
-P
port_num
命令列格式 --port=port_num
類型 數值 預設值 3306
對於 TCP/IP 連線,要使用的連接埠號碼。
--protocol={TCP|SOCKET|PIPE|MEMORY}
命令列格式 --protocol=type
類型 字串 預設值 [請參閱文字]
有效值 TCP
SOCKET
PIPE
MEMORY
用於連線到伺服器的傳輸協定。當其他連線參數通常導致使用您不想要的協定時,此選項很有用。如需允許值的詳細資訊,請參閱第 6.2.7 節「連線傳輸協定」。
--server-public-key-path=
file_name
命令列格式 --server-public-key-path=file_name
類型 檔案名稱 PEM 格式檔案的路徑名稱,其中包含伺服器需要的公開金鑰的用戶端副本,用於基於 RSA 金鑰對的密碼交換。此選項適用於使用
sha256_password
或caching_sha2_password
身分驗證外掛程式進行驗證的用戶端。對於未使用其中一個外掛程式進行驗證的帳戶,此選項會被忽略。如果未使用基於 RSA 的密碼交換,也會忽略此選項,例如當用戶端使用安全連線連線到伺服器時。如果給定
--server-public-key-path=
並指定有效的公開金鑰檔案,它會優先於file_name
--get-server-public-key
。對於
sha256_password
,此選項僅在 MySQL 使用 OpenSSL 建置時適用。有關
sha256_password
和caching_sha2_password
外掛程式的資訊,請參閱第 8.4.1.2 節「SHA-256 可插拔驗證」和第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。--socket=
,path
-S
path
命令列格式 --socket={file_name|pipe_name}
類型 字串 對於連線到
localhost
,要使用的 Unix socket 檔案,或在 Windows 上,要使用的具名管道名稱。在 Windows 上,只有在啟動伺服器時啟用
named_pipe
系統變數以支援具名管道連線時,此選項才適用。此外,進行連線的使用者必須是named_pipe_full_access_group
系統變數指定的 Windows 群組成員。以
--ssl
開頭的選項指定是否使用加密連線到伺服器,並指示在哪裡可以找到 SSL 金鑰和憑證。請參閱加密連線的命令選項。--ssl-fips-mode={OFF|ON|STRICT}
命令列格式 --ssl-fips-mode={OFF|ON|STRICT}
已棄用 是 類型 列舉 預設值 關閉
有效值 關閉
ON
STRICT
控制是否在用戶端啟用 FIPS 模式。
--ssl-fips-mode
選項與其他--ssl-
選項不同,它不用於建立加密連線,而是影響要允許哪些加密運算。請參閱第 8.8 節「FIPS 支援」。xxx
允許這些
--ssl-fips-mode
值OFF
:停用 FIPS 模式。ON
:啟用 FIPS 模式。STRICT
:啟用 「嚴格」 FIPS 模式。
注意如果 OpenSSL FIPS 物件模組不可用,則
--ssl-fips-mode
的唯一允許值為OFF
。在這種情況下,將--ssl-fips-mode
設定為ON
或STRICT
會導致用戶端在啟動時產生警告,並在非 FIPS 模式下執行。此選項已被棄用。預期會在未來版本的 MySQL 中移除。
--tls-ciphersuites=
ciphersuite_list
命令列格式 --tls-ciphersuites=ciphersuite_list
類型 字串 使用 TLSv1.3 的加密連線允許的密碼套件。此值是一個或多個以冒號分隔的密碼套件名稱的清單。可為此選項命名的密碼套件取決於用於編譯 MySQL 的 SSL 程式庫。如需詳細資訊,請參閱第 8.3.2 節「加密連線 TLS 協定和密碼」。
--tls-sni-servername=
server_name
命令列格式 --tls-sni-servername=server_name
類型 字串 指定時,名稱會使用
mysql_options()
的MYSQL_OPT_TLS_SNI_SERVERNAME
選項傳遞至libmysqlclient
C API 程式庫。伺服器名稱不區分大小寫。若要顯示用戶端為目前工作階段指定的伺服器名稱 (如果有的話),請檢查Tls_sni_server_name
狀態變數。伺服器名稱指示 (Server Name Indication, SNI) 是 TLS 協定的一種延伸 (必須使用 TLS 延伸編譯 OpenSSL,此選項才能運作)。SNI 的 MySQL 實作僅代表用戶端。
-
命令列格式 --tls-version=protocol_list
類型 字串 預設值 TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
(OpenSSL 1.1.1 或更高版本)TLSv1,TLSv1.1,TLSv1.2
(其他情況)加密連線允許的 TLS 協定。此值是一個或多個以逗號分隔的協定名稱的清單。可為此選項命名的協定取決於用於編譯 MySQL 的 SSL 程式庫。如需詳細資訊,請參閱第 8.3.2 節「加密連線 TLS 協定和密碼」。
--user=
,user_name
-u
user_name
命令列格式 --user=user_name
類型 字串 用於連線到伺服器的 MySQL 帳戶的使用者名稱。
如果您正在使用
Rewriter
外掛程式,您應該授予此使用者SKIP_QUERY_REWRITE
權限。--zstd-compression-level=
level
命令列格式 --zstd-compression-level=#
類型 整數 對於使用
zstd
壓縮演算法連線到伺服器的連線,要使用的壓縮等級。允許的等級為 1 到 22,較大的值表示壓縮等級越高。預設的zstd
壓縮等級為 3。壓縮等級設定對不使用zstd
壓縮的連線沒有影響。如需詳細資訊,請參閱第 6.2.8 節,「連線壓縮控制」。
選項檔案選項
這些選項用於控制要讀取哪個選項檔案。
--defaults-extra-file=
file_name
命令列格式 --defaults-extra-file=file_name
類型 檔案名稱 在全域選項檔案之後但在 (在 Unix 上) 使用者選項檔案之前讀取此選項檔案。如果檔案不存在或無法存取,則會發生錯誤。如果
file_name
不是絕對路徑名稱,則會相對於目前目錄進行解譯。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --defaults-file=file_name
類型 檔案名稱 僅使用指定的選項檔案。如果檔案不存在或無法存取,則會發生錯誤。如果
file_name
不是絕對路徑名稱,則會相對於目前目錄進行解譯。例外:即使使用
--defaults-file
,用戶端程式也會讀取.mylogin.cnf
。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --defaults-group-suffix=str
類型 字串 不僅讀取通常的選項群組,還讀取具有通常名稱和
str
後綴的群組。例如,mysqldump 通常會讀取[client]
和[mysqldump]
群組。如果將此選項設為--defaults-group-suffix=_other
,則 mysqldump 也會讀取[client_other]
和[mysqldump_other]
群組。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --no-defaults
不讀取任何選項檔案。如果程式啟動因為從選項檔案讀取到不明選項而失敗,可以使用
--no-defaults
來防止讀取這些檔案。例外情況是,如果存在
.mylogin.cnf
檔案,則無論如何都會讀取它。這樣即使使用--no-defaults
,也能以比在命令列上更安全的方式指定密碼。要建立.mylogin.cnf
,請使用 mysql_config_editor 公用程式。請參閱 第 6.6.7 節,「mysql_config_editor — MySQL 組態公用程式」。如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --print-defaults
印出程式名稱及其從選項檔案取得的所有選項。
如需有關此選項和其他選項檔案選項的其他資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
DDL 選項
mysqldump 的使用情境包括設定整個新的 MySQL 執行個體(包括資料庫表格),以及使用現有的資料庫和表格替換現有執行個體內的資料。以下選項可讓您在還原傾印時,透過在傾印檔案中編碼各種 DDL 陳述式,來指定要拆除和設定哪些內容。
-
命令列格式 --add-drop-database
在每個
CREATE DATABASE
陳述式之前,寫入一個DROP DATABASE
陳述式。此選項通常與--all-databases
或--databases
選項搭配使用,因為除非指定了其中一個選項,否則不會寫入任何CREATE DATABASE
陳述式。注意在 MySQL 9.0 中,
mysql
綱要被視為使用者無法捨棄的系統綱要。如果將--add-drop-database
與--all-databases
或--databases
一起使用,且要傾印的綱要清單包含mysql
,則傾印檔案會包含一個DROP DATABASE `mysql`
陳述式,這會在重新載入傾印檔案時導致錯誤。相反地,若要使用
--add-drop-database
,請使用--databases
並指定要傾印的綱要清單,但該清單不包含mysql
。 -
命令列格式 --add-drop-table
在每個
CREATE TABLE
陳述式之前,寫入一個DROP TABLE
陳述式。 -
命令列格式 --add-drop-trigger
在每個
CREATE TRIGGER
陳述式之前,寫入一個DROP TRIGGER
陳述式。 -
命令列格式 --all-tablespaces
將
NDB
表格使用的任何表格空間建立所需的所有 SQL 陳述式新增到表格傾印中。否則,此資訊不會包含在 mysqldump 的輸出中。此選項目前僅與 NDB Cluster 表格相關。 --no-create-db
,-n
命令列格式 --no-create-db
如果給定
--databases
或--all-databases
選項,則抑制輸出中包含的CREATE DATABASE
陳述式。--no-create-info
,-t
命令列格式 --no-create-info
不要寫入建立每個傾印表格的
CREATE TABLE
陳述式。注意此選項不會將建立日誌檔群組或表格空間的陳述式從 mysqldump 輸出中排除;但是,您可以為此目的使用
--no-tablespaces
選項。--no-tablespaces
,-y
命令列格式 --no-tablespaces
此選項會抑制 mysqldump 輸出中的所有
CREATE LOGFILE GROUP
和CREATE TABLESPACE
陳述式。-
命令列格式 --replace
除錯選項
下列選項會列印除錯資訊、在傾印檔案中編碼除錯資訊,或讓傾印操作繼續進行,而不考慮潛在問題。
-
命令列格式 --allow-keywords
允許建立屬於關鍵字的欄名稱。其做法是為每個欄名稱加上表格名稱的前置詞。
--comments
,-i
命令列格式 --comments
在傾印檔案中寫入其他資訊,例如程式版本、伺服器版本和主機。此選項預設為啟用。若要抑制此其他資訊,請使用
--skip-comments
。--debug[=
,debug_options
]-# [
debug_options
]命令列格式 --debug[=debug_options]
類型 字串 預設值 d:t:o,/tmp/mysqldump.trace
寫入除錯日誌。典型的
debug_options
字串為d:t:o,
。預設值為file_name
d:t:o,/tmp/mysqldump.trace
。只有在使用
WITH_DEBUG
建置 MySQL 時,此選項才可用。Oracle 提供的 MySQL 發行二進位檔不是使用此選項建置的。-
命令列格式 --debug-check
類型 布林值 預設值 FALSE
程式結束時列印一些除錯資訊。
只有在使用
WITH_DEBUG
建置 MySQL 時,此選項才可用。Oracle 提供的 MySQL 發行二進位檔不是使用此選項建置的。 -
命令列格式 --debug-info
類型 布林值 預設值 FALSE
程式結束時列印除錯資訊和記憶體及 CPU 使用率統計資料。
只有在使用
WITH_DEBUG
建置 MySQL 時,此選項才可用。Oracle 提供的 MySQL 發行二進位檔不是使用此選項建置的。 -
命令列格式 --dump-date
類型 布林值 預設值 TRUE
如果給定
--comments
選項,mysqldump 會在傾印結尾產生以下形式的註解-- Dump completed on DATE
但是,日期會導致在不同時間取得的傾印檔案看起來不同,即使資料相同也是如此。
--dump-date
和--skip-dump-date
控制是否將日期新增到註解中。預設值為--dump-date
(將日期包含在註解中)。--skip-dump-date
會抑制日期列印。 --force
,-f
命令列格式 --force
忽略所有錯誤;即使表格傾印期間發生 SQL 錯誤,仍繼續執行。
此選項的用途之一,是讓 mysqldump 即使遇到由於定義參考已捨棄的表格而失效的檢視表,仍能繼續執行。如果沒有
--force
,mysqldump 會傳回錯誤訊息並結束。使用--force
時,mysqldump 會列印錯誤訊息,但也會將包含檢視表定義的 SQL 註解寫入傾印輸出,並繼續執行。如果也指定了
--ignore-error
選項來忽略特定錯誤,則--force
優先。-
命令列格式 --log-error=file_name
類型 檔案名稱 將警告和錯誤訊息附加到指定的檔案中記錄。預設為不記錄。
-
命令列格式 --skip-comments
請參閱
--comments
選項的說明。 --verbose
,-v
命令列格式 --verbose
詳細模式。印出更多關於程式所做動作的資訊。
說明選項
以下選項顯示關於 mysqldump 命令本身的資訊。
國際化選項
以下選項變更 mysqldump 命令如何使用國家語言設定來表示字元資料。
-
命令列格式 --character-sets-dir=dir_name
類型 目錄名稱 字元集安裝的目錄。請參閱 第 12.15 節,「字元集設定」。
--default-character-set=
charset_name
命令列格式 --default-character-set=charset_name
類型 字串 預設值 utf8
使用
charset_name
作為預設字元集。請參閱 第 12.15 節,「字元集設定」。如果未指定字元集,mysqldump 會使用utf8mb4
。--no-set-names
,-N
命令列格式 --no-set-names
已棄用 是 關閉
--set-charset
設定,與指定--skip-set-charset
相同。-
命令列格式 --set-charset
由以下選項停用 skip-set-charset
將
SET NAMES
寫入輸出。預設啟用此選項。若要停用default_character_set
SET NAMES
陳述式,請使用--skip-set-charset
。
複寫選項
mysqldump 命令常用於在複寫組態中的複本伺服器上建立空實例,或包含資料的實例。以下選項適用於在複寫來源伺服器和複本上傾印和還原資料。
-
命令列格式 --apply-replica-statements
類型 布林值 預設值 FALSE
對於使用
--dump-replica
選項產生的複本傾印,此選項會在包含二進位日誌座標的陳述式之前,新增STOP REPLICA
陳述式,並在輸出結尾新增START REPLICA
陳述式。 -
命令列格式 --apply-slave-statements
已棄用 是 類型 布林值 預設值 FALSE
這是
--apply-replica-statements
的已棄用別名。 -
命令列格式 --delete-source-logs
在複寫來源伺服器上,在執行傾印操作後,傳送
PURGE BINARY LOGS
陳述式到伺服器,以刪除二進位日誌。此選項需要RELOAD
權限,以及足夠執行該陳述式的權限。此選項會自動啟用--source-data
。 -
命令列格式 --delete-master-logs
已棄用 是 這是
--delete-source-logs
的已棄用別名。 -
命令列格式 --dump-replica[=value]
類型 數值 預設值 1
有效值 1
2
此選項類似於
--source-data
,但用於傾印複本伺服器,以產生可用於將另一個伺服器設定為與已傾印伺服器具有相同來源的複本的傾印檔案。此選項會使傾印輸出包含CHANGE REPLICATION SOURCE TO
陳述式,指出已傾印複本來源的二進位日誌座標(檔案名稱和位置)。CHANGE REPLICATION SOURCE TO
陳述式會從SHOW REPLICA STATUS
輸出讀取Relay_Master_Log_File
和Exec_Master_Log_Pos
的值,並將它們分別用於SOURCE_LOG_FILE
和SOURCE_LOG_POS
。這些是複本開始複寫的複寫來源伺服器座標。注意已執行的中繼日誌交易順序不一致可能會導致使用錯誤的位置。如需更多資訊,請參閱 第 19.5.1.35 節,「複寫和交易不一致」。
--dump-replica
會導致使用來源的座標,而不是已傾印伺服器的座標,就像--source-data
選項所做的那樣。此外,指定此選項會覆寫--source-data
選項。警告如果將要套用傾印的伺服器使用
gtid_mode=ON
和SOURCE_AUTO_POSITION=1
,則不應使用--dump-replica
。選項值的處理方式與
--source-data
相同。設定無值或 1 會將CHANGE REPLICATION SOURCE TO
陳述式寫入傾印。設定 2 會將陳述式寫入,但包含在 SQL 註解中。它在啟用或停用其他選項以及如何處理鎖定方面,具有與--source-data
相同的效果。--dump-replica
會導致 mysqldump 在傾印之前停止複寫 SQL 執行緒,並在之後重新啟動。--dump-replica
會傳送SHOW REPLICA STATUS
陳述式到伺服器以取得資訊,因此它們需要足夠執行該陳述式的權限。--apply-replica-statements
和--include-source-host-port
選項可與--dump-replica
一起使用。 -
命令列格式 --dump-slave[=value]
已棄用 是 類型 數值 預設值 1
有效值 1
2
這是
--dump-replica
的已棄用別名。 -
命令列格式 --include-source-host-port
類型 布林值 預設值 FALSE
將複本來源的主機名稱和 TCP/IP 連接埠號碼的
SOURCE_HOST
和SOURCE_PORT
選項新增到使用--dump-replica
選項產生的複本傾印中的CHANGE REPLICATION SOURCE TO
陳述式。 -
命令列格式 --include-master-host-port
已棄用 是 類型 布林值 預設值 FALSE
這是
--include-source-host-port
的已棄用別名。 -
命令列格式 --master-data[=value]
已棄用 是 類型 數值 預設值 1
有效值 1
2
這是
--source-data
的已棄用別名。 -
命令列格式 --output-as-version=value
類型 列舉 預設值 SERVER
有效值 BEFORE_8_0_23
BEFORE_8_2_0
決定用於複本和事件相關陳述式的術語層級,使其能夠建立與不接受較新術語的舊版 MySQL 相容的傾印。此選項可以採用以下任何一個值,並具有如下所述的效果
SERVER
:讀取伺服器版本,並使用與該版本相容的最新陳述式版本。這是預設值。BEFORE_8_0_23
:使用已棄用術語(例如「slave」和「master」)的複寫 SQL 陳述式,將寫入輸出,而不是使用「replica」和「source」的陳述式,如同在 8.0.23 之前的 MySQL 版本中。此選項也會複製
BEFORE_8_2_0
對SHOW CREATE EVENT
輸出的效果。BEFORE_8_2_0
:此選項會使SHOW CREATE EVENT
反映事件在 8.2.0 之前的 MySQL 伺服器中建立的方式,顯示DISABLE ON SLAVE
而不是DISABLE ON REPLICA
。
此選項會影響來自
--events
、--dump-replica
、--source-data
、--apply-replica-statements
和--include-source-host-port
的輸出。 -
命令列格式 --source-data[=value]
類型 數值 預設值 1
有效值 1
2
用於傾印複寫來源伺服器,以產生可用於設定另一個伺服器作為來源複本的傾印檔案。這些選項會使傾印輸出包含
CHANGE REPLICATION SOURCE TO
陳述式,指出傾印伺服器的二進位日誌座標(檔案名稱和位置)。這些是複本在將傾印檔案載入到複本後應開始複寫的複寫來源伺服器座標。如果選項值為 2,
CHANGE REPLICATION SOURCE TO
陳述式會寫成 SQL 註解,因此僅供參考;重新載入傾印檔案時不會生效。如果選項值為 1,則陳述式不會寫成註解,並且在重新載入傾印檔案時生效。如果未指定選項值,則預設值為 1。--source-data
會將SHOW BINARY LOG STATUS
陳述式傳送到伺服器以獲取資訊,因此它們需要足夠的權限來執行該陳述式。此選項還需要RELOAD
權限,並且必須啟用二進位日誌。--source-data
會自動關閉--lock-tables
。它們也會開啟--lock-all-tables
,除非也指定了--single-transaction
,在這種情況下,僅在傾印開始時短時間內取得全域讀取鎖定(請參閱--single-transaction
的描述)。在所有情況下,對日誌的任何操作都會在傾印的確切時刻發生。也可以使用
--dump-replica
選項,從現有來源的複本傾印設定複本,這會覆寫--source-data
,導致其被忽略。 -
命令列格式 --set-gtid-purged=value
類型 列舉 預設值 AUTO
有效值 關閉
ON
AUTO
此選項適用於使用基於 GTID 的複寫的伺服器 (
gtid_mode=ON
)。它控制在傾印輸出中包含SET @@GLOBAL.gtid_purged
陳述式,該陳述式會更新重新載入傾印檔案的伺服器上的gtid_purged
值,以新增來源伺服器gtid_executed
系統變數中的 GTID 集。gtid_purged
保存伺服器上已套用的所有交易的 GTID,但這些 GTID 不存在於伺服器上的任何二進位日誌檔案中。mysqldump 因此會新增在來源伺服器上執行的交易的 GTID,以便目標伺服器將這些交易記錄為已套用,即使目標伺服器的二進位日誌中沒有這些交易。--set-gtid-purged
還控制包含SET @@SESSION.sql_log_bin=0
陳述式,這會在重新載入傾印檔案時停用二進位日誌記錄。此陳述式可防止產生新的 GTID 並將其指派給傾印檔案中的交易,以便使用交易的原始 GTID。如果您未設定
--set-gtid-purged
選項,則預設情況下,如果要在備份的伺服器上啟用 GTID,並且gtid_executed
系統變數的全域值中的 GTID 集不是空的,則會在傾印輸出中包含SET @@GLOBAL.gtid_purged
陳述式。如果伺服器上已啟用 GTID,則也會包含SET @@SESSION.sql_log_bin=0
陳述式。您可以將
gtid_purged
的值替換為指定的 GTID 集,或在陳述式中新增加號 (+),將指定的 GTID 集附加到gtid_purged
已保存的 GTID 集。mysqldump 記錄的SET @@GLOBAL.gtid_purged
陳述式包含版本特定的註解中的加號 (+
),以便 MySQL 將傾印檔案中的 GTID 集新增到現有的gtid_purged
值。請務必注意,mysqldump 為
SET @@GLOBAL.gtid_purged
陳述式所包含的值,包含伺服器上gtid_executed
集中的所有交易的 GTID,甚至是那些變更了資料庫的受抑制部分,或伺服器上未包含在部分傾印中的其他資料庫。這可能表示在重新播放傾印檔案的伺服器上更新gtid_purged
值後,出現的 GTID 與目標伺服器上的任何資料無關。如果不在目標伺服器上重新播放任何其他傾印檔案,則多餘的 GTID 不會對伺服器未來的運作造成任何問題,但它們會使比較或協調複寫拓撲中不同伺服器上的 GTID 集變得更加困難。如果重新播放另一個包含相同 GTID 的目標伺服器上的傾印檔案 (例如,來自相同來源伺服器的另一個部分傾印),則第二個傾印檔案中的任何SET @@GLOBAL.gtid_purged
陳述式都會失敗。在這種情況下,請在重新播放傾印檔案之前手動移除該陳述式,或輸出不包含該陳述式的傾印檔案。如果
SET @@GLOBAL.gtid_purged
陳述式在目標伺服器上不會產生預期的結果,您可以從輸出中排除該陳述式,或包含該陳述式但將其註解掉,以便它不會自動執行。您也可以包含該陳述式,但在傾印檔案中手動編輯它以達到預期的結果。--set-gtid-purged
選項的可能值如下-
AUTO
預設值。如果要在備份的伺服器上啟用 GTID,且
gtid_executed
不為空,則會將SET @@GLOBAL.gtid_purged
新增至輸出,其中包含來自gtid_executed
的 GTID 集。如果已啟用 GTID,則會將SET @@SESSION.sql_log_bin=0
新增至輸出。如果未在伺服器上啟用 GTID,則不會將這些陳述式新增至輸出。-
關閉
不會將
SET @@GLOBAL.gtid_purged
新增至輸出,也不會將SET @@SESSION.sql_log_bin=0
新增至輸出。對於未使用 GTID 的伺服器,請使用此選項或AUTO
。僅當您確定目標伺服器上的gtid_purged
中已存在所需的 GTID 集且不應變更,或者您打算手動識別並新增任何遺失的 GTID 時,才對使用 GTID 的伺服器使用此選項。-
ON
如果要在備份的伺服器上啟用 GTID,則會將
SET @@GLOBAL.gtid_purged
新增至輸出 (除非gtid_executed
為空),並且會將SET @@SESSION.sql_log_bin=0
新增至輸出。如果您設定此選項,但伺服器上未啟用 GTID,則會發生錯誤。對於使用 GTID 的伺服器,請使用此選項或AUTO
,除非您確定目標伺服器上不需要gtid_executed
中的 GTID。-
COMMENTED
如果要在備份的伺服器上啟用 GTID,則會將
SET @@GLOBAL.gtid_purged
新增至輸出 (除非gtid_executed
為空),但會將其註解掉。這表示gtid_executed
的值可在輸出中使用,但在重新載入傾印檔案時不會自動採取任何動作。SET @@SESSION.sql_log_bin=0
會新增至輸出,並且不會註解掉。透過COMMENTED
,您可以手動或透過自動化控制gtid_executed
集的使用。例如,如果您要將資料移轉到另一個已具有不同活動資料庫的伺服器,您可能會偏好執行此作業。
-
格式選項
以下選項指定如何在傾印檔案中表示整個傾印檔案或特定類型的資料。它們還控制是否將某些選用資訊寫入傾印檔案。
-
命令列格式 --compact
產生更精簡的輸出。此選項會啟用
--skip-add-drop-table
、--skip-add-locks
、--skip-comments
、--skip-disable-keys
和--skip-set-charset
選項。 -
命令列格式 --compatible=name[,name,...]
類型 字串 預設值 ''
有效值 ansi
mysql323
mysql40
postgresql
oracle
mssql
db2
maxdb
no_key_options
no_table_options
no_key_options
產生與其他資料庫系統或舊版 MySQL 伺服器更相容的輸出。此選項唯一允許的值是
ansi
,其與設定伺服器 SQL 模式的對應選項具有相同的含義。請參閱 第 7.1.11 節, 「伺服器 SQL 模式」。 -
命令列格式 --complete-insert
使用包含欄名稱的完整
INSERT
陳述式。 -
命令列格式 --create-options
在
CREATE TABLE
陳述式中包含所有 MySQL 特有的資料表選項。 --fields-terminated-by=...
、--fields-enclosed-by=...
、--fields-optionally-enclosed-by=...
、--fields-escaped-by=...
命令列格式 --fields-terminated-by=string
類型 字串 命令列格式 --fields-enclosed-by=string
類型 字串 命令列格式 --fields-optionally-enclosed-by=string
類型 字串 命令列格式 --fields-escaped-by
類型 字串 這些選項與
--tab
選項搭配使用,並且與LOAD DATA
的對應FIELDS
子句具有相同的含義。請參閱 第 15.2.9 節, 「LOAD DATA 陳述式」。-
命令列格式 --hex-blob
使用十六進位表示法傾印二進位欄 (例如,
'abc'
變成0x616263
)。受影響的資料類型為BINARY
、VARBINARY
、BLOB
類型、BIT
、所有空間資料類型,以及與binary
字元集搭配使用時的其他非二進位資料類型。當使用
--tab
時,--hex-blob
選項會被忽略。 -
命令列格式 --lines-terminated-by=string
類型 字串 此選項與
--tab
選項搭配使用,並且與LOAD DATA
的對應LINES
子句具有相同的含義。請參閱 第 15.2.9 節, 「LOAD DATA 陳述式」。 -
命令列格式 --quote-names
由以下選項停用 skip-quote-names
在
`
字元內加上識別碼 (例如,資料庫、資料表和欄名稱) 的引號。如果啟用了ANSI_QUOTES
SQL 模式,則識別碼會以"
字元加上引號。預設會啟用此選項。可以使用--skip-quote-names
停用此選項,但此選項應在任何可能會啟用--quote-names
的選項之後指定,例如--compatible
。 --result-file=
、file_name
-r
file_name
命令列格式 --result-file=file_name
類型 檔案名稱 將輸出導向至指定的檔案。即使在產生傾印時發生錯誤,也會建立結果檔案並覆寫其先前的內容。
應該在 Windows 上使用此選項,以防止換行符號
\n
字元轉換為\r\n
回車換行序列。--show-create-skip-secondary-engine=
value
命令列格式 --show-create-skip-secondary-engine
從
CREATE TABLE
陳述式中排除SECONDARY ENGINE
子句。它會藉由在傾印作業期間啟用show_create_table_skip_secondary_engine
系統變數來執行此動作。或者,您可以在使用 mysqldump 之前啟用show_create_table_skip_secondary_engine
系統變數。--tab=
、dir_name
-T
dir_name
命令列格式 --tab=dir_name
類型 目錄名稱 產生以 Tab 分隔的文字格式資料檔案。對於每個傾印的資料表,mysqldump 會建立一個
檔案,其中包含建立資料表的tbl_name
.sqlCREATE TABLE
陳述式,並且伺服器會寫入一個
檔案,其中包含其資料。選項值是要寫入檔案的目錄。tbl_name
.txt注意只有當 mysqldump 在與 mysqld 伺服器相同的電腦上執行時,才應使用此選項。由於伺服器會在您指定的目錄中建立
*.txt
檔案,因此該目錄必須可由伺服器寫入,並且您使用的 MySQL 帳戶必須具有FILE
權限。由於 mysqldump 會在相同目錄中建立*.sql
,因此您的系統登入帳戶必須可寫入該目錄。預設情況下,
.txt
資料檔案的格式設定為在欄值之間使用 Tab 字元,並且在每行結尾使用換行符號。可以使用--fields-
和xxx
--lines-terminated-by
選項明確指定格式。欄值會轉換為
--default-character-set
選項所指定的字元集。-
命令列格式 --tz-utc
由以下選項停用 skip-tz-utc
此選項允許在不同時區的伺服器之間傾印和重新載入
TIMESTAMP
欄。mysqldump 會將其連線時區設定為 UTC,並將SET TIME_ZONE='+00:00'
新增至傾印檔案。如果沒有此選項,則會在來源和目的地伺服器的本機時區中傾印和重新載入TIMESTAMP
欄,如果伺服器位於不同的時區,可能會導致值變更。--tz-utc
也能夠防止因日光節約時間而造成的變更。--tz-utc
預設為啟用。若要停用它,請使用--skip-tz-utc
。 --xml
、-X
命令列格式 --xml
將傾印輸出寫入為格式正確的 XML。
NULL
、'NULL'
和空值:對於名為column_name
的欄,此選項產生的輸出會區分NULL
值、空字串和字串值'NULL'
,如下所示。值 XML 表示法 NULL
( 未知的值 )<field name="
column_name
" xsi:nil="true" />''
( 空字串 )<field name="
column_name
"></field>'NULL'
( 字串值 )<field name="
column_name
">NULL</field>使用
--xml
選項執行時,來自 mysql 用戶端的輸出也遵循上述規則。(請參閱 第 6.5.1.1 節, 「mysql 用戶端選項」。)來自 mysqldump 的 XML 輸出包含 XML 名稱空間,如下所示
$> mysqldump --xml -u root world City <?xml version="1.0"?> <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <database name="world"> <table_structure name="City"> <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" /> <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" /> <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" /> <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" /> <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" /> <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID" Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" /> <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079" Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951" Index_length="43008" Data_free="0" Auto_increment="4080" Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02" Collation="latin1_swedish_ci" Create_options="" Comment="" /> </table_structure> <table_data name="City"> <row> <field name="ID">1</field> <field name="Name">Kabul</field> <field name="CountryCode">AFG</field> <field name="District">Kabol</field> <field name="Population">1780000</field> </row> ... <row> <field name="ID">4079</field> <field name="Name">Rafah</field> <field name="CountryCode">PSE</field> <field name="District">Rafah</field> <field name="Population">92020</field> </row> </table_data> </database> </mysqldump>
篩選選項
下列選項會控制將哪些類型的結構描述物件寫入傾印檔案:依類別 (例如觸發程序或事件);依名稱 (例如,選擇要傾印哪些資料庫和資料表);甚至使用 WHERE
子句篩選資料表資料中的資料列。
-
命令列格式 --all-databases
傾印所有資料庫中的所有資料表。這與使用
--databases
選項並在命令列上命名所有資料庫相同。注意如需關於此選項與
--all-databases
不相容的資訊,請參閱--add-drop-database
的描述。在 MySQL 9.0 之前,使用 mysqldump 的
--routines
和--events
選項在使用--all-databases
選項時並不需要包含預存常式和事件:傾印會包含mysql
系統資料庫,因此也會包含mysql.proc
和mysql.event
資料表,其中包含預存常式和事件定義。從 MySQL 9.0 開始,不使用mysql.event
和mysql.proc
資料表。對應物件的定義儲存在資料字典資料表中,但不會傾印這些資料表。若要在使用--all-databases
建立的傾印中包含預存常式和事件,請明確使用--routines
和--events
選項。 --databases
、-B
命令列格式 --databases
傾印數個資料庫。一般而言,mysqldump 會將命令列上的第一個名稱引數視為資料庫名稱,後續的名稱則視為表格名稱。使用此選項,它會將所有名稱引數視為資料庫名稱。在每個新資料庫之前,輸出中會包含
CREATE DATABASE
和USE
陳述式。此選項可用於傾印
performance_schema
資料庫,即使使用--all-databases
選項通常也不會傾印該資料庫。(同時使用--skip-lock-tables
選項。)注意關於此選項與
--databases
的不相容性資訊,請參閱--add-drop-database
的說明。--events
,-E
命令列格式 --events
在輸出中包含已傾印資料庫的事件排程器事件。此選項需要這些資料庫的
EVENT
權限。使用
--events
產生的輸出包含用於建立事件的CREATE EVENT
陳述式。--ignore-error=
error[,error]...
命令列格式 --ignore-error=error[,error]...
類型 字串 忽略指定的錯誤。此選項值為逗號分隔的錯誤編號列表,指定在執行 mysqldump 期間要忽略的錯誤。如果同時給予
--force
選項以忽略所有錯誤,則--force
具有優先權。--ignore-table=
db_name.tbl_name
命令列格式 --ignore-table=db_name.tbl_name
類型 字串 不要傾印給定的表格,必須同時指定資料庫和表格名稱。若要忽略多個表格,請多次使用此選項。此選項也可用於忽略視圖。
-
命令列格式 --ignore-views
類型 布林值 預設值 FALSE
跳過傾印檔案中的表格視圖。
-
命令列格式 --init-command=str
類型 字串 連線到 MySQL 伺服器後要執行的單一 SQL 陳述式。此定義會重設它或
init-command-add
所定義的現有陳述式。 -
命令列格式 --init-command-add=str
類型 字串 新增要在連線或重新連線到 MySQL 伺服器後執行的額外 SQL 陳述式。它可以在沒有
--init-command
的情況下使用,但如果在它之前使用則無效,因為init-command
會重設要呼叫的命令列表。 --no-data
,-d
命令列格式 --no-data
不寫入任何表格列資訊(也就是說,不傾印表格內容)。如果您只想傾印表格的
CREATE TABLE
陳述式(例如,透過載入傾印檔案來建立表格的空白副本),這會很有用。--routines
,-R
命令列格式 --routines
在輸出中包含已傾印資料庫的預存常式(程序和函式)。此選項需要全域
SELECT
權限。使用
--routines
產生的輸出包含用於建立常式的CREATE PROCEDURE
和CREATE FUNCTION
陳述式。--skip-generated-invisible-primary-key
命令列格式 --skip-generated-invisible-primary-key
類型 布林值 預設值 FALSE
此選項會導致從輸出中排除產生的隱形主鍵。有關更多資訊,請參閱第 15.1.20.11 節,「產生的隱形主鍵」。
-
命令列格式 --tables
覆寫
--databases
或-B
選項。mysqldump 將此選項之後的所有名稱引數視為表格名稱。 -
命令列格式 --triggers
由以下選項停用 skip-triggers
在輸出中包含每個已傾印表格的觸發器。預設會啟用此選項;使用
--skip-triggers
停用它。若要能夠傾印表格的觸發器,您必須擁有該表格的
TRIGGER
權限。允許使用多個觸發器。mysqldump 會依啟用順序傾印觸發器,以便在重新載入傾印檔案時,會以相同的啟用順序建立觸發器。但是,如果 mysqldump 傾印檔案包含具有相同觸發事件和動作時間的表格的多個觸發器,則嘗試將傾印檔案載入不支援多個觸發器的較舊伺服器時,會發生錯誤。(如需因應措施,請參閱降級注意事項;您可以轉換觸發器以與較舊的伺服器相容。)
--where='
,where_condition
'-w '
where_condition
'命令列格式 --where='where_condition'
僅傾印由給定的
WHERE
條件選取的列。如果條件包含空格或其他對您的命令直譯器而言特殊的字元,則條件周圍的引號是必要的。範例
--where="user='jimf'" -w"userid>1" -w"userid<1"
效能選項
下列選項與效能最相關,特別是還原操作的效能。對於大型資料集,還原操作(處理傾印檔案中的 INSERT
陳述式)是最耗時的部分。當需要快速還原資料時,請提前規劃並測試此階段的效能。對於以小時測量的還原時間,您可能偏好替代的備份和還原解決方案,例如僅適用於 InnoDB
和混合使用資料庫的 MySQL Enterprise Backup。
效能也受到交易選項的影響,主要用於傾印操作。
-
命令列格式 --column-statistics
類型 布林值 預設值 關閉
在輸出中新增
ANALYZE TABLE
陳述式,以便在重新載入傾印檔案時為傾印的表格產生長條圖統計資料。預設會停用此選項,因為大型表格的長條圖產生可能需要很長時間。 --disable-keys
,-K
命令列格式 --disable-keys
對於每個表格,請使用
/*!40000 ALTER TABLE
和tbl_name
DISABLE KEYS */;/*!40000 ALTER TABLE
陳述式來包圍tbl_name
ENABLE KEYS */;INSERT
陳述式。這會使載入傾印檔案的速度更快,因為索引會在插入所有列後才建立。此選項僅對MyISAM
表格的非唯一索引有效。-
命令列格式 --extended-insert
由以下選項停用 skip-extended-insert
使用包含數個
VALUES
清單的多列語法來寫入INSERT
陳述式。這會產生較小的傾印檔案,並在重新載入檔案時加速插入。 -
命令列格式 --insert-ignore
寫入
INSERT IGNORE
陳述式,而不是INSERT
陳述式。 -
命令列格式 --max-allowed-packet=value
類型 數值 預設值 25165824
用戶端/伺服器通訊的緩衝區最大大小。預設值為 24MB,最大值為 1GB。
注意此選項的值是 mysqldump 特有的,不應與 MySQL 伺服器的
max_allowed_packet
系統變數混淆;即使 mysqldump 選項的設定較大,來自 mysqldump 的單一封包也不會超過伺服器值。 --mysqld-long-query-time=
value
命令列格式 --mysqld-long-query-time=value
類型 數值 預設值 伺服器全域設定
設定
long_query_time
系統變數的工作階段值。如果您想增加 mysqldump 的查詢被記錄到慢速查詢記錄檔之前的允許時間,請使用此選項。mysqldump 會執行完整表格掃描,這表示其查詢通常會超過對常規查詢有用的全域long_query_time
設定。預設的全域設定為 10 秒。您可以使用
--mysqld-long-query-time
來指定一個從 0 (表示 mysqldump 的每個查詢都會記錄到慢查詢日誌) 到 31536000 (相當於 365 天,以秒為單位) 的會話值。對於 mysqldump 的選項,您只能指定整數秒。當您不指定此選項時,伺服器的全域設定會應用於 mysqldump 的查詢。-
命令列格式 --net-buffer-length=value
類型 數值 預設值 16384
用戶端/伺服器通訊的緩衝區初始大小。當建立多列
INSERT
陳述式時 (例如使用--extended-insert
或--opt
選項),mysqldump 會建立最多--net-buffer-length
位元組長的資料列。如果您增加此變數,請確保 MySQL 伺服器net_buffer_length
系統變數的值至少這麼大。 -
命令列格式 --network-timeout[={0|1}]
類型 布林值 預設值 TRUE
透過將
--max-allowed-packet
設定為最大值,並將網路讀取和寫入逾時設定為較大的值,啟用大型資料表的傾印。預設情況下會啟用此選項。若要停用它,請使用--skip-network-timeout
。 -
命令列格式 --opt
由以下選項停用 skip-opt
此選項預設為啟用,是
--add-drop-table
、--add-locks
、--create-options
、--disable-keys
、--extended-insert
、--lock-tables
、--quick
和--set-charset
的組合簡寫。它提供快速的傾印操作,並產生一個可以快速重新載入到 MySQL 伺服器中的傾印檔案。由於
--opt
選項預設為啟用,您只需指定其相反選項--skip-opt
來關閉數個預設設定。請參閱mysqldump
選項群組 的討論,以取得關於選擇性啟用或停用--opt
所影響選項子集的資訊。 --quick
,-q
命令列格式 --quick
由以下選項停用 skip-quick
此選項對於傾印大型資料表很有用。它會強制 mysqldump 從伺服器一次擷取一個資料表的資料列,而不是擷取整個資料列集並在寫出之前將其緩衝在記憶體中。
-
命令列格式 --skip-opt
請參閱
--opt
選項的說明。
交易選項
以下選項會權衡傾印操作的效能,與匯出資料的可靠性和一致性。
-
命令列格式 --add-locks
在每個資料表傾印前後加上
LOCK TABLES
和UNLOCK TABLES
陳述式。這會在重新載入傾印檔案時加快插入速度。請參閱第 10.2.5.1 節, 「最佳化 INSERT 陳述式」。 --flush-logs
,-F
命令列格式 --flush-logs
在開始傾印之前清除 MySQL 伺服器日誌檔案。此選項需要
RELOAD
權限。如果您將此選項與--all-databases
選項結合使用,則日誌會為每個傾印的資料庫清除。例外情況是使用--lock-all-tables
、--source-data
或--single-transaction
。在這些情況下,日誌只會清除一次,與FLUSH TABLES WITH READ LOCK
鎖定所有資料表的時刻相對應。如果您希望傾印和日誌清除在完全相同的時間發生,您應該將--flush-logs
與--lock-all-tables
、--source-data
或--single-transaction
一起使用。-
命令列格式 --flush-privileges
在傾印
mysql
資料庫之後,將FLUSH PRIVILEGES
陳述式新增至傾印輸出。只要傾印包含mysql
資料庫和任何其他依賴mysql
資料庫中資料以進行正確還原的資料庫,就應該使用此選項。由於傾印檔案包含
FLUSH PRIVILEGES
陳述式,因此重新載入檔案需要足以執行該陳述式的權限。 -
命令列格式 --lock-all-tables
鎖定所有資料庫中的所有資料表。這是透過在整個傾印期間取得全域讀取鎖定來實現的。此選項會自動關閉
--single-transaction
和--lock-tables
。 --lock-tables
,-l
命令列格式 --lock-tables
對於每個傾印的資料庫,在傾印之前鎖定所有要傾印的資料表。資料表以
READ LOCAL
鎖定,以便在MyISAM
資料表的情況下允許並行插入。對於諸如InnoDB
之類的交易式資料表,--single-transaction
是比--lock-tables
好得多的選項,因為它根本不需要鎖定資料表。由於
--lock-tables
會為每個資料庫單獨鎖定資料表,因此此選項不保證傾印檔案中的資料表在資料庫之間邏輯一致。不同資料庫中的資料表可能會以完全不同的狀態傾印。某些選項 (例如
--opt
) 會自動啟用--lock-tables
。如果您想覆寫此行為,請在選項列表的末尾使用--skip-lock-tables
。-
命令列格式 --no-autocommit
-
命令列格式 --order-by-primary
依每個資料表的主索引鍵或第一個唯一索引 (如果存在) 排序傾印每個資料表的資料列。當傾印
MyISAM
資料表以載入到InnoDB
資料表時,這會很有用,但會使傾印操作花費更多時間。 --shared-memory-base-name=
name
命令列格式 --shared-memory-base-name=name
平台特定 Windows 在 Windows 上,使用共用記憶體連線到本機伺服器時要使用的共用記憶體名稱。預設值為
MYSQL
。共用記憶體名稱區分大小寫。僅當伺服器啟動時啟用
shared_memory
系統變數以支援共用記憶體連線時,此選項才適用。-
命令列格式 --single-transaction
此選項會將交易隔離模式設定為
REPEATABLE READ
,並在傾印資料之前向伺服器傳送START TRANSACTION
SQL 陳述式。它僅對諸如InnoDB
之類的交易式資料表有用,因為它會在發出START TRANSACTION
時傾印資料庫的一致狀態,而不會封鎖任何應用程式。如果
gtid_mode=ON
和gtid_purged=ON|AUTO
皆成立,則在使用--single-transaction
時,需要RELOAD
或FLUSH_TABLES
權限。當使用此選項時,您應該記住只有
InnoDB
表格會以一致的狀態傾印。例如,任何使用此選項傾印的MyISAM
或MEMORY
表格,其狀態仍有可能改變。當
--single-transaction
傾印正在進行時,為了確保有效的傾印檔案(正確的表格內容和二進制日誌座標),不應有其他連線使用以下語句:ALTER TABLE
、CREATE TABLE
、DROP TABLE
、RENAME TABLE
、TRUNCATE TABLE
。一致性讀取不會與這些語句隔離,因此在要傾印的表格上使用這些語句可能會導致 mysqldump 執行的SELECT
查詢,在擷取表格內容時取得不正確的內容或失敗。--single-transaction
選項和--lock-tables
選項是互斥的,因為LOCK TABLES
會導致任何待處理的事務被隱式提交。要傾印大型表格,請將
--single-transaction
選項與--quick
選項結合使用。
選項群組
當您選擇性地啟用或停用群組選項的效果時,順序很重要,因為選項會從第一個到最後一個依序處理。例如,--disable-keys
--lock-tables
--skip-opt
不會產生預期的效果;它與單獨使用 --skip-opt
相同。
範例
要備份整個資料庫
mysqldump db_name > backup-file.sql
要將傾印檔案載回伺服器
mysql db_name < backup-file.sql
另一種重新載入傾印檔案的方式
mysql -e "source /path-to-backup/backup-file.sql" db_name
mysqldump 也非常適用於透過將資料從一個 MySQL 伺服器複製到另一個伺服器來填充資料庫
mysqldump --opt db_name | mysql --host=remote_host -C db_name
您可以使用一個命令傾印多個資料庫
mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
要傾印所有資料庫,請使用 --all-databases
選項
mysqldump --all-databases > all_databases.sql
對於 InnoDB
表格,mysqldump 提供了一種進行線上備份的方法
mysqldump --all-databases --source-data --single-transaction > all_databases.sql
此備份會在傾印開始時取得所有表格的全域讀取鎖定 (使用 FLUSH TABLES WITH READ LOCK
)。一旦取得此鎖定,就會讀取二進制日誌座標並釋放鎖定。如果在發出 FLUSH
語句時正在執行長時間的更新語句,則 MySQL 伺服器可能會停頓,直到這些語句完成。之後,傾印會變成無鎖定狀態,並且不會干擾表格上的讀取和寫入。如果 MySQL 伺服器接收到的更新語句很短(就執行時間而言),則即使有許多更新,初始鎖定時間也不應被察覺。
對於時間點復原(也稱為 「向前復原」,當您需要還原舊備份並重播自該備份以來發生的變更時),通常有用的做法是旋轉二進制日誌(請參閱 第 7.4.4 節「二進制日誌」),或至少知道傾印對應的二進制日誌座標
mysqldump --all-databases --source-data=2 > all_databases.sql
或
mysqldump --all-databases --flush-logs --source-data=2 > all_databases.sql
--source-data
選項可以與 --single-transaction
選項同時使用,如果表格是使用 InnoDB
儲存引擎儲存,這會提供一種方便的方式來進行適合在時間點復原之前使用的線上備份。
有關進行備份的更多資訊,請參閱 第 9.2 節「資料庫備份方法」,以及 第 9.3 節「備份與復原策略範例」。
要選取
--opt
的效果,但排除某些功能,請為每個功能使用--skip
選項。要停用擴充插入和記憶體緩衝,請使用--opt
--skip-extended-insert
--skip-quick
。(實際上,--skip-extended-insert
--skip-quick
就足夠了,因為--opt
預設為啟用。)要反轉
--opt
的所有功能,但排除停用索引和表格鎖定,請使用--skip-opt
--disable-keys
--lock-tables
。
限制
mysqldump 預設不會傾印 performance_schema
或 sys
綱要。要傾印任何這些綱要,請在命令列上明確命名它們。您也可以使用 --databases
選項來命名它們。對於 performance_schema
,也請使用 --skip-lock-tables
選項。
mysqldump 不會傾印 INFORMATION_SCHEMA
綱要。
mysqldump 不會傾印 InnoDB
CREATE TABLESPACE
語句。
mysqldump 不會傾印 NDB Cluster ndbinfo
資訊資料庫。
mysqldump 包含重新建立 mysql
資料庫的傾印之 general_log
和 slow_query_log
表格的語句。不會傾印日誌表格內容。
如果您因權限不足而遇到備份檢視表的問題,請參閱 第 27.10 節「檢視表的限制」,以取得解決方法。