1. 前言
MySQL 資料庫的備份與還原是維護系統安全性與穩定性的重要工作。若發生資料遺失或伺服器故障,必須事先準備好快速復原的方案。mysqldump 指令是 MySQL 常用的資料庫備份工具,具備簡單的語法以及多種選項,可靈活應對不同需求。
本文將從 mysqldump 指令的基礎用法開始,說明進階選項的使用方式,並詳細介紹如何從備份檔案中還原資料庫。
2. mysqldump 的基本語法
mysqldump 是用來匯出(dump)MySQL 資料與結構的指令。以下是基本語法範例:
mysqldump -u [使用者名稱] -p [資料庫名稱] > [輸出檔案.sql]
參數說明
- -u [使用者名稱]:指定連線至 MySQL 的使用者帳號。
- -p:指定密碼(若省略,執行時會以互動方式要求輸入)。
- [資料庫名稱]:要備份的資料庫名稱。
- > [輸出檔案]:指定匯出的 SQL 檔案路徑。
在這個基本語法中加入不同選項,即可建立符合各種需求的備份檔案。
範例指令
mysqldump -u root -p my_database > my_database_backup.sql
這個指令會將 my_database
資料庫備份成 my_database_backup.sql
檔案。

3. 常見選項與使用方法
3.1 –all-databases
使用 --all-databases
選項可一次備份 MySQL 伺服器上的所有資料庫,適合需要集中管理多個資料庫的情況。
mysqldump -u root -p --all-databases > all_databases_backup.sql
3.2 –no-data
--no-data
選項只會匯出資料庫結構,不包含實際資料,適合僅需複製資料表定義的情境。
mysqldump -u root -p --no-data my_database > my_database_schema.sql
3.3 –add-drop-table
加入 --add-drop-table
選項後,備份檔中會包含 DROP TABLE
語句,可避免還原時發生資料表重複問題,方便覆蓋既有資料表。
mysqldump -u root -p --add-drop-table my_database > my_database_backup.sql
3.4 –lock-tables
--lock-tables
選項會在備份過程中鎖定資料表,避免匯出時資料被修改,適用於處理線上運行的資料庫。
mysqldump -u root -p --lock-tables my_database > locked_backup.sql
4. 進階選項
4.1 使用 –where 條件式備份
透過 --where
選項,可以依條件匯出特定資料。例如,只備份指定日期之後的資料:
mysqldump -u root -p my_database --where="created_at >= '2023-01-01'" > filtered_data_backup.sql
此範例僅會備份 created_at
欄位值大於等於 2023-01-01 的資料。
4.2 –xml 選項
--xml
選項可將資料匯出為 XML 格式,適合需要以 XML 格式交換資料的系統或應用程式。
mysqldump -u root -p --xml my_database > database_backup.xml

5. 使用 mysqldump 還原資料
要從 mysqldump 備份檔還原資料庫,可使用 mysql
指令:
mysql -u [使用者名稱] -p [資料庫名稱] < [備份檔案.sql]
5.1 還原範例
以下範例示範如何從 my_database_backup.sql
還原 my_database
:
mysql -u root -p my_database < my_database_backup.sql
注意事項
- 資料覆蓋風險:還原時可能覆蓋既有資料,操作需謹慎。
- 編碼確認:若涉及多位元組字元,需確認編碼一致,否則資料可能無法正確還原。
6. 備份策略建議
6.1 自動化定期備份
由於資料庫內容經常變動,自動化定期備份相當重要。可利用 cron
工作排程每天執行備份:
0 2 * * * mysqldump -u root -p my_database > /path/to/backup/my_database_$(date +%F).sql
此範例會在每天凌晨 2 點備份,檔名會自動包含日期。
6.2 增量備份
與其每次完整備份,不如只備份變更過的資料。可透過 --where
選項,僅匯出最近修改的資料,提升效率。

7. 結論
mysqldump 是 MySQL 非常實用的備份工具,簡單易用卻功能強大。只要掌握基本用法與進階選項,並規劃好備份策略,即可大幅提升系統安全性與資料保護能力。透過自動化備份與增量備份,更能有效進行資料管理。
希望本文能幫助你優化 mysqldump 備份流程,進一步提升資料庫管理的效率。