發新話題
打印

[轉貼] MySQL Cluster 叢集安裝環境介紹

[轉貼] MySQL Cluster 叢集安裝環境介紹

http://www.neo.com.tw/archives/869

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?)


TOP

發新話題