資料庫管理員和系統管理員必須備份其 MySQL 資料庫,而 mysqldump 公用程式是最常用來將整個資料庫或單一物件轉換成文字檔案的工具。mysqldump 公用程式建立備份檔案後,即可用來將資料還原至伺服器,或將資料移轉至其他資料庫。
什麼是 mysqldump?
mysqldump 工具是 MySQL 隨附的命令列公用程式,可用於匯出 SQL 陳述式,從而重建資料庫或資料庫中的物件子集。它可以用來建立資料庫物件和資料的備份,也可以用來將資料庫從一個伺服器傳輸到另一個伺服器。管理員可以使用 mysqldump 將資料匯出為特定格式,如 XML 和 CSV。
如何使用 mysqldump 備份單一表格
mysqldump 公用程式只能用來匯出資料庫中的特定表格。例如,假設您只想從電子商務資料庫匯出單一客戶表格。客戶表格資料即可用來傳送行銷電子郵件。mysqldump 公用程式會將客戶表格及其資料匯出至文字檔案。
注意:若要在 mysqldump 中成功執行任何命令,用於存取資料庫的使用者名稱必須具有存取物件的適當權限。沒有存取權限,該命令不會匯出任何結構描述、物件或資料。
您必須指定資料庫名稱和表格名稱,才能成功將物件匯出至文字檔案。如果您想要驗證表格名稱是否正確,請先確定已驗證您進入要使用的資料庫。然後,在 MySQL 命令列或 Workbench 應用程式中執行以下 SQL 命令:
SHOW TABLES;
找到正確的表格名稱後,您可以將表格匯出至文字檔案。以下命令會將客戶表格從資料庫 myDB 匯出到檔案 customer.sql:
mysqldump -u username -p password myDB Customer > customers.sql
“username” 和 “password” 術語應與您自己的使用者名稱和密碼交換。您可以用空格字元分隔每個表格來匯出多個表格。以下內容會將客戶和訂單表格匯出至 customer_orders.sql:
mysqldump -u username -p password myDB Customer Order > customers_orders.sql
將 SQL 陳述式匯出至檔案後,您可以使用標準文字編輯器開啟 SQL 檔案,或使用 MySQL Workbench 開啟。MySQL Workbench 是與 MySQL 資料庫不同的安裝,但您可以從 MySQL 網站免費下載。最好使用 Workbench 開啟它,因為這樣您就可以執行對帳單,並將資料匯入目標 MySQL 資料庫伺服器。
mysqldump 範例
mysqldump 公用程式主要用於備份或傳輸資料至其他資料庫伺服器。無論您是備份資料庫,還是想將資料傳輸到其他伺服器,mysqldump 公用程式的運作方式都相同。mysqldump 備份的一個常見用途,是從生產資料庫建立測試環境。
若要使用生產資料庫建立測試環境,您可以使用 mysqldump 公用程式來完全備份資料庫。以下命令會備份您整個名為 myDB 的資料庫,並將其匯出至名為 myDB.sql 的檔案:
mysqldump -u username -p password -databases myDB > myDB.sql
現在,請登入您的測試伺服器。它還必須安裝 MySQL 才能匯入匯出的資料。請注意,匯出指令使用 ‘>’ 字元將資料從資料庫移動到 SQL 檔案。匯入程序使用 ‘<’ 字元。以下命令會將 myDB.sql 檔案中的所有資料匯入測試環境,該環境與名為 myDB 的資料庫相同:
mysqldump -u username -p password -databases myDB < myDB.sql
使用上述兩個指令,您可以將生產中的原始 myDB 資料庫資料複寫到測試環境中。測試環境讓開發人員和品質保證人員能夠使用真實世界的資料和資料庫結構,模擬任何客戶或員工的問題進行故障排除。
mysqldump 的基本用途
在 mysqldump 期間建立的 .sql 檔案是簡單的文字檔案。您可以在任何文字編輯器中開啟,但最好使用 MySQL Workbench 開啟。Workbench 顏色代碼指令和資料類型,讓 SQL 指令更容易讀取。
您可以使用檔案功能表在工作台中開啟 .sql 檔案。按一下對話方塊中的「開啟 SQL 指令碼」,然後選擇您要讀取的 .sql 檔案。開啟 .sql 檔案後,如果您選擇執行命令,就可以讀取檔案,並使用 “Run SQL Script” 檔案功能表項目來執行。工作台在 Windows 和 Linux 上執行,因此您可以用這種方式在兩個作業系統上執行指令碼。
您也可以使用 mysqldump 公用程式在 Windows 和 Linux 中運行 mysqldump 檔案。下列命令會從 mysqldump 公用程式在 Windows 和 Linux 中的 MySQL 資料庫上執行 SQL 陳述式:
mysqldump -u username -p password -databases myDB < myDB.sql
上述命令會從 myDB.sql mysqldump 檔案匯入資料,並在本機資料庫伺服器上執行 SQL 陳述式。該命令會將資料匯入 myDB 資料庫。
如果資料庫或任何資料庫的表格中沒有資料,仍然會建立資料庫結構,並將資料庫新增至架構中。表格結構可供您在未來新增資料。
mysqldump 的進階使用
大型資料庫可能包含包含 TB 資料的表格。匯出過多可能會耗盡儲存資源,但您可以壓縮每個檔案,以減少 MySQL 資料匯出所需的儲存空間。壓縮檔案可以為超大型檔案節省所需的多個 GB 儲存空間。以下 mysqldump 命令會匯出 myDB 資料庫,並使用 gzip 公用程式壓縮至名為 myDB.sql.gz 的檔案:
mysqldump -u username -p password -databases myDB | gzip myDB.sql.gz
備份通常包含敏感資料,因此必須加密才能確保合規性和資料保護。您需要第三方工具來加密資料。在這個例子中,我們會使用加密來加密 myDB.sql 檔案。您需要一個金鑰(類似密碼)來加密檔案,但您必須記住這個金鑰才能解密。當您加密檔案時,Ccrypt 公用程式會提示您輸入金鑰,或者您可以將金鑰儲存在安全檔案中,以便重複使用該金鑰來加密和解密 .sql 檔案。
在下列範例中,匯出的 .sql 檔案使用名稱為 mykey.key 的檔案中儲存的金鑰進行加密:
mysqldump -u username -p password -databases myDB | ccrypt -k mykey.key > myDB.sql.cpt
請注意,資料會匯出至 .cpt 檔案。此 .cpt 檔案是儲存所有加密資料的地方。您需要相同的金鑰才能解密檔案。您可以使用下列命令解密:
cdecrypt -k mykey.key myDB.sql.cpt
大多數資料庫都包含大量的表格和資料。觸發器和程序也必須備份。依預設,mysqldump 公用程式匯出會以標準匯出觸發,但管理員可以明確指示匯出指令。預設不會匯出程序,因此管理員必須明確匯出。以下指令會與其他資料庫物件和資料一起匯出觸發器和程序:
mysqldump -u 使用者名稱 -p 密碼 -資料庫 myDB –triggers=true –routines=true > myDB.sql
mysqldump 的最佳做法
每當您需要使用 mysqldump 公用程式時,您都可以自由使用,而不會中斷生產力。當您需要頻繁備份或匯出資料庫及其資料時,此功能特別有用。備份應經常進行,以便在資料庫故障、惡意軟體或資料損毀時能夠擷取資料。
備份的頻率取決於您每天新增到資料庫的資料量,以及資料庫變更的頻率。一般而言,您使用 mysqldump 指令的頻率取決於可能遺失的資料量,而不會對營收和業務永續性造成負面影響。您並非總是需要完整備份,但有些企業每週使用一次 mysqldump 公用程式,有些則每天使用一次。判斷您企業所需的完整備份頻率,並使用自動化工具在設定間隔執行 mysqldump。
結論
管理資料庫是一項全職工作,但 mysqldump 公用程式讓管理更有效率。您可以使用它來完整備份資料,或用來在伺服器之間傳輸資料。它與 Windows 或 Linux 相容,因此您可以在任何託管 MySQL 伺服器的環境中使用它。