mysqldump 是最通用的邏輯備份工具。本文整理 DOS/Linux 下完整導出導入指令、文字檔批次匯入格式規範、phpMyAdmin 圖形化操作要點,適合快速查閱實操。
| 場景 | 指令範例 | 說明 |
|---|---|---|
| 全庫導出 (含資料) | mysqldump -u root -p dbname > dump.sql | 最常用,產生 CREATE + INSERT |
| 單表導出 | mysqldump -u root -p dbname tbl > tbl.sql | 指定表名 |
| 僅導出結構 (無資料) | mysqldump -u root -p -d --add-drop-table dbname > schema.sql | -d no-data,--add-drop-table 避免還原衝突 |
| 指定字符集導出 | mysqldump -u root -p --default-character-set=gbk dbname > dump.sql | 解決中文亂碼關鍵 |
| 不含鎖表陳述句 | mysqldump --add-locks=false -u root -p dbname > dump.sql | 虛擬主機無 LOCK 權限時必加 |
| 壓縮輸出 | mysqldump -u root -p dbname | gzip > dump.sql.gz | 大庫節省空間 |
| 遠端導出並直接導入 | mysqldump -h host1 -u root -p dbname | mysql -h host2 -u root -p dbname | 跨主機同步,免落地檔案 |
| 方式 | 指令 | 適用場景 |
|---|---|---|
| 命令列重導向 | mysql -u root -p dbname < dump.sql | 標準、大檔案穩定 |
| MySQL 客戶端 SOURCE | mysql -u root -p dbname -e "SOURCE /path/dump.sql;" | 需絕對路徑,mysqld 執行身分需可讀 |
| 單行管道 | mysql -u root -p -e "SOURCE /path/dump.sql;" dbname | 腳本自動化 |
FIELDS TERMINATED BY ','\N (大寫 N)LINES TERMINATED BY '\n'3 張三 25 2020-01-01
4 \N 30 2020-02-01LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
(col1, col2, col3, col4);
注意:LOCAL 讀取客戶端檔案;無 LOCAL 讀取伺服器端檔案 (需 FILE 權限)。
SELECT * FROM tbl INTO OUTFILE '/tmp/tbl.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
mysqlimport -u root -p --local --fields-terminated-by=',' dbname /path/tbl.txt
--replace/--ignore 處理主鍵衝突php.ini upload_max_filesize/post_max_size/max_execution_time;或分割 SQL 檔--default-character-set)--add-locks=falseSET AUTOCOMMIT=0; SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0; 導入後恢復mysql -u root -p test_db < dump.sql 於測試庫還原檢查備份未測試還原 = 無備份。建立「每季演練一次還原」機制,才是真正的資料保障。