萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

mysqldump 與 SOURCE 命令:MySQL 備份還原完整操作手冊與進階參數詳解

mysqldump (邏輯備份) 與 SOURCE (還原) 是 MySQL 最基礎、最通用的備份還原工具組合。本文整理 Windows/Linux 基礎操作、常用進階參數、壓縮/結構/多庫/遠程遷移等實戰場景,並深度解析 mysqldump 核心參數機制,助您建立可靠備份策略。

基礎操作速查

操作命令範例
備份整庫mysqldump -h localhost -u root -p123456 dbname > backup.sql
備份單表mysqldump -u root -p dbname table1 table2 > tables.sql
僅備份結構mysqldump --no-data -u root -p dbname > struct.sql
帶 DROP TABLEmysqldump --add-drop-table -u root -p dbname > backup.sql
壓縮備份mysqldump -u root -p dbname | gzip > backup.sql.gz
多庫備份mysqldump --databases db1 db2 db3 > multi.sql
全庫備份mysqldump --all-databases > all.sql
還原 (Shell)mysql -h localhost -u root -p dbname < backup.sql
還原 (MySQL 內部)mysql> SOURCE /path/backup.sql;
解壓並還原gunzip < backup.sql.gz | mysql -u root -p dbname
跨伺服器遷移mysqldump -u root -p dbname | mysql -h new_host -C dbname

Windows 圖形化操作流程

  1. CMD 進入 MySQL bin 目錄:cd /d D:\MySQL\bin
  2. 匯出:mysqldump -uroot -p dbname > dbname.sql (輸入密碼)
  3. 若報 Lock table 錯誤,加 --skip-lock-tables。
  4. 匯入:mysql -uroot -p dbname < dbname.sql 或 MySQL 客戶端 SOURCE dbname.sql;

Linux 標準流程

# 備份
cd /var/lib/mysql  # 或自定資料目錄
mysqldump -u root -p dbname > backup.sql

# 還原法一:進入客戶端
mysql -u root -p
mysql> USE dbname;
mysql> SOURCE /var/lib/mysql/backup.sql;

# 還原法二:直接管線
mysql -u root -p dbname < backup.sql

mysqldump 核心參數深度解析

參數說明建議場景
--compatible=name輸出相容指定 DB/版本 (ansi,mysql323,mysql40,postgresql...)跨版本/異構遷移
--complete-insert, -c完整 INSERT (含欄位名),提高插入效率但可能超過 max_allowed_packet小表、需可讀性
--default-character-set=charset指定匯出字元集,**防止亂碼必加**所有非 latin1 環境
--disable-keysINSERT 前後加 DISABLE/ENABLE KEYS,大幅加速 MyISAM 載入MyISAM 大表
--extended-insert多行合併 INSERT (預設開啟),--skip-extended-insert 關閉大表加速,小表可關閉
--hex-blob二進位欄位 (BLOB/BINARY) 以十六進位輸出,**有二進位資料必加**含 BLOB/VARBINARY
--lock-all-tables, -x全域讀鎖,保證一致性,自動關閉 --single-transactionMyISAM 全庫一致性備份
--lock-tables鎖定當前庫所有表 (MyISAM),InnoDB 請用 --single-transactionMyISAM 單庫備份
--no-create-info, -t僅匯出資料,不含 CREATE TABLE資料遷移、同步
--no-data, -d僅匯出結構Schema 版控、審核
--opt快捷組合:--add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset (預設開啟)通用備份,大表需配合 --quick
--quick, -q串流讀取不緩存結果集,**大表必加**防止 OOM大表備份
--routines, -R匯出預存程序/函數完整遷移
--single-transaction啟動事務一致性讀取 (InnoDB/BDB),不鎖表,**線上熱備份首選**InnoDB 生產環境
--triggers匯出觸發器 (預設開啟)完整遷移
--master-data=1輸出 CHANGE MASTER TO 指定 binlog 位置,配合 --single-transaction 實現線上備份可做 Slave建立從庫、時間點恢復

實戰推薦指令模板

MyISAM 表 (含鎖表、停用索引)

/usr/local/mysql/bin/mysqldump -uuser -ppass \
--default-character-set=utf8mb4 --opt --extended-insert=false \
--triggers -R --hex-blob -x db_name > db_name.sql

InnoDB 表 (線上熱備份、單一事務)

/usr/local/mysql/bin/mysqldump -uuser -ppass \
--default-character-set=utf8mb4 --opt --extended-insert=false \
--triggers -R --hex-blob --single-transaction db_name > db_name.sql

建立可直接做 Slave 的備份 (GTID/檔案位置)

/usr/local/mysql/bin/mysqldump -uuser -ppass \
--default-character-set=utf8mb4 --opt --master-data=1 \
--single-transaction --flush-logs db_name > db_name.sql

SOURCE 還原注意事項

  • SOURCE 是 **mysql 客戶端內建命令**,非標準 SQL。
  • 路徑必須為**絕對路徑**,且 mysqld 執行用戶需有讀取權限。
  • 大檔案還原建議在 screen 或 tmux 中執行,防斷線中斷。
  • 還原前可先 SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; 加速,結束後恢復並 COMMIT;。

備份策略建議

  1. 每日全量 + 每小時增量 (binlog):--master-data=1 --flush-logs 獲取 binlog 位置。
  2. 異地備份:備份檔加密上傳至對象儲存 (S3/OSS/GCS)。
  3. 定期演練還原:每季至少一次全量還原演練,驗證備份可用性與 RTO/RPO。
  4. 監控備份狀態:檢查檔案大小、耗時、錯誤日誌,納入告警體系。

熟練掌握 mysqldump 參數組合與 SOURCE 還原細節,是 DBA 與開發人員構建資料安全防線的核心基本功。

copyright © 萬盛學電腦網 all rights reserved