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

MySQL 數據庫備份與恢復生產手冊:mysqldump 全量/增量、source 導入、字符集、多庫並行、壓縮傳輸

     編輯:MySQL 綜合教學

MySQL 數據庫備份與恢復生產手冊

系統整理 mysqldump 七大導出場景、source/管道雙導入法、字符集統一策略、大文件優化技巧、自動化備份腳本模板,直針生產環境痛點。

導出場景全覆蓋

# 1. 全量備份(數據+結構)
mysqldump -u root -p db_name > full_backup.sql

# 2. 單表備份
mysqldump -u root -p db_name tbl_name > tbl_backup.sql

# 3. 僅結構(-d / --no-data)
mysqldump -u root -p -d --add-drop-table db_name > schema.sql

# 4. 指定字符集導出(跨版本/跨編碼遷移)
mysqldump -u root -p --default-character-set=utf8mb4 --set-charset=gbk db_name > backup.sql

# 5. 多庫並行備份
mysqldump -u root -p --databases db1 db2 db3 > multi.sql

# 6. 熱備份(InnoDB 單事務一致性快照,不鎖表)
mysqldump -u root -p --single-transaction --master-data=2 db_name > hot_backup.sql

# 7. 壓縮備份(節省 70%+ 空間)
mysqldump -u root -p db_name | gzip > backup.sql.gz

導入方式對比

方式命令適用場景
source 命令mysql> SOURCE /path/backup.sql;交互式、需先建庫/設編碼
管道導入mysql -u root -p db_name < backup.sql腳本自動化、CI/CD 流水線
壓縮直導zcat backup.sql.gz | mysql -u root -p db_name大文件、省磁盤臨時空間

大文件導入加速技巧

# 臨時關閉檢查
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SOURCE huge.sql;
SET foreign_key_checks=1;
SET unique_checks=1;
SET autocommit=1;
COMMIT;

自動化備份腳本模板

#!/bin/bash
# daily_backup.sh - 每日 02:00 執行
BACKUP_DIR=/backup/mysql/$(date +%F)
mkdir -p $BACKUP_DIR
DB_LIST="db1 db2 db3"
for DB in $DB_LIST; do
  mysqldump -u backup_user -p'pwd' --single-transaction --master-data=2 \
    --routines --triggers --events $DB | gzip > $BACKUP_DIR/${DB}.sql.gz
done
# 保留 7 天
find /backup/mysql -mtime +7 -name "*.gz" -delete

避坑清單

  1. 全鏈路字符集統一 utf8mb4
  2. 備份賬號最小權限:SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER, PROCESS, RELOAD
  3. 定期演練恢復(至少季度 1 次)
  4. 異地備份:同步至對象存儲/異地機房
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved