萬盛學電腦網

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

mysqldump 備份與還原 MySQL 數據庫完整指南

備份模式對比

模式命令範例適用場景
單表mysqldump -u user -p db table > table.sql單表遷移、結構變更測試
單庫mysqldump -u user -p db > db.sql常規備份、庫級遷移
全庫mysqldump -u user -p --all-databases > all.sql實例遷移、升級前全備

核心參數速查


-e, --extended-insert     # 批量 INSERT,導入快 20 倍+
--single-transaction      # InnoDB 熱備不鎖表(必加)
--master-data=2           # 記錄 Binlog 位置(CHANGE MASTER 註解)
-R, --routines            # 導出預存程序/函數
--triggers                # 導出觸發器(預設開啟)
--hex-blob                # 二進制欄位十六進制導出
--quick                   # 大表流式讀取,不緩存全量結果集
--set-gtid-purged=OFF     # 避免 GTID 污染目標庫(5.6+)

還原兩種方式

方式一:Shell 管道(推薦自動化)


mysql -u root -p dbname < backup.sql
# 遠程
mysql -h remote_host -u root -p dbname < backup.sql

方式二:MySQL 客戶端 source 命令


mysql -u root -p
USE dbname;
SOURCE /path/backup.sql;

避坑清單

  • 備份檔無 DROP/CREATE DATABASE 時,還原前需手動 DROP DATABASE IF EXISTS db; CREATE DATABASE db;
  • 大檔導入調大 max_allowed_packet(如 1G)與 innodb_log_file_size
  • 字符集不一致導致亂碼:導出/導入指定 --default-character-set=utf8mb4
  • 外鍵約束導入失敗:SET FOREIGN_KEY_CHECKS=0; 導入後再開啟

一鍵備份別名(加入 ~/.bashrc)


alias mysqlbak='mysqldump --single-transaction --master-data=2 --routines --triggers --hex-blob --quick -u root -p'
# 用法:mysqlbak dbname > db_$(date +%F).sql
copyright © 萬盛學電腦網 all rights reserved