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