多實例部署
單 MySQL 進程為多執行緒模型,無法充分利用多核 CPU。在擁有多核、大記憶體、快速磁碟的伺服器上,可運行多個 MySQL 實例(不同 port、datadir、socket),提升硬體利用率。
水平分區
- 依用戶 ID、用戶名雜湊、地理區域等「分區鍵」將資料分散至多個 Slave 實例。
- 應用層或中介層(MySQL Proxy、自訂 Router)依分區鍵導向正確實例。
- 寫入操作導向 Master,讀取操作分散至 Slave。
- 需處理複寫延遲:關鍵讀取導向 Master,或使用
MASTER_POS_WAIT() 確認 Slave 同步進度。
功能分區
依業務功能建立專用副本:報表/數據倉庫、全文搜尋、封存歷史資料等,互不干擾。
負載均衡方案
- 演算法:隨機、最少連線、最快回應、加權輪詢。
- 軟體方案(推薦):
- LVS (Linux Virtual Server):核心層第四層負載均衡,成熟穩定、效能極高。
- Wackamole:基於 P2P,無單點故障。
- Ultra Monkey:LVS + Heartbeat + Ldirectord 整合方案。
- 硬體負載均衡器多為網路流量設計,缺乏資料庫感知能力(如讀寫分離、連線持久化)。
工具生態
- Continuent Tungsten、DBIx::DBCluster (Perl)、SQLRelay:多語言、多資料庫支援。
- Drupal 等 CMS 內建多 Slave 讀取支援。
總結
MySQL 提供無限擴展潛力,但最佳架構取決於業務負載特性。上線前務必在模擬生產負載的測試環境充分驗證。