系統崩潰、硬體故障、人為誤操作(甚至管理員直接用編輯器修改表檔)皆可能導致資料遺失。定期備份是最後防線。
| 維度 | mysqldump (邏輯備份) | 直接複製檔案 (實體備份) |
|---|---|---|
| 操作層級 | SQL 陳述式層級,與引擎無關 | 檔案系統層級,依賴儲存引擎格式 |
| 一致性 | 搭配 --lock-tables/--flush-logs 可獲一致快照 | 需停服務或全域鎖表,否則極易不一致 |
| 可移植性 | 極高(跨版本、跨硬體、跨 OS) | 僅限 MyISAM 且 MySQL 3.23+ 同版本 |
| 速度 | 較慢 | 極快 |
| 備份粒度 | 庫/表/WHERE 條件皆可 | 通常整庫/整目錄 |
資料庫名_YYYY-MM-DD.sql(.gz),一眼可識別。gzip 壓縮、設定保留天數避免塞滿磁碟。--opt:綜合優化(速度最快,但鎖全庫)。--quick:逐行輸出,低記憶體佔用。--flush-logs --lock-tables:建立檢查點,新 binlog 僅含備份後變更。--add-drop-table:還原前自動刪除同名表,避免衝突。--delayed:產生 INSERT DELAYED,降低還原對線上查詢影響。--compress:跨網路傳輸壓縮協議資料。mysqladmin -h 目標主機 create 目標資料庫
mysqldump --opt 源資料庫 | mysql --compress -h 目標主機 目標資料庫
FLUSH TABLES WITH READ LOCK。cp -r /var/lib/mysql/資料庫 /備份路徑)。MySQL 3.23.15+ 內建,實現主從近即時同步,屬高可用架構,非傳統備份替代品。
mysql 需 --skip-grant-tables 啟動。ls -t -r update.[0-9]* | xargs cat | mysql --one-database 資料庫DROP/DELETE 誤操作語句。mysqldump 導出單表。mysql_find_rows 從 binlog 抽取該表查詢(進階)。備份無價值,恢復才有價值。結合「定期全量 + 每日增量 + 異地存放 + 定期演練」四位一體,才能在災難來臨時從容應對。