2011-03-25 47 views
1

我目前使用mysqldump來備份正在快速增長的數據庫。雖然我在深夜運行它,但在高流量時(偶爾會發生在夜間)發生偶然的問題。例如,昨晚我的一個站點在數據庫備份完成後立即被一個完整的(和非清理)進程列表鎖定。針對高流量網站的MySQL備份策略

有沒有人有更好的方法來解決這個問題的建議?由於目標是最大化可用性(某些sql轉儲需要一段時間),因此在備份期間將站點置於臨時維護狀態不是一種選擇。想到的一個想法是運行主副本並關閉+備份從副本,在此過程中僅留下主副本。希望有一個更簡單的解決方案,但我寧可不運行一個奴隸副本備份的目的,除非絕對必要。有什麼建議麼?

謝謝。

+0

我可以問你爲什麼寧願不使用奴隸進行備份?你是否過濾了從屬設備上的某些表格?看起來,如果你的目標是在特定的時間獲得數據的快照,那麼只要奴隸和主人同步,一切都應該沒問題。 – 2011-03-25 20:48:13

+0

我並不是真的反對複製路線 - 我們只是不需要它而不是備份,所以它看起來像是矯枉過正。如果這是解決這個問題的最好方法,我會走這條路。 – modulaaron 2011-03-25 21:14:21

+0

我認爲如果你不想破壞你的主分貝,那麼從奴隸身上取得快照是一種方法。一個副本將有一個額外的好處,就是你可以熱切換到一個服務器,你將擁有的轉儲將允許你設置另一個從服務器,只要確保記錄你的從服務器更新。 – 2011-03-26 20:31:19

回答

2

兩個想法:

  1. 運行的奴隸。如果沒有其他的東西,它會爲您的生產流量提供一個熱備件,以防發生故障。您還可以運行報告和工具,從生產服務器釋放週期。
  2. 得到InnoDB和使用mysqldump --single事務(see man page)

祝你好運!

0

我使用Percona Xtrabackup,它與InnoDB Hot Backup類似,具有更多功能並免費發佈。 Xtrabackup在不鎖定innodb表的情況下拍攝快照,並且會記錄當前主日誌文件信息,並且如果您要從從屬設備進行備份(如果請求),則記錄從屬信息。

我會建議運行一個slave,並做這樣的備份或mysqldump。從屬設備爲您提供熱備份,您可以在幾分鐘內快速切換到並啓動並運行,如果由於硬件問題或各種軟件或用戶錯誤問題將服務器取出而導致主設備出現故障。使用xtrabackup或mysqldump進行備份會爲您提供一個備份,您可以使用該備份來恢復數據,以防止意外刪除表或刪除某些您不應該擁有的行,因爲複製的服務器不會將您保存在那裏。