2008-11-18 26 views
3

簡短的問題:
是否安全使用InnoDB引擎創建MySQL安裝的定製備份時,是否安全跳過ib_logfile *文件?將ib_logfiles包含在備份中?

定製備份只是將/ var/lib/mysql + /etc/my.cnf的全部(或子集)複製到安全的地方。

據我所知,ib_logfile *文件是由MySQL在啓動時重新創建的,文件非常巨大,因此將它們存儲在備份中可能不明智。是的,假設MySQL在備份之前(正確)停止。

回答

7

以您描述的方式備份數據庫是不安全的。

原因是你不知道某些數據頁是否仍然在MySQL服務器的內存中,等待I/O刷新到磁盤。因此,複製文件很有可能會複製垃圾,無論是否包含ib_log文件。

不要做你在做什麼。使用mysqlbackup或InnoDB的Hot Backup產品。

編輯:

讀法爾漢Mashraqi的博客文章關於InnoDB Performance Optimization,其中他說,你可以刪除ib_log文件如果你已經關閉MySQL服務器

InnoDB日誌大小調整:不是像更改選項和重新啓動一樣簡單的 。你需要關閉MySQL服務器 和 確保它正常關閉 (檢查錯誤日誌中的錯誤爲 確認)。然後移走InnoDB日誌 文件ib_log *。然後啓動MySQL 服務器,並檢查錯誤日誌文件爲 ,看它是否成功創建了新的日誌文件 。

所以是的,你應該只能做ibdata文件的文件系統副本。您不需要包含ib_log文件,因爲它們應該在MySQL服務器啓動時重新創建。然而,我重申,我不建議使用文件系統副本備份數據庫。

假設您今天以這種方式使用MySQL 5.0備份數據庫。有一天,你需要恢復備份,但到那時你將會使用一些未來的版本,比如MySQL 6.5。 ib_data文件在未來的版本中是否仍然使用相同的內部格式? MySQL 6.5會讀取您今天備份的文件嗎?你不能確定。備份格式旨在提高便攜性。

+0

即使我停止了MySQL服務器? – 2008-11-19 17:02:46