Pexels Cookiecutter 1148820

使用 mysqldump 進行 MySQL 資料庫備份

「如果資料庫出問題,能不能快速恢復?」 這或許是許多工程師在面對資料庫維運時心中的疑問。就我而言,遇到伺服器故障或有人誤刪資料表時,最慶幸的就是事先做好備份。這次要分享的是 MySQL 中常用的備份指令 mysqldump,讓大家能在需要時把握關鍵的「救命繩」。

為什麼需要備份?

在商業專案或個人開發中,資料往往是系統的核心。如果發生誤刪或遭遇災難性故障(如硬碟損毀),良好的備份機制能大幅降低損失。同時,定期備份也能讓我們在測試新功能時,有「可回溯」的版本做復原測試。

基本指令:mysqldump

MySQL 官方提供的 mysqldump 是最常用的備份工具,可快速將資料匯出成 SQL 檔案。以下是基本語法:

Bash
$ mysqldump -u [username] -p[password] [database_name] > [backup_file.sql]
  • [username]:MySQL 使用者名稱
  • [password]:MySQL 密碼,貼心提醒可以用 -p 後再輸入密碼,但有些場景許可時,也可直接緊貼在命令後
  • [database_name]:要備份的資料庫
  • [backup_file.sql]:備份檔案名稱(建議用日期、版本等資訊來清楚標識)

範例

假設想備份名稱為 mydb 的資料庫,使用者為 root,密碼為 password,並將備份檔命名為 mydb_backup.sql,指令可參考如下:

Bash
$ mysqldump -u root -ppassword mydb > mydb_backup.sql

這樣做就能將 mydb 的所有結構與資料輸出到 mydb_backup.sql,下次若需要還原,只需在 MySQL 端執行 source mydb_backup.sql 或其他相應還原指令即可。

備份多個或所有資料庫

如果你想一次備份多個資料庫,可以在指令裡面依序列出資料庫名稱;若要備份所有資料庫,則直接省略 [database_name] 並使用 –all-databases 參數。例如:

Bash
$ mysqldump -u root -ppassword --all-databases > all_db_backup.sql

這會將伺服器上所有的資料庫匯出到一個 SQL 檔,適合在整台伺服器做大規模維護或遷移時使用。但要注意備份檔可能變得非常大,建議配合壓縮工具或設定定期自動備份機制。

小結

  • 定期備份:不論是每天或每週,視專案需求設定自動化備份
  • 檔案命名:建議在檔名中加上日期或版本,以清楚辨別
  • 測試還原:除了備份,也要偶爾做還原測試,才能確保備份有效
  • 安全性:若密碼直接放在指令裡,務必留意指令歷史紀錄的安全問題

在資安與維運領域裡,備份絕對是每個工程師的「生存必備」。做得早、做得勤,才不會在關鍵時刻束手無策。希望這篇關於 MySQL 備份指令的分享,能幫你在面對資料庫風險時更有底氣,也讓你和你的專案都能更安心地持續前進!