標籤:
MySQL高可用解決方案(MySQL HA Solution)
什麼是高可用性?
很多公司的服務都是24小時*365天不間斷的。比如Call Center。這就要求高可用性。再比如購物網站,必須隨時都可以交易。那麼當購物網的server掛了一個的時候,不能對業務產生任何影響。這就是高可用性。
高可用性2個問題:
如何共用資料或同步資料?如何處理failover?
解釋failover,意思就是當伺服器down掉,或者出現錯誤的時候,可以自動的切換到其他待命的伺服器,不影響伺服器上App的運行。
對於分散式資料庫系統。如何架構才能保證其高可用性呢?以MySQL為例。
1. MySQLreplication with manual failover
同步資料是採用MySQL replication的方法,在MySQL分表分塊到主從已經解釋。簡單的說就是從庫根據主庫的日誌來做相應的處理,保證資料的一致。通常還配合MySQL Proxy或Amoeba等進行讀寫分離減少伺服器壓力。
manual failover,顯然當Master掛掉時,利用本方式是需要手動來處理failover,一般來說是將slave更改為server。
可用性達到: 98%-99.9+%
2.Master-Master with MMM manager(Multi-Master Replication Manager)
同步資料的方式是Multi-Master Replication Manager,在MySQL分表分塊到主從解釋,多主多從的設定,是一個loop環形,每個DB既是前一個DB的Slave又是後一個的Master。優勢就在於,一個Master掛掉,也還可以繼續DB操作。每個DB都可以進行讀寫,分散壓力。
可用性達到:99%
3.Heartbeat/SAN
處理failover的方式是Heartbeat,Heartbeat可以看成是一組程式,監控管理各個node間串連的網路。當node出現錯誤時,自動啟動其他node開始服務。Heartbeat必須解決的一個問題就是split brain,在網路中的一個node down掉後,每個node都會認為其他node down掉並嘗試開始服務,因為產生資料衝突。
通過SAN來共用資料。
SAN:Storage Area Network,是一種LAN來處理大資料量的傳輸,提供了電腦和儲存系統之間的資料轉送。各個電腦群組成的叢集可以通過SAN共用儲存。
當server1掛掉的時候,Heartbeat監控到啟動Server2的服務。而因為採用了SAN來共用了儲存,Server2可以直接利用SAN網路中的資料。通過這種方式來提供高可用的解決方案。
可用性達到: 99.5%-99.9%
4.Heartbeat/DRBD
處理failover的方式依舊是Heartbeat。
同步資料使用DRBD:Distributed Replicated Block Device(DRBD)是一個用軟體實現的、無共用的、伺服器之間鏡像塊裝置內容的儲存複製解決方案。和SAN網路不同,它並不共用儲存,而是通過伺服器之間的網路複製資料。
可用性達到: 99.9%
5. MySQLCluster(NDB Cluster)
MySQL Cluster也是由各個DB node組成一個cluster,在這個cluster中由網路連接。可以自由的增減node的個數來對應資料庫壓力。
用synchronous replication(同步複製,要不同時成功要麼同時失敗)的方式來同步各個node的資料。然後對各個table進行partition,基於各個table的primary key。
採用了Shared Nothing Architecture的結構。不共用任何資料,而是每個node都同步好各自的資料。這樣即使是PC也可以輕鬆被加入到Shared Nothing的結構中。
Share disk Sharenothing Sharememory
很難懂,我猜想MySQL Cluster的結構應該和Hadoop中的HDFS(Hadoop Distributed File System)相似,按照key來做partition,然後將各個partition通過synchronous的方式同步的儲存到各個 DataNode上,Management Node來監聽管理Cluster,通過SQL Node來訪問DataNode上的資料。
可用性百分比資料來源:
http://www.mysqlperformanceblog.com/2009/10/16/finding-your-mysql-high-availability-solution-–-the-questions/
轉自:
http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html
[ZZ]MySQL高可用解決方案