首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

mysqldump 備份與還原實戰手冊:全庫/單表/結構導出、文字檔匯入、phpMyAdmin 圖形化操作

     編輯:MySQL 資料庫相關知識

mysqldump 是最通用的邏輯備份工具。本文整理 DOS/Linux 下完整導出導入指令、文字檔批次匯入格式規範、phpMyAdmin 圖形化操作要點,適合快速查閱實操。

一、mysqldump 導出指令大全

場景指令範例說明
全庫導出 (含資料)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 客戶端 SOURCEmysql -u root -p dbname -e "SOURCE /path/dump.sql;"需絕對路徑,mysqld 執行身分需可讀
單行管道mysql -u root -p -e "SOURCE /path/dump.sql;" dbname腳本自動化

三、文字檔批次匯入 (LOAD DATA INFILE)

檔案格式規範

  • 欄位間隔:Tab 鍵 (預設) 或自訂 FIELDS TERMINATED BY ','
  • NULL 值:\N (大寫 N)
  • 換行:LINES TERMINATED BY '\n'
  • 範例:
    3	張三	25	2020-01-01
    4	\N	30	2020-02-01

匯入指令

LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl
  FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
  (col1, col2, col3, col4);

注意:LOCAL 讀取客戶端檔案;無 LOCAL 讀取伺服器端檔案 (需 FILE 權限)。

四、對應匯出 (SELECT INTO OUTFILE)

SELECT * FROM tbl INTO OUTFILE '/tmp/tbl.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n';
  • 需 FILE 權限
  • 輸出檔不可覆蓋既有檔案 (安全限制)
  • 目錄需 mysqld 執行身分可寫

五、mysqlimport 工具 (LOAD DATA 封裝)

mysqlimport -u root -p --local --fields-terminated-by=',' dbname /path/tbl.txt
  • 檔名即表名 (tbl.txt → tbl)
  • 支援 --replace/--ignore 處理主鍵衝突

六、phpMyAdmin 圖形化操作要點

  1. 匯出:選擇「快速」或「自訂」→ 格式 SQL → 選擇「結構與資料」/「僅結構」→ 執行下載
  2. 匯入:選擇檔案 → 字符集選 檔案實際編碼 (非預設 utf-8) → 格式 SQL → 執行
  3. 大檔案匯入失敗:調整 php.ini upload_max_filesize/post_max_size/max_execution_time;或分割 SQL 檔

七、避坑清單

  • 導出編碼 ≠ 導入編碼 → 亂碼 (指定 --default-character-set)
  • 虛擬主機無 LOCK 權限 → --add-locks=false
  • InnoDB 大表導入慢:SET AUTOCOMMIT=0; SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0; 導入後恢復
  • 備份檔定期驗證:mysql -u root -p test_db < dump.sql 於測試庫還原檢查

備份未測試還原 = 無備份。建立「每季演練一次還原」機制,才是真正的資料保障。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved