萬盛學電腦網

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

MySQL mysqldump 備份還原完整操作指南 (含參數詳解)

mysqldump 備份還原權威指南:參數詳解、最佳實踐、遷移實戰

系統梳理 mysqldump 核心參數、MyISAM/InnoDB 差異備份策略、還原方法、大文件處理、跨版本遷移。

mysqldump 核心參數深度解析

參數功能建議場景
--compatible=name兼容模式:ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options...跨版本/異構遷移
--complete-insert, -c完整 INSERT (含欄位名)可讀性、調試、小表
--default-character-set=charset導出字符集必加 utf8mb4 避免亂碼
--disable-keysINSERT 間禁用/啟用索引MyISAM 大表加速導入
--extended-insert多行 VALUES 批次 INSERT (預設開啟)加快導入,大表必開
--hex-blob二進制欄位十六進制導出含 BLOB/BINARY/GEOMETRY 必加
--lock-all-tables, -x全局讀鎖 (所有庫所有表)MyISAM/混合引擎一致性備份
--lock-tables鎖定當前導出庫的表MyISAM (預設開啟)
--no-create-info, -t只導數據,無 CREATE TABLE數據遷移、測試數據
--no-data, -d只導結構,無數據架構遷移、審核
--opt快捷組合 (add-drop-table, add-locks, create-options, disable-keys, extended-insert, lock-tables, quick, set-charset)預設開啟
--quick, -q流式讀取,不緩存結果集大表必加 防 OOM
--routines, -R導出存儲過程/函數完整備份必加
--single-transaction事務一致性視圖 (InnoDB)線上熱備份必加
--triggers導出觸發器 (預設開啟)完整備份
--master-data=2註釋記錄 binlog 位置搭建 Slave 同步必加

引擎差異化備份策略

MyISAM 表 (需鎖表保證一致性)

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

InnoDB 表 (熱備份,不鎖表)

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

還原方法

1. 命令行管道導入

/usr/local/mysql/bin/mysql -u user -p db_name < db_name.sql

2. 壓縮文件導入

gunzip < db_name.sql.gz | mysql -u user -p db_name

3. MySQL 客戶端 SOURCE

mysql -u user -p
USE db_name;
SOURCE /absolute/path/db_name.sql;

4. 跨伺服器直接遷移

mysqldump -u user -p -h source_host db_name \
  --single-transaction --quick --routines --triggers \
  | mysql -u user -p -h target_host -C db_name

Windows 環境操作

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

# 導出
mysqldump -h localhost -u root -p mydb > "E:\backup\mydb.sql"

# 導入
mysql -h localhost -u root -p mydb < "E:\backup\mydb.sql"
# 或
mysql -u root -p
USE mydb;
SOURCE E:/backup/mydb.sql;

導入大小限制解決 (phpMyAdmin/Web 介面)

修改 php.ini 三大參數

memory_limit = 256M
upload_max_filesize = 200M
post_max_size = 200M

# 並調大執行時間
max_execution_time = 300
max_input_time = 300

重啟 PHP-FPM/Apache 生效。最佳做法:繞過 Web 介面,直接命令行導入無大小限制。

非系統路徑安裝操作

# 例:安裝在 D:\MySQL Server 5.0
D:
cd "D:\MySQL Server 5.0\bin"

# 導出
mysqldump -u root -p db_name > db_name.sql

# 導入
mysql -u root -p db_name < db_name.sql

字符集遷移特殊處理 (舊版本 GBK → utf8mb4)

# 1. 導出時加 SET NAMES
mysqldump -u root -p --default-character-set=gbk db_name | sed '1iSET NAMES utf8mb4;' > backup.sql

# 2. 或導出後修改文件
# 在 CREATE TABLE 後加 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
# 文件開頭加 SET NAMES utf8mb4;

掌握參數組合、引擎差異、字符集處理,mysqldump 就能應對 99% 備份遷移場景。

copyright © 萬盛學電腦網 all rights reserved