MySQL Cluster 叢集安裝環境介紹

MySQL 叢集支援的作業系統:
* Linux (Red Hat, Novell/SUSE)
* Sun Solaris
* IBM AIX
* HP-UX
* Mac OS X

MySQL 軟體:
* MySQL Max 版本 (並不是MaxDB)
* MySQL NDB Cluster
(以上可在此下載)


硬體規畫:

* 官方建議叢集伺服器的節點(Node) 硬體配備最低需求:

CPU: Intel/AMD x86
Memory: 512MB RAM
HDD: 3GB
Network: 1+ nodes (Standard Ethernet – TCP/IP)

最佳硬體配備:

CPU: 2x Intel Xeon, Intel Itanium, AMD Opteron, Sun SPARC, IBM PowerPC
Memory: 16GB RAM
HDD: 4x 36GB SCSI (RAID 1 Controller)
Network: 1-8 Nodes (Gigabit Ethernet); 8+ Nodes (Dedicated Cluster Interconnect e.g. SCI)

* 由於 MySQL Cluster 5.0 的架構是把資料(包含索引) 全都放在記憶體中,所以主機的記憶體的大小就非常重要,MySQL 官方提供了記憶體需求的計算公式:

(SizeofDatabase × NumberOfReplicas × 1.1 ) / NumberOfDataNodes

* 由於 Data Nodes 之間的資料交換頻繁,建議採用 Gigabit 的網路卡,如果資料庫非常的大,可以考慮使用 SCI (Scalable Coherent Interface) 。

* MySQL 叢集間的資料交換未經過加密,尤其 Managment node 預設是開放外部連接的。因此如果 MySQL 做為網站使用,必須將 MySQL 叢集放在防火牆後面或規畫在獨立的網域內,以防止有心人士竊取及破壞。

* 要完成 MySQL 叢集的運作環境最少需要 3 台伺服器,MySQL 官方建議最少用 4 台 (註1)。

* Management node 主機若無其它特殊用途,可選用較低階的伺服器。

硬體規畫常見問題:

只有 2 台主機可以執行 MySQL Cluster 嗎?
不行,因為只有2台機器沒辦法處理 Split-Brain (註2) 的狀況。依照 MySQL 工程師的說法,只有 2 台機器的狀況下,當叢集中一台主機掛掉,整個叢集就會 Shut Down,這樣也失去了叢集的意義了。(可參考 MySQL Cluster FAQ 的 arbitrator 部份)

Management node 可以跟 SQL node 放在同一台伺服器上嗎?
可以。

Management node 可以跟 Data node 放在同一台伺服器上嗎?
建議不要。Management node 除了啟動、關閉及備份叢集之外,最大的功能就是防止 Split-brain (註2) 的產生,如果跟 Data node 放在同一台伺服器,等於球員兼裁判, 叢集一出問題便很難處理。

Management node 掛掉怎麼辦?
Management node 主要用在 MySQL 管理叢集啟動、關閉及備份,因此叢集啟動後就算 Management node 掛了,MySQL 叢集也能正常運作。除非叢集中有主機掛掉或網路斷線,而且正巧 Management node 也掛了,這時才會發生 Split-Brain (註2) 的狀況。當然也可以配置2個以上的 Management node 來防止這種狀況發生,只是要確定每個 Management node 的 config.ini 必須完全相同。

如果我的資料庫非常大怎麼辦?
MySQL Cluster 5.0 的架構是把資料跟索引全放在記憶體,資料庫愈大,代表所需的記憶體也愈大。MySQL Cluster 5.1 已經著手進行把資料及索引放在硬碟的架構,如果你像這位仁兄有 88G 的資料庫,解決的方式有二種: 如果不怕系統出問題,就是換 MySQL Cluster 5.1 (目前在 Beta 階段),再不然就是多增加幾台 Data node 伺服器了。

註1:
3台配置:
Management node (*1) SQL nodes + Data nodes (*2)
4台配置:
Management node、SQL node (自行配置) + Data nodes (*2)
(以上若為網站使用,請自行注意安全性問題)

註2:
Split-Brain 是叢集應用中常見的問題。簡單的說,當叢集中的兩個節點間斷線時,便會認為對方停止服務,因此認為自己是叢集中唯一的節點,於是開始嘗試取代對方的服務,這種狀況通常稱為 Split-brain。

MySQL Cluster 為了解決這個問題,便在叢集中就設了一個仲裁者 (Arbitrator),也就是 Management node 來防止這種狀況的發生。
(可參考 fswikiMySQL Cluster Split-brain)

當然 Split-brain 不是三言二語可以說的明白,也不屬於本篇探討的範圍,有興趣可以請教 Google 大神

MySQL Cluster 官方必讀文件:
MySQL Cluster 官方文件列表
MySQL Cluster FAQ
MySQL Cluster 目前的功能限制

延伸閱讀:
Mysql Cluster: The definitive HOWTO (對岸翻譯)
Cluster Configuration 2 MGMD nodes
3 different architectures – best perfromance and redudancy?
dodolook おす おす (split-brain?)

4 comments On MySQL Cluster 叢集安裝環境介紹

  • 請問 MySQL Cluster 的 SQL Node 是指可以接受 SQL Access 的 Node 嗎? 那是否也可以做到 Read/Write 都由一堆 SQL Node 來分散 Loading 了?

    記得早期用 Replication 的作法, 好像 Write 的動作還是得寫到 Primary Server, 只有 Select 動作才能分散流量

  • hello people, my name is Evelyn and im currently a headhunter in a consulting firm. im helpin my client to look for an engineer who has previous experience in Sun Fire E10K/15K/20K/25K. if you are interested in this job openin or you know anyone who would be interested, please dont hesitate to contact me. thank you very much for your time and attention.

    best regards,
    Evelyn

  • 請問我在 mysql 網站上看到的版本,有enterprise, cluster,communication 版本,但沒有看到 max,max 是指哪一個版本呢?

    而 max 和 cluster 分開,是指要裝兩個軟體嗎?

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar