淺談 MySQL 資料庫備份工具
備份與 RAID / DRBD / Replication / Clustering 不同,後者是 High availability 方案而不是備份方案。例如,如果你不小心下錯指令而刪除重要資料時,High availability 無法拯救你,只有備份才可能。
備份工具只是備份策略的一環,策略可依工具演化出多樣態的組合。但以下僅列出常見備份工具的適用場景比較。
1. mysqldump
分類:邏輯備份、有鎖備份。
優點:跨資料庫版本相容性高(純資料備份)、適用導出表結構、備份檔支援標準編輯器讀取(純資料備份)、備份檔較小。
缺點:資料量大時備份慢恢復慢(單執行緒)、無壓縮(但可配合外部指令)、執行期影響資料庫性能(因備份慢執行久且是有鎖備份)。
2. mydumper
分類:邏輯備份、有鎖備份。
優點:跨資料庫版本相容性高(純資料備份)、內建壓縮、備份及恢復速度較 mysqldump 快(多執行緒)、備份檔支援標準編輯器讀取(純資料備份)、備份檔較小。
缺點:資料量大時備份慢恢復慢(較物理備份而言)、執行期影響資料庫性能(因備份慢執行久且是有鎖備份)。
3. filesystem snapshot (檔案系統快照)
分類:物理備份、無鎖備份。
優點:內建壓縮、備份及恢復速度快、資料庫讀寫不阻塞(無鎖備份)。
缺點:跨資料庫版本相容性低(採用無法獲取資料庫狀態的物理備份)、喪失資料一致性(因無法獲取資料庫狀態,所以無法保證期間 CURD 資料的一致性)、需預留較多的儲存空間、恢復時受限於相同的檔案系統、備份檔無法支援標準編輯器讀取。
4. xtrabackup
分類:邏輯加物理備份、無鎖備份。
優點:內建壓縮、內建加密備份、資料量大時備份及恢復速度快、資料庫讀寫不阻塞(無鎖備份)。
缺點:跨資料庫版本相容性問題(因採用物理備份)、備份檔無法支援標準編輯器讀取,只支援 InnoDB 資料庫(目前 MySQL 有些預設資料表仍是 MyISAM)、備份檔較大。
5. innobackupex
分類:邏輯加物理備份、無鎖備份。(底層是 xtrabackup)
優點:內建壓縮、內建加密備份、資料量大時備份及恢復速度快、資料庫讀寫不阻塞(無鎖備份),支援 MyISAM / InnoDB 資料庫(相較於 xtrabackup)。
缺點:跨資料庫版本相容性問題(因採用物理備份)、備份檔無法支援標準編輯器讀取、備份檔較大。
總結:
- 盡量不影響運行中資料庫的讀寫效能時,請用 xtrabackup / innobackupex。
- 節省備份的儲存空間,請用 mysqldump / mydumper。
- 資料庫版本間的相容性要求高時,請用 mysqldump / mydumper。
- 資料量大且備份及恢復時效要求高時,請用 xtrabackup / innobackupex。