mysqldump與mysql客戶端是MySQL資料遷移、備份還原的核心工具組合。本文系統梳理四大導出場景、兩大導入方式、關鍵參數與常見坑點,構建完整操作手冊。
| 場景 | 命令範例 | 關鍵參數說明 |
|---|---|---|
| 整庫導出(含數據) | mysqldump -h host -u user -p dbname > backup.sql | 未指定路徑輸出至當前目錄 |
| 單表導出 | mysqldump -h host -u user -p dbname table_name > table.sql | 表名位於資料庫後 |
| 僅導出結構(無數據) | mysqldump -h host -u user -p -d --add-drop-table dbname > struct.sql | -d無數據;--add-drop-table建表前加DROP |
| 導出函數與存儲過程 | mysqldump -h host -u user -p -n -t -d -R dbname > routines.sql | -n無建庫;-t無建表;-d無數據;-R導出routines |
注意:-ntd組合等價於-n -t -d(無建庫、無建表、無數據),專用於導出routines。
mysql -h host -u user -p dbname < backup.sql
mysql -h host -u user -p dbname
mysql> source /path/to/backup.sql;
--single-transaction:InnoDB熱備份不鎖表,保證一致性視圖(必加)--routines --triggers --events:同步導出存儲過程/觸發器/事件(8.0+預設開啟)--set-gtid-purged=OFF:避免GTID資訊干擾異構遷移--default-character-set=utf8mb4:顯式指定字符集,防止亂碼--hex-blob:二進制欄位用十六進制導出,避免特殊字符問題--quick:大表分批讀取,不緩存全表至記憶體--compress:網路傳輸壓縮(慢網環境有效)C:\Users\Admin)mysqldump ... > D:\backups\db.sqlcmd或加| Out-File -Encoding utf8| 現象 | 原因 | 解決 |
|---|---|---|
導入報錯Unknown database | 目標庫不存在 | 先CREATE DATABASE或導出時加-B含建庫語句 |
| 導入亂碼 | 字符集不匹配 | 導出導入雙端指定--default-character-set;SQL文件首行加/*!40101 SET NAMES utf8mb4 */; |
| 大文件導入慢 | 單事務提交、索引維護 | 導入前SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0;,後恢復 |
| 函數/存儲過程導入失敗 | 權限不足或log_bin_trust_function_creators=OFF | 設置SET GLOBAL log_bin_trust_function_creators=1; |
掌握mysqldump全參數矩陣,讓資料遷移從「試錯」變為「標準化作業」。