共享主機中多數據庫管理的常用策略是什麼?
我在網際網路上閱讀了很多內容,包括 serverfault 的規範答案。但是,我仍然找不到問題的答案 -
What are common strategies for multiple database management in shared hosting?
。到目前為止,我發現共享託管公司通常為 SQL 數據庫保留單獨的伺服器。行。但是我們可以很容易地理解每個數據庫的大小都會增長,並且所有數據庫所需的空間早晚都會超過某個伺服器的空間。
我想到的唯一解決方案如下——當客戶下訂單時,他指定了數據庫的大小(例如 50 MB)。擁有例如 500 GB 伺服器的託管公司知道它可以擁有多少個數據庫,因為客戶提前指定了空間。但是,此解決方案有一個非常嚴重的缺點 - 當客戶端數據庫增長並且他需要更多空間但目前伺服器超出大小時,支持將不得不停止客戶端數據庫以將其移動到另一台伺服器。此外,它還需要在現場進行額外設置(最低 IP)。但是,根據契約託管公司必須提供 24/365 的數據庫工作。
設計具有 100% 正常執行時間 SLA 的 24/7/365 託管基礎設施並非易事。
在伺服器世界中,儲存通常與使用它的應用程序或數據庫伺服器分開管理。這稱為 SAN 或儲存區域網路。使用 iSCSI 或光纖通道等協議將塊級磁碟空間分配給需要它的伺服器。當使用這樣的 SAN 技術時,儲存就像本地連接的硬碟驅動器一樣顯示在伺服器上,並且可以像物理連接的硬碟驅動器一樣使用伺服器文件系統工具進行格式化和訪問。
如果您從 SAN 向數據庫伺服器分配 500GB 的空間,然後您的監控軟體通知您接近容量,您只需將 SAN 的分配量從 500GB 增加到 600GB。伺服器現在會認為它連接了一個 600GB 的硬碟,但只有 500GB 已格式化。您現在可以使用數據庫伺服器上作業系統提供的文件系統工具來擴展分區。
您可以使用現成的組件和開源技術製作您自己的 SAN,或者您可以購買僅安裝在伺服器機房中的專有設備。無論哪種方式,SAN 都將由某種磁碟陣列支持,該磁碟陣列將在物理驅動器之上具有邏輯捲管理層。這將採用 RAID、ZFS、LVM 等形式……只要有空的驅動器托架,您就可以添加額外的硬碟驅動器並使用適當的管理工具來增加邏輯卷。這為您提供了更多空間,您可以稍後將其分配給伺服器。
當然,要滿足 100% 的正常執行時間 SLA,您將需要一個 HA 集群,或者至少需要某種形式的複制,以及可以自動重定向流量的負載均衡器。
我不能談論 windows 世界,但你可能想從 linux 的儲存角度研究的東西是:iSCSI、CLVM、GFS2、DM-Multipath。