Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




April 28, 2007
MySQL High Availability and Load Balancing Solution

最近有個朋友的客戶因為網站一到尖峰時間 MySQL 的負載就佔滿了主機了資源,請我幫忙看看能不能解決,不過因為時間考量並沒有接這個案子,只是義務性質幫忙給個方向。

據工程師表示,程式的部份除了 Cache 之外,大多也都為了 MySQL 做了最佳化。而我在尖峰時間也幫忙監測了一下狀況,在 copy tmp table 的時候也沒有花太多的時間。而 slow query 的數量增多比較偏向是 CPU Loading 太重的關係。

程式 Cache 的部份已請他們工程師處理,MySQL 的部份目前是用 Replication 來分散Write 跟 Read 的工作,以目前的負載狀況勢必要再加主機上去,由於網站性質的即時性較高,如何確保 Replication 正確運作就是一大問題,而我也提供了三種方案給他們參考。

1.MySQL Cluster

因為他們的資料庫不大,使用 Cluster 是最好的方式,加上 Ultra Monkey 可以配置出二組以上的 MySQL Cluster 來分散流量,架設方式可以參考:
http://www.howtoforge.com/loadbalanced_mysql_cluster_debian

因為網站用的是 Struts 撰寫,也可以考慮這個月才剛出爐的新工具 NDB/J ,可以直接讀取 Data node 的資料,而不用透過 MySQL Server。

NDB/J:
http://sourceforge.net/projects/ndbj/

2.MySQL Replication

這個是他們目前使用的方式,所以流量分散的部份我就不提供建議了。不過在 HA 上要花比較多的功夫來處理。如採用 Master-Master Replication 架構,或是自行撰寫 Failover/Arbitrator 來處理伺服器之間的同步關係。

架設 Master-Master Replication 可以參考:
http://www.howtoforge.com/mysql_master_master_replication

Master-Master Replication 也有個管理工具可用:
http://blog.kovyrin.net/mysql-master-master-replication-manager/

如果要自行撰寫 Failover/Arbitrator,使用 MySQL Toolkit 可以省去不少時間:
http://sourceforge.net/projects/mysqltoolkit

MySQL Toolkits 作者的介紹:
http://www.xaprb.com/blog/2007/02/26/introducing-mysql-table-checksum/
http://www.xaprb.com/blog/2007/03/18/introducing-mysql-table-sync/

3.Sequoia

20070429_01.jpg

Sequoia 前身為 C-JDBC。由 continuent 接手後,透過 Carob 已經可以支援多種不同的程式語言來建置資料庫的 clustering 跟 load balancing 環境。

Sequoia 官方網站:
http://sequoia.continuent.org/HomePage

 
由 Neo 發表於 April 28, 2007 08:37 PM 收進你的MyShare個人書籤  

小弟最近在尋找 PostgreSQL Cluster Solution
剛好看到這篇文章提到的 Sequoia

不曉得 Sequoia 在超大流量跟資料(6千萬筆以上)的網站
效率怎樣?

小弟有試過 PGCluster, 可能是還在開發中的緣故吧
穩定度似乎不太好 =.="


longtime 發表於 April 30, 2007 11:26 AM

longtime:

Sequoia "據說"效能不是很好。

不過資料庫在流量大的時候,通常都是被 Wirte 佔的資源給搞垮。不論使用的工具是什麼,有些地方還是得靠手動來調整會比較好。


Neo 發表於 April 30, 2007 12:53 PM

也許請他們先檢查索引
CPU Loading 太大很多是因為索引沒作好
調教過就沒問題了
遇過很多百萬筆資料的,也沒有這樣嚴重


路人 發表於 May 8, 2007 06:03 PM

sqlrelay如何?我是用sqlrelay再搭配MySQL Replication的


ivan 發表於 July 3, 2007 02:35 AM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.