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

MySQL 熱備份完整實戰:mysqldump 單庫/多庫/全庫/單表備份與還原演練

     編輯:MySQL 資料庫相關知識

熱備份核心概念

熱備份 指在 MySQL 服務運行狀態下進行備份,不需停機。核心挑戰在於「備份期間資料仍在變更」,必須透過鎖定機制或交易快照保證資料一致性。mysqldump 是最通用的邏輯熱備份工具。

實戰演練環境

  • OS:CentOS 6
  • MySQL:5.5.29
  • 測試資料庫:larrydb(含 InnoDB 表 class、MyISAM 表 stu)、game

場景一:單一資料庫備份與還原

備份指令

mysqldump -uroot -p123456 --database larrydb > /databackup/larrydb.sql

關鍵參數 --database 會在輸出檔包含 CREATE DATABASE 與 USE 敘述,還原時可直接建庫。

模擬災難與還原

# 1. 刪除資料庫
mysql -uroot -p123456 -e "DROP DATABASE larrydb;"

# 2. 還原
mysql -uroot -p123456 < /databackup/larrydb.sql

驗證:SELECT * FROM larrydb.class; 與 SELECT * FROM larrydb.stu; 資料完整回覆。

場景二:多資料庫同時備份

# 備份 larrydb 與 game 兩個資料庫
mysqldump -uroot -p123456 --databases larrydb game > /databackup/larrydb_game.sql

# 還原(同單庫)
mysql -uroot -p123456 < /databackup/larrydb_game.sql

場景三:全庫備份(含系統庫)

mysqldump -uroot -p123456 --all-databases > /databackup/all_databases.sql

輸出檔約 506KB,包含 mysql、performance_schema 等系統庫,適合整機遷移或建立從庫基準。

場景四:指定資料表備份

# 備份 game 庫中的 hero、country 兩張表
mysqldump -uroot -p123456 game hero country > /databackup/game_hero_country.sql

還原陷阱: 單表備份檔 不含 CREATE DATABASE / USE 敘述,還原時必須指定目標資料庫:

# 錯誤:ERROR 1046 (3D000): No database selected
mysql -uroot -p123456 < game_hero_country.sql

# 正確:指定資料庫
mysql -uroot -p123456 --database game < game_hero_country.sql

生產環境優化建議

痛點優化參數/策略說明
備份過程鎖表影響業務--single-transaction (InnoDB)利用 MVCC 取得一致性快照,不加全域讀鎖
大表備份耗時過長--quick / --net_buffer_length串流輸出不緩存全表,減少記憶體壓力
還原速度慢關閉索引/外鍵檢查、批次提交SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;
備份檔過大管線壓縮 | gzip節省磁碟空間與網路傳輸時間

一致性與備份策略

核心原則: 備份重於一切。無論採用何種工具,必須定期演練還原流程(Restore Drill),驗證備份檔完整性、還原時間點目標(RTO)與復原點目標(RPO)是否符合業務 SLA。

熱備份架構示意圖

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