mysql cluster構架
今天下了一份mysql cluster architecture overview,大致了解下mysql的cluster功能1.mysql cluster現(xiàn)在主要是解決ha(高可用性)的問題,并不是完全的支持ha,load balance的cluster.
2.mysql cluster構架是建立在share nothing的基礎上的,這也應該是cluster發(fā)展的趨勢吧,否則,要使用共享磁盤的話,代價太昂貴了.
3.mysql cluster只適用于mysql的ndb storage,mysql的存儲引擎很多,不同的引擎適用于不同的業(yè)務,以后還得花些時間研究下這些引擎的特征
4.mysql cluster體系把一組計算機節(jié)點分為三大類,分別是sql節(jié)點,storage存儲節(jié)點,mgmt管理節(jié)點.
5.存儲節(jié)點:mysql cluster在各存儲節(jié)點之間復制數(shù)據(jù),這樣當任意一個存儲節(jié)點發(fā)生意外的時候,始終有另外的存儲節(jié)點上存儲有相同的數(shù)據(jù).如果節(jié)點多于兩個的話,這個復制的性能不知道是否會降低?因為還不知道它的復制原理,也不能妄下結論.數(shù)據(jù)庫事務是由存儲節(jié)點來保證的,任一個事務產生的數(shù)據(jù)變化會同時反映到所有存儲節(jié)點中;當在一個事務執(zhí)行的時候,由于其中一個存儲節(jié)點失敗,那么會導致整個事務的回退.
6.管理節(jié)點:一般在一個mysql cluster體系中只需要一個管理節(jié)點.它僅用于cluster的啟動及cluster的系統(tǒng)參數(shù)配置,因此,存儲節(jié)點是可以在沒有管理節(jié)點的情況下正常運行的.(恩,可以節(jié)省一臺機器^_^,其實是不可以的,因為sql節(jié)點和存儲節(jié)點在啟動的時候需要連接到管理節(jié)點讀取cluster的配置信息,但是在sql節(jié)點和存儲節(jié)點啟動完成后,管理節(jié)點是可以停止的)
7.sql節(jié)點:就是mysqld服務器了.應用程序通過sql節(jié)點訪問存儲節(jié)點中的數(shù)據(jù).在mysql cluster體系中,任意一個sql節(jié)點都是連接到所有的存儲節(jié)點的.所以當任意一個存儲節(jié)點發(fā)生意外的時候,sql節(jié)點都可以把請求轉移到另一個存儲節(jié)點執(zhí)行
8.mysql cluster的sql節(jié)點,存儲節(jié)點可以動態(tài)增加,減少,這可以管理節(jié)點配置
9.存儲節(jié)點的故障檢測:mysql cluster通過兩種方式來檢測故障,
一是通訊丟失,可以通過tcp,共享內存等方式在各存儲節(jié)點之間通訊來偵測節(jié)點是否正常這種方式是最快的故障檢測方式,
二是心跳失敗,通訊丟失的檢測方法在某些特殊情況下無效,例如磁盤故障等問題.所有的存儲節(jié)點通過組成一個環(huán)路,每個節(jié)點向下一個節(jié)點發(fā)送心跳信號,如果下一個節(jié)點沒有收到心跳信號,則認為上一個存儲節(jié)點故障,并依次向下下個節(jié)點廣播此故障信息