常見的MYSQL高可用解決方案?

MySQL 是一種關係資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 軟體採用了雙授權政策(本詞條“授權政策”),它分為社群版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。由於其社群版的效能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。

常見的MYSQL高可用解決方案

工具/原料

計算機作業系統

MySQL

方法/步驟

主從複製解決方案:這是MySQL自身提供的一種高可用解決方案,資料同步方法採用的是MySQL replication技術。MySQL replication就是從伺服器到主伺服器拉取二進位制日誌檔案,然後再將日誌檔案解析成相應的SQL在從伺服器上重新執行一遍主伺服器的操作,通過這種方式保證資料的一致性。為了達到更高的可用性,在實際的應用環境中,一般都是採用MySQL replication技術配合高可用叢集軟體keepalived來實現自動failover,這種方式可以實現95.000%的SLA。

常見的MYSQL高可用解決方案

MMM/MHA高可用解決方案:MMM提供了MySQL主主複製配置的監控、故障轉移和管理的一套可伸縮的指令碼套件。在MMM高可用方案中,典型的應用是雙主多從架構,通過MySQL replication技術可以實現兩個伺服器互為主從,且在任何時候只有一個節點可以被寫入,避免了多點寫入的資料衝突。同時,當可寫的主節點故障時,MMM套件可以立刻監控到,然後將服務自動切換到另一個主節點,繼續提供服務,從而實現MySQL的高可用。

常見的MYSQL高可用解決方案

Heartbeat/SAN高可用解決方案:在這個方案中,處理failover的方式是高可用叢集軟體Heartbeat,它監控和管理各個節點間連線的網路,並監控叢集服務,當節點出現故障或者服務不可用時,自動在其他節點啟動叢集服務。在資料共享方面,通過SAN(Storage Area Network)儲存來共享資料,這種方案可以實現99.990%的SLA。

常見的MYSQL高可用解決方案

Heartbeat/DRBD高可用解決方案:此方案處理failover的方式上依舊採用Heartbeat,不同的是,在資料共享方面,採用了基於塊級別的資料同步軟體DRBD來實現。DRBD是一個用軟體實現的、無共享的、伺服器之間映象塊裝置內容的儲存複製解決方案。和SAN網路不同,它並不共享儲存,而是通過伺服器之間的網路複製資料。

常見的MYSQL高可用解決方案

NDB CLUSTER:國內用NDB叢集的公司非常少,貌似有些銀行有用。NDB叢集不需要依賴第三方元件,全部都使用官方元件,能保證資料的一致性,某個資料節點掛掉,其他資料節點依然可以提供服務,管理節點需要做冗餘以防掛掉。缺點是:管理和配置都很複雜,而且某些SQL語句例如join語句需要避免。

常見的MYSQL高可用解決方案

使用第三方的Tungsten軟體:使用java編寫,不是MYSQL內建的,同樣是MYSQL資料庫複製,不過他不是用MYSQL內建的元件來做的,不但支援MYSQL資料庫複製也支援異構資料庫的複製,而且對異構資料庫複製支援較好,例如MYSQL複製到ORACLE。

常見的MYSQL高可用解決方案

注意事項

ndb是一種儲存引擎,通常在mysql cluster中使用。

LVS是Linux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統。

Keepalived在這裡主要用作RealServer的健康狀態檢查以及LoadBalance主機和BackUP主機之間failover的實現

相關問題答案