2011-08-02 26 views
1

我有這麼搜查,讀了很多問題,但沒有發現任何真正回答我的問題,首先一點背景資料:保持MySQL的數據塊sync'ed以最小延遲從PHP

  • PHP腳本接收數據(遊戲網站)
  • 幾個DB服務器可用於冗餘和性能

我深知MySQL複製和集羣,但這裏是我的問題,這些解決方案:
1)在複製如果the Master fails,整個電網發生故障或長的停機時間遭受
2)在羣集,首先我認爲,爲了添加另一個節點還必須遭受的停機時間,但看完再the documentation我不是那麼肯定了

Q1:有人可以澄清,如果「滾動重啓」實際上意味着連接到網格的任何應用程序的停機時間?

由於我的印象是,停機時間是不可避免的,在我看來,一個3D應用將解決這個問題下: PHP連接到3D軟件,3D應用程序中插入/更新/刪除到一個數據庫中快速返回LAST_INSERT_ID,PHP繼續其過程,並且3d App繼續從其他數據節點插入/更新/刪除。在這種情況下,每個數據庫不會被複制或集羣化,它們是獨立的數據庫服務器,3d應用程序是一個守護進程。

Q2:有人知道這樣的應用程序嗎?

在上述情形中,從PHP端選擇將隨機選擇一個數據庫服務器(負載平衡)

謝謝你的時間和智慧

+0

真的希望我可以將2個答覆標記爲問題的答案,因爲我的原始帖子包含2個答案,並且兩個答辯人都滿意我的詢問,如果這是可能的,請告訴我如何 – Purefan

回答

2

滾動重啓基本上跟蹤一系列節點和重新啓動的他們一個接一個。它確保在重新啓動之前沒有用戶登錄到節點,然後重新啓動,移動到下一個節點或服務器等等。因此,您的服務器將會重新啓動,但是會按順序進行,因此如果您有一個具有n個節點的羣集設置,則每個節點都會逐個重新啓動,因此可以消除停機時間或限制它。

我會建議將您的PHP腳本與NoSQL數據庫集成,您可以爲這些集羣設置集羣,並且幾乎沒有延遲。如果你仍然想要一個MySQL Synced數據庫,那麼你也可以嘗試將NoSQL設置爲master並複製到一個MySQL slave,這也是可能的。

+0

哦!很高興知道滾動重新啓動不會意味着停機,現在我可以睡得更好了嘻嘻 – Purefan

+0

這可能意味着停機或不依賴於您如何設置後端體系結構:) – Sojourner

+0

您的意思是?我真的很想在沒有停機的情況下添加另一個節點 – Purefan

1

很多問題在這裏。

主從錯誤中沒有隱式功能來提升主設備發生故障時的從設備。自己編寫腳本是微不足道的。

對於主 - 主複製,這不是一個問題 - OTOH,運行大量節點,故障可能會增加數據集的分歧。

第3個應用程序描述的很多功能都是由mysqlproxy實現的 - 儘管沒有什麼可阻止您將功能構建到您自己的數據庫抽象層中(您可以通過異步消息/ http調用或作爲關機功能)

+0

非常感謝鏈接!我實際上正在閱讀一個C++應用程序的MYSQL連接器,我打算自己寫,但似乎不需要 – Purefan