傳統冷備份將備份檔存放於本機磁碟,一旦磁碟損壞,主備同掛。生產環境應採用 LVM (Logical Volume Manager) 將 MySQL 資料目錄掛載於獨立邏輯卷,並搭配 LVM 快照 實現近乎零停機的備份窗口。
# 1. 新增兩顆實體磁碟 /dev/sdb, /dev/sdc # 2. 分區建立實體卷 fdisk /dev/sdb; fdisk /dev/sdc pvcreate /dev/sdb1 /dev/sdc1 # 3. 建立卷組與邏輯卷 vgcreate data /dev/sdb1 /dev/sdc1 lvcreate -L 2G -n mydata data # 4. 格式化並掛載 mkfs.ext4 /dev/data/mydata mount /dev/data/mydata /usr/local/mysql/data/ # 5. 寫入 /etc/fstab 持久化 echo "/dev/mapper/data-mydata /usr/local/mysql/data ext4 defaults 1 2" >> /etc/fstab # 6. 停止 MySQL、同步資料、修正權限、啟動驗證 /etc/init.d/mysqld stop tar -cvPzf /databackup/mysql01.tar.gz /usr/local/mysql/data/ # ... 移動資料至新掛載點 ... chown -R mysql:mysql /usr/local/mysql/data/ /etc/init.d/mysqld start
# 1. 建立 100MB 快照卷(僅儲存變更區塊,空間極省) lvcreate -L 100M -s -n smydata /dev/data/mydata # 2. 掛載快照卷 mount /dev/data/smydata /mnt # 3. 從快照卷備份(完全不影響線上服務) tar -cvzf /databackup/mysql_snap_$(date +%F).tar.gz /mnt # 4. 卸載並移除快照 umount /mnt lvremove /dev/data/smydata

# 在主資料目錄建立新檔 touch /usr/local/mysql/data/aa01.txt # 檢查快照掛載點 /mnt —— 檔案不存在,證明快照為建立時間點的靜態視圖 ls /mnt/aa01.txt # No such file or directory
tar -xvf mysql_snap_xxx.tar.gz -C /SELECT * FROM larrydb.class;| 維度 | 傳統冷備份 | LVM 快照冷備份 |
|---|---|---|
| 備份窗口 | 需停機整個備份期間 | 僅需秒級鎖定建立快照 |
| 資料一致性 | 靜態檔案一致 | 崩潰一致性 |
| 磁碟故障保護 | 無(同一磁碟) | 有(獨立物理卷) |
| 操作複雜度 | 低 | 中(需 LVM 知識) |
最佳實務: 生產環境建議將
datadir、binlog、slow_log分別掛載於不同 LVM 卷,並制定快照保留策略(如保留 7 天每日快照 + 月底快照),配合異地同步實現完整災備架構。