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

mysqldump 單表備份實戰:SSH 遠端導出與編輯器顯示陷阱避坑指南

     編輯:MySQL 資料庫相關知識

標準單表導出指令


# 本機
mysqldump -h127.0.0.1 -u dbuser -p'dbpass' -e --opt dbname tablename > tablename_bak.sql

# SSH 遠端直導(無需登入遠端主機)
ssh user@db-host "mysqldump -h127.0.0.1 -u dbuser -p'dbpass' -e --opt dbname tablename" > local_tablename_bak.sql

# 參數解析
-e, --extended-insert   # 使用多行 INSERT,縮小檔案、加快還原
--opt                   # 等同 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset

血淚教訓:編輯器「隱藏」資料行

現象:用 EditPlus/Notepad++/VS Code 打開 .sql,只看到 CREATE TABLE,沒有 INSERT 語句,以為備份失敗。
真相:檔案過大(如 200MB+),編輯器預設只載入前 N 行或截斷顯示,INSERT 在檔案後半段。
驗證:tail -n 5 tablename_bak.sql 或 grep -c "^INSERT" tablename_bak.sql 即可見資料行。
建議:大檔案用 less、vim、head/tail、split 處理,勿用圖形編輯器全開。

進階:壓縮、分卷、並行導出


# 管道壓縮(節省磁碟與網路)
mysqldump -u root -p db table | gzip > table.sql.gz

# 分卷(配合 split,適合傳輸限制大小)
mysqldump -u root -p db table | gzip | split -b 100m - table.sql.gz.part.

# 多表並行導出(mydumper,需額外安裝)
mydumper -h 127.0.0.1 -u root -p -B db -T table -t 8 -o ./dumpdir
# -t 8 八執行緒並行,速度提升 5-8 倍

還原驗證清單

  1. head -n 20 table.sql 確認 CREATE TABLE 結構正確。
  2. grep -c "^INSERT" table.sql 確認資料行筆數 > 0。
  3. mysql -u root -p db < table.sql 還原無報錯。
  4. SELECT COUNT(*) FROM db.table; 對比筆數一致。
  5. CHECKSUM TABLE db.table; 來源/目標校驗碼一致(最強驗證)。

常見參數陷阱

參數誤區正確用法
-p-ppass 無空格;-p pass 會提示輸入-p'pass' 或 --password='pass' 最明確
--single-transaction只對 InnoDB 有效;MyISAM 仍會鎖表InnoDB 表必加,確保一致性快照不阻塞寫入
--master-data=2以註解形式記錄 binlog 位點,適合建立 Slave遷移/建 Slave 時必加
--no-data (-d)僅導結構結構遷移、建測試庫用
--where導出部分資料--where="id > 1000 AND status=1"
備份未驗證等於沒備份。建立「導出 → 壓縮 → 校驗 → 異地存放 → 定期演練還原」完整閉環,才是資料安全的基石。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved