2014-04-14 81 views
1

我有一個應用程序,每個用戶都有自己的數據庫。這適合於橫向擴展,因爲很容易啓動另一臺數據庫服務器。如何使用mysql水平縮放

我正在努力的部分是如何識別用戶數據庫/帳戶所連接的數據庫服務器。

以下是可能的解決方案我想出了:

  1. 創建用戶名映射查找表 - >數據庫服務器上的數據庫服務器中的一個。確保將此查詢編入索引以消除任何性能問題。

優點:易於實施

缺點:還有1點故障。如果數據庫服務器持有的用戶名 - >數據庫關係出現故障,那麼應用程序將停止爲所有用戶工作

  1. 創建映射的用戶名的文本文件 - >數據庫名稱

優點:漂亮的易於實施和相當快。

缺點:保持跨服務器同步的問題。在讀取時寫入文件的併發問題。寫一個小小的錯誤,可能會導致一切下降

什麼是這樣的最佳做法?

+0

您可以在所有數據庫服務器上使用選項1並執行主 - 主複製。 – iamsleepy

回答

2

爲什麼不保留第一個解決方案並定期將其導出到第二個選項?

這種方式如果一切都停止了,你就有辦法恢復並運作到你的客戶羣。

+1

這聽起來像一個計劃。好主意,它結合了兩個想法。 –

+1

另外,您是否看到任何性能問題,使查詢被索引以查找每個請求的數據庫服務器?我知道我可以將它緩存在memcached中,但是開銷會明顯嗎? –

+1

@ChrisMuench你的桌子是什麼樣的? – Hituptony