mysqldump 是 MySQL 官方提供的邏輯備份工具,支援將資料庫或特定資料表導出為 SQL 腳本,方便遷移、備份與還原。本文整理最常用的備份與還原指令,並說明壓縮、大數據量優化技巧。
# 備份單一資料庫
mysqldump -u 用戶名 -p 密碼 資料庫名 > 備份檔名.sql
# 例:mysqldump -u root -p mydb > mydb_backup.sql
避免先生成巨大 SQL 再壓縮,直接管道傳輸至 gzip,節省磁碟空間與 I/O 時間:
mysqldump -u 用戶名 -p 密碼 資料庫名 | gzip > 備份檔名.sql.gz
# 從純 SQL 檔還原
mysql -u 用戶名 -p 密碼 資料庫名 < 備份檔名.sql
# 從 gzip 壓縮檔直接還原(解壓並管道導入)
gzip < 備份檔名.sql.gz | mysql -u 用戶名 -p 密碼 資料庫名
| 參數 | 說明 |
|---|---|
--single-transaction | InnoDB 熱備份必加,確保一致性不鎖表 |
--routines / -R | 導出存儲過程與函數 |
--triggers | 導出觸發器 |
--events | 導出事件調度器 |
--hex-blob | 二進位欄位(BLOB/BINARY)以十六進位導出 |
--no-data / -d | 僅導出結構(不含資料) |
--no-create-info / -t | 僅導出資料(不含 CREATE TABLE) |
--add-drop-table | 每個 CREATE TABLE 前加 DROP TABLE IF EXISTS |
--quick / -q | 逐行讀取導出,不緩存整張表到記憶體 |
--extended-insert | 多行合併 INSERT(預設開啟),導入更快 |
mysqldump -h source_host -u user -p db | mysql -h target_host -u user -p dbmysqldump -u user -p db table1 table2 > tables.sqlmysqldump -u user -p --no-data db > schema.sql提示:生產環境建議建立專用備份帳號,僅授予 SELECT、LOCK TABLES、SHOW VIEW、EVENT、TRIGGER 權限,避免使用 root 帳號。