資料庫備份是運維核心職責之一。單純定時備份會產生大量重複檔案,浪費儲存空間。本文介紹一套基於 Java 實作的 MySQL 自動備份方案,利用 MD5 雜湊比對實現「僅備份有變更的資料」,達到去重、節省空間的目的。
mysqldump 導出資料庫至 temp.sqlweixin_yyyyMMddHHmmss.sql 正式保存mysqldump 輸出檔案末尾會包含 -- Dump completed on 2014-10-26 20:03:21 這類時間戳,導致每次備份內容雖相同但 MD5 不同。解決:讀取檔案時跳過包含 Dump completed on 的行。
使用 Java MessageDigest 實作標準 MD5 演算法,輸出 32 位十六進位字串。
採用 BufferedReader 逐行讀取,配合 StringBuffer 拼接,避免大檔案記憶體溢位。
backup/
├── Main.java # 主程式:備份流程控制
├── FileString.java # 檔案轉字串(過濾時間戳行)
└── MD5.java # MD5 雜湊計算
crontab 定時執行mysql -u root -p dbname < backup.sql)這套方案輕量、無依賴、邏輯清晰,適合中小型專案快速落地自動化去重備份。