首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL備份壓縮與恢復實戰指南:mysqldump結合gzip/bzip2最佳實踐

     編輯:MySQL 資料庫相關知識

大型資料庫備份傳輸耗時、佔用空間大,是運維常見痛點。本文系統梳理mysqldump管道壓縮備份、分類備份策略、跨平台恢復全流程,助你構建高效可靠的備份體系。

核心壓縮備份命令

bzip2 壓縮(壓縮率高,速度較慢)

# 備份並壓縮
mysqldump [連接參數] | bzip2 > outputfile.sql.bz2

# 從bzip2備份恢復
bunzip2 < outputfile.sql.bz2 | mysql [連接參數]

gzip 壓縮(速度快,壓縮率中等,推薦日常使用)

# 備份並壓縮
mysqldump [連接參數] | gzip > outputfile.sql.gz

# 從gzip備份恢復
gunzip < outputfile.sql.gz | mysql [連接參數]

注意:gzip為Linux原生工具,Windows環境需安裝GnuWin32或使用WSL。

分類備份實戰命令

備份類型命令範例
指定資料庫mysqldump -h hostname -u user -p dbname > db.sql
指定輸出路徑mysqldump -u root -p mydb -h 192.168.14.204 > D:/mydb.sql
直接壓縮備份mysqldump -h host -u user -p dbname | gzip > db.sql.gz
備份特定表mysqldump -h host -u user -p dbname table1 table2 > db.sql
同時備份多庫mysqldump -h host -u user -p --databases db1 db2 db3 > dbs.sql
備份全例項mysqldump --all-databases > allbackupfile.sql

Windows環境恢復操作

  • MySQL Query Browser:File → Open Script 載入.sql執行
  • 命令行恢復:mysql -h hostname -u user -p dbname < backupfile.sql
  • 壓縮檔恢復:gunzip < backup.sql.gz | mysql -h host -u user -p dbname

關鍵參數說明

  • -p 後不輸入密碼,回車後交互輸入(更安全)
  • -h 指定主機,本機可省略
  • --default-character-set=utf8mb4 建議顯式指定字符集,避免亂碼
  • --single-transaction(InnoDB專用)熱備份不鎖表,保證一致性
  • --routines --triggers --events 同步備份存儲過程/觸發器/事件

生產環境建議腳本模板

#!/bin/bash
# daily_backup.sh
DATE=$(date +%F_%H-%M)
OUT_DIR=/backup/mysql
DB_USER=backup_user
DB_PASS='xxxxxx'
DB_NAME=production_db

mkdir -p $OUT_DIR
mysqldump -u$DB_USER -p$DB_PASS --single-transaction --routines --triggers --events \
  --default-character-set=utf8mb4 $DB_NAME | gzip > $OUT_DIR/${DB_NAME}_${DATE}.sql.gz

# 保留最近7天
find $OUT_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete

掌握壓縮備份與分類策略,配合定時任務與異地複製,即可構建企業級MySQL資料保護體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved