官方邏輯備份工具,輸出 SQL 文本文件,跨版本、跨平台遷移首選。
| 場景 | 命令 | 說明 |
|---|---|---|
| 單庫備份 | mysqldump -u root -p game > game_backup.sql | 交互式輸入密碼,輸出含建表+插入語句 |
| 全庫備份 | mysqldump -u root -p --all-databases > all_backup.sql | 包含 mysql 系統庫,遷移實例適用 |
| 僅結構不數據 | mysqldump -u root -p -d game > game_schema.sql | -d / --no-data |
| 僅數據不結構 | mysqldump -u root -p -t game > game_data.sql | -t / --no-create-info |
| 壓縮備份 | mysqldump -u root -p game | gzip > game_backup.sql.gz | 管道壓縮,節省 70%+ 空間 |
| 指定表備份 | mysqldump -u root -p game user order > game_core.sql | 表名空格分隔 |
| 遠程備份 | mysqldump -h 10.0.0.1 -u root -p game > game_backup.sql | -h 指定主機 |
mysqldump -u root -p \
--single-transaction \ # InnoDB 熱備份核心,不加鎖,基於 MVCC 一致性視圖
--quick \ # 不緩存結果集,逐行輸出,防 OOM
--master-data=2 \ # 記錄 binlog 位點 (註釋形式),從庫搭建必備
--hex-blob \ # 二進制列 (BLOB/BINARY) 導出為 0x... 十六進制,防編碼問題
--routines --triggers \ # 包含存儲過程/觸發器/事件
--set-gtid-purged=OFF \ # 避免 GTID 污染目標實例
game > game_backup.sql
# 建庫 (若備份文件無 CREATE DATABASE)
mysql -u root -p -e "CREATE DATABASE game CHARSET utf8mb4;"
# 還原
mysql -u root -p game < game_backup.sql
mysql -u root -p game
mysql> SET NAMES utf8mb4;
mysql> SOURCE /path/to/game_backup.sql;
優點:在 MySQL 客戶端內部執行,網絡中斷不影響,可見執行進度。
mydumper/myloader:多線程導出導入,效能提升 5-10 倍。| 場景 | 方案 |
|---|---|
| MySQL 5.7 → 8.0 升級 | mysqldump --column-statistics=0 (關閉統計信息導出) + mysql_upgrade |
| 跨版本/引擎遷移 | mysqldump --compatible=mysql40/ansi + 手工調整 SQL_MODE |
| 增量備份 | 二進制日志 + mysqlbinlog --start-position/--stop-position |
| 庫表重命名遷移 | sed 替換 SQL 文件中庫表名 + 還原 |
--default-character-set=utf8mb4,防止亂碼。SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, PROCESS, RELOAD 權限。--single-transaction 僅對 InnoDB 有效,MyISAM 仍會加表鎖。History list length。foreign_key_checks=0 unique_checks=0 autocommit=0 加速,還原後重開。mysqldump 是 MySQL 備份的「瑞士軍刀」。掌握核心參數組合 (--single-transaction --quick --master-data=2 --hex-blob),配合壓縮、並行工具,可覆蓋從開發環境到 TB 級生產庫的全場景備份還原需求。