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

利用 LVM 快照實現 MySQL 熱備份與 Slave 快速構建實戰指南

     編輯:MySQL 資料庫相關知識

為什麼選擇 LVM 快照備份?

當被問及 MySQL 備份建議時,我的第一個問題通常是:「你的系統是否啟用了 LVM 或具備類似快照能力的存儲(如 Solaris Veritas FS、各類 SAN)?」

核心需求是對數據卷創建原子級一致性快照,且該快照可像原文件系統一樣掛載讀寫。基於快照的備份優勢顯著:

  • 幾乎熱備:應用運行中即可備份,無需停機或全局只讀(僅需短暫 FLUSH TABLES WITH READ LOCK)。
  • 全引擎支持:MyISAM、InnoDB、BDB、Solid、Falcon 等所有本地存儲引擎通用。
  • 極速備份/恢復:二進制文件級拷貝,速度受限於磁帶/網絡吞吐而非 MySQL 邏輯處理。
  • 開銷極低:僅涉及文件拷貝,對主庫性能影響微乎其微。
  • 易集成:輕鬆對接壓縮、磁帶、FTP、網絡備份軟體。
  • 免費開源:無需購買商業熱備工具。

潛在缺點與應對

  • 需快照兼容性:基礎設施前提。
  • 可能需 Root 權限:DBA 與系統管理員權限分離時需協調流程。
  • 鎖定時間不可預測:長查詢導致 FLUSH TABLES WITH READ LOCK 持續較久。純 InnoDB 且不需 binlog 位點同步時可跳過此步。
  • 跨卷一致性難題:數據與日志分離或跨多卷時,單卷快照無法保證全局一致性(部分存儲支持多卷原子快照)。

LVM 快照原理速覽

採用寫時複製:在專用區域保存被修改頁的舊版本,類似 InnoDB 的 MVCC 簡化版。也有三重鏡像實現(RAID1+1 熱備盤)。快照分只讀與可讀寫;後者優勢在於無需預先同步文件系統日志,且可直接在快照上啟動 MySQL 進行恢復驗證、表檢查,避免備份已損壞數據。

實戰步驟:Linux LVM2 備份 MySQL / 構建 Slave

# 1. 加全局讀鎖(純 InnoDB 可跳過)
mysql> FLUSH TABLES WITH READ LOCK;

# 2. 創建快照(預留足夠 undo 空間,如 16GB)
shell> lvcreate -L16G -s -n dbbackup /dev/Main/Data

# 若報錯 "device-mapper target not detected",執行:
shell> modprobe dm-snapshot

# 3. 記錄 binlog 位點(Slave 構建必需)
mysql> SHOW MASTER STATUS;

# 4. 釋放鎖
mysql> UNLOCK TABLES;

# 5. 掛載快照
shell> mount /dev/Main/dbbackup /mnt/backup

# 6. 拷貝數據(可跳過 slow/error log,視 slave 延遲決定是否保留近期 binlog)
shell> rsync -av /mnt/backup/ /backup/destination/

# 7. 卸載並刪除快照
shell> umount /mnt/backup
shell> lvremove -f /dev/Main/dbbackup

基於快照構建 Slave 額外步驟

# 9. 將數據拷貝至 Slave 數據目錄
# 10. 啟動 MySQL 等待崩潰恢復完成
# 11. 指定同步起點
mysql> CHANGE MASTER TO
    master_host="master", master_user="user", master_password="pass",
    master_log_file="host-bin.000335", master_log_pos=401934686;
# 12. 啟動同步
mysql> START SLAVE;

從 Slave 克隆 Slave 的注意事項

用 SHOW SLAVE STATUS 替代 SHOW MASTER STATUS 獲取位點即可無需停止 Slave。但警告:這會連帶複製 Slave 累積的數據不一致(特別是使用了 slave_skip_errors 或 sql_slave_skip_counter 時)。克隆 Master 則保證一致性基線。

推薦工具

Lenz Grimmer 的 mylvmbackup 封裝了上述流程,生產可用。

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