文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  使用 mysqldump 以 SQL 格式傾印資料

9.4.1 使用 mysqldump 以 SQL 格式傾印資料

本節說明如何使用 mysqldump 建立 SQL 格式的傾印檔案。如需重新載入此類傾印檔案的資訊,請參閱第 9.4.2 節「重新載入 SQL 格式備份」

預設情況下,mysqldump 會將資訊以 SQL 陳述式的形式寫入標準輸出。您可以將輸出儲存到檔案中。

$> mysqldump [arguments] > file_name

若要傾印所有資料庫,請使用 --all-databases 選項來呼叫 mysqldump

$> mysqldump --all-databases > dump.sql

若要僅傾印特定資料庫,請在命令列上命名它們,並使用 --databases 選項。

$> mysqldump --databases db1 db2 db3 > dump.sql

--databases 選項會使命令列上的所有名稱都被視為資料庫名稱。若沒有此選項,mysqldump 會將第一個名稱視為資料庫名稱,而將後續名稱視為表格名稱。

使用 --all-databases--databasesmysqldump 會在每個資料庫的傾印輸出之前寫入 CREATE DATABASEUSE 陳述式。這可確保在重新載入傾印檔案時,如果每個資料庫不存在,則會建立每個資料庫,並將其設定為預設資料庫,以便將資料庫內容載入到與來源相同的資料庫中。如果您希望傾印檔案在重新建立每個資料庫之前強制捨棄每個資料庫,也請使用 --add-drop-database 選項。在這種情況下,mysqldump 會在每個 CREATE DATABASE 陳述式之前寫入 DROP DATABASE 陳述式。

若要傾印單一資料庫,請在命令列上命名它。

$> mysqldump --databases test > dump.sql

在單一資料庫的情況下,允許省略 --databases 選項。

$> mysqldump test > dump.sql

前述兩個命令之間的差異在於,若沒有 --databases,則傾印輸出不包含 CREATE DATABASEUSE 陳述式。這有幾個含義。

  • 當您重新載入傾印檔案時,您必須指定預設資料庫名稱,讓伺服器知道要重新載入哪個資料庫。

  • 為了重新載入,您可以指定與原始名稱不同的資料庫名稱,這可讓您將資料重新載入到不同的資料庫中。

  • 如果要重新載入的資料庫不存在,您必須先建立它。

  • 由於輸出不包含 CREATE DATABASE 陳述式,因此 --add-drop-database 選項沒有任何作用。如果您使用它,則不會產生 DROP DATABASE 陳述式。

若要僅傾印資料庫中的特定表格,請在資料庫名稱之後的命令列上命名它們。

$> mysqldump test t1 t3 t7 > dump.sql

預設情況下,如果您在建立傾印檔案的伺服器上使用 GTID (gtid_mode=ON),mysqldump 會在輸出中包含 SET @@GLOBAL.gtid_purged 陳述式,以將來源伺服器上 gtid_executed 集合中的 GTID 新增到目標伺服器上的 gtid_purged 集合。如果您僅傾印特定資料庫或表格,請務必注意,mysqldump 所包含的值包含來源伺服器上 gtid_executed 集合中所有交易的 GTID,即使是那些變更了資料庫中被抑制的部分,或是伺服器上未包含在部分傾印中的其他資料庫。如果您僅在目標伺服器上重播一個部分傾印檔案,則額外的 GTID 不會對該伺服器的未來操作造成任何問題。但是,如果您在目標伺服器上重播第二個包含相同 GTID 的傾印檔案(例如,來自同一個來源伺服器的另一個部分傾印),則第二個傾印檔案中的任何 SET @@GLOBAL.gtid_purged 陳述式都會失敗。為避免此問題,請將 mysqldump 選項 --set-gtid-purged 設定為 OFFCOMMENTED,以輸出第二個沒有作用中的 SET @@GLOBAL.gtid_purged 陳述式的傾印檔案,或在重播傾印檔案之前手動移除該陳述式。