Windows-Server-2008

具有隻讀數據庫的高度可用且可擴展的 SQL Server?

  • August 9, 2012

我一直在考慮建立一個可能會獲得大量流量的網站。這將是一個具有 wiki 功能的研究站點。因此,使用者將能夠編輯網站上的資訊。然而,99% 的使用者可能永遠不會編輯任何內容,只會搜尋/瀏覽網站。所以理論上他們可以從數據庫的只讀副本中做大部分事情。

考慮到這一點,我想把這樣的東西放在一起會很好…… 在此處輸入圖像描述

所以在同一個數據中心會有 3 台物理伺服器:

  • “主 SQL Server”將接收任何 UPDATE、INSERT 或 DELETE 操作。
  • 兩個 Web 伺服器將擁有該數據庫的只讀副本,這些副本將通過日誌傳送保持最新。當使用者瀏覽站點時,這些伺服器會被大量查詢,並且還會通過 IIS 提供 ASP.NET 頁面。

我喜歡這個模型同時提高了可擴展性和可靠性。如果任一 Web 伺服器出現故障,則不會中斷服務。如果主 SQL Server 出現故障,該站點的某些功能將被禁用,但該站點仍將處於只讀狀態,可以這麼說。最後,負載均衡器會在兩個 Web 伺服器之間分配負載,這很好。

但我對此有幾個問題:

  1. 日誌傳送是實現此目的的好方法嗎?
  2. 執行此操作所需的最低 SQL Server 版本是多少?例如,是否可以在主 SQL Server 上執行 SQL Server Web 版本並在 Web 伺服器上執行 SQL Express?

謝謝你的幫助。

你所描述的會起作用。

但是,如果它主要是只讀的,您將經常處理更簡單的答案是查看記憶體或分佈式記憶體。例如,當您的 Web 伺服器啟動時,它們會將“x”數量的數據載入到您的 Web 伺服器或記憶體伺服器的記憶體中。

所有使用者請求都會進入記憶體記憶體(非常快)。然後,任何更新都可以觸發記憶體返回數據庫並獲取最新副本以供將來請求。

看看 Windows Server App Fabric 系統。在您想要真正的 HA 時,Windows Azure 提供了相同的功能集,這會使事情變得更加多餘。

引用自:https://serverfault.com/questions/416005