首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 備份神器 mysqldump 完整參數指南與實戰技巧

     編輯:MySQL 綜合教學

mysqldump 基礎語法

mysqldump [OPTIONS] database [tables]
# 位於 mysql/bin/ 目錄

核心參數速查表

參數短參作用
--add-drop-table每表前加 DROP TABLE IF EXISTS,防匯入失敗
--add-locksINSERT 前後加 LOCK/UNLOCK TABLES
--complete-insert-cINSERT 包含欄位名,利於異構遷移
--delayed-insert使用 INSERT DELAYED
--flush-logs-F備份前刷新 Binlog
--force-f忽略錯誤繼續執行
--lock-tables-l備份期間鎖定表(MyISAM 必須)
--no-create-info-t僅導出資料,無 CREATE TABLE
--no-data-d僅導出結構,無 INSERT
--opt開啟快速導出/導入優化組合(預設開啟)
--quick-q不緩衝結果直接寫檔,大表必加
--tab=path-T產生 .sql(結構) + .txt(資料) 兩檔案
--where="..."-w條件過濾導出資料

實戰指令大全

1. 導出整庫(結構+資料)

mysqldump -u root -p dataname > dataname.sql

2. 導出單表

mysqldump -u root -p dataname users > dataname_users.sql

3. 僅導出結構

mysqldump -u root -p -d --add-drop-table dataname > structure.sql

4. 條件導出(如 2000 年後訂單)

mysqldump -u root -p --where="Order_Date >= '2000-01-01'" dataname Orders > recent_orders.sql

5. 導出為 CSV 格式(便於 Excel)

mysqldump -u root -p --tab=/tmp/export --fields-terminated-by=, --no-create-info dataname Orders

6. 導入資料庫

# 方法一:source 指令
mysql -u root -p
CREATE DATABASE target_db;
USE target_db;
SOURCE /path/to/dump.sql;

# 方法二:管道導入
mysql -u root -p target_db < dump.sql

進階技巧

大表備份優化

mysqldump -u root -p --single-transaction --quick --master-data=2 \
  --routines --triggers --events large_db | gzip > large_db_$(date +%F).sql.gz
  • --single-transaction:InnoDB 一致性熱備份,不鎖表
  • --master-data=2:輸出 Binlog 位置(註釋形式),支援 PITR
  • gzip:即時壓縮節省空間

只備份特定資料庫的特定表

mysqldump -u root -p db_name table1 table2 table3 > subset.sql

排除特定表

mysqldump -u root -p --ignore-table=db.log_table --ignore-table=db.temp_table db_name > clean.sql

SELECT INTO OUTFILE 替代方案

-- 直接在 SQL 中導出
SELECT * INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM orders WHERE order_date >= '2024-01-01';
  • 需 FILE 權限
  • 輸出目錄受 secure_file_priv 限制
  • 可配合 JOIN 複雜查詢導出報表

Schema 定義

用資料定義語言(DDL)表示的語句集,完整描述資料庫結構。

常見坑點提醒

  • 編碼不一致:導出/導入字符集必須一致,否則亂碼
  • 版本差異:高版本導出導入低版本可能失敗,加 --compatible=mysql40
  • 權限不足:需 SELECT, LOCK TABLES, SHOW VIEW, RELOAD, PROCESS 等權限
  • max_allowed_packet:大表導入報錯 1153 時調大此參數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved