MySQL數(shù)據(jù)庫的優(yōu)化(下)MySQL數(shù)據(jù)庫的高可用架構方案
原創(chuàng)【51CTO獨家特稿】在上一篇MySQL數(shù)據(jù)庫的優(yōu)化中,我們跟隨筆者學習了單機MySQL數(shù)據(jù)庫的優(yōu)化,今天我們繼續(xù)跟隨筆者學習MySQL優(yōu)化的集群方案。
MySQL高可用設計方案
如果單MySQL的優(yōu)化始終還是頂不住壓力時,這個時候我們就必須考慮MySQL的集群方案了,目前可行的方案有:
一、MySQL Cluster
優(yōu)勢:可用性非常高,性能非常好。每份數(shù)據(jù)至少可在不同主機存一份拷貝,且冗余數(shù)據(jù)拷貝實時同步。
但它的維護非常復雜,存在部分Bug,目前還不適合比較核心的線上系統(tǒng),所以這個我不推薦。
二、DRBD磁盤網(wǎng)絡鏡像方案
優(yōu)勢:軟件功能強大,數(shù)據(jù)可在底層快設備級別跨物理主機鏡像,且可根據(jù)性能和可靠性要求配置不同級別的同步。IO操作保持順序,可滿足數(shù)據(jù)庫對數(shù)據(jù)一致性的苛刻要求。
但非分布式文件系統(tǒng)環(huán)境無法支持鏡像數(shù)據(jù)同時可見,性能和可靠性兩者相互矛盾,無法適用于性能和可靠性要求都比較苛刻的環(huán)境,維護成本高于MySQL Replication。所以這個大家可根據(jù)實際環(huán)境來考慮是否部署。
三、MySQL Replication
在實際應用場景中,MySQL Replication是使用最為廣泛的一種提高系統(tǒng)擴展性的設計手段。眾多的MySQL使用者通過Replication功能提升系統(tǒng)的擴展性后,通過簡單的增加價格低廉的硬件設備成倍 甚至成數(shù)量級地提高了原有系統(tǒng)的性能,是廣大MySQL中低端使用者非常喜歡的功能之一,也是許多MySQL使用者選擇MySQL最為重要的原因。
比較常規(guī)的MySQL Replication架構也有好幾種,這里分別簡單說明下
MySQL Replicatioin 方案一:常規(guī)復制架構--Master-slaves,是由一個Master復制到一個或多個Salve的架構模式,主要用于讀壓力大的應用數(shù)據(jù)庫端廉價擴展解決方案,讀寫分離,Master主要負責寫方面的壓力。
MySQL Replicatioin 方案二:級聯(lián)復制架構,即Master-Slaves-Slaves,這個也是為了防止Slaves的讀壓力過大,而配置一層二級 Slaves,很容易解決Master端因為附屬slave太多而成為瓶勁的風險。
MySQL Replicatioin 方案三:Dual Master與級聯(lián)復制結合架構,即Master-Master-Slaves,***的好處是既可以避免主Master的寫操作受到Slave集群的復制帶來的影響,而且保證了主Master的單點故障。
以上就是比較常見的MySQL replication架構方案,大家可根據(jù)自己公司的具體環(huán)境來設計 ,Mysql 負載均衡可考慮用LVS或Haproxy來做,高可用軟件我推薦Heartbeat。
MySQL Replication的不足:如果Master主機硬件故障無法恢復,則可能造成部分未傳送到slave端的數(shù)據(jù)丟失。所以大家應該根據(jù)自己目前的網(wǎng)絡規(guī)劃,選擇自己合理的Mysql架構方案,跟自己的MySQL DBA和程序員多溝涌,多備份(備份我至少會做到本地和異地雙備份),多測試,數(shù)據(jù)的事是***的事,出不得半點差錯,切記切記。
因本人自身能力有限,以上認識可能存在錯誤和疏漏,大家有什么想法和意見都可以通過我的博客與我交流,我會在***時間更正此文章。
撫琴煮酒的技術型博客
http://hi.baidu.com/yuhongchun027
http://andrewyu.blog.51cto.com
參考文檔 簡朝陽 《MySQL性能調優(yōu)與架構設計》電子工業(yè)出版社
【編輯推薦】
- MySQL數(shù)據(jù)庫的優(yōu)化(上)單機MySQL數(shù)據(jù)庫的優(yōu)化
- MySQL數(shù)據(jù)庫分區(qū)管理 細節(jié)決定成敗
- 從MySQL復制功能中得到一舉三得實惠
- 降低鎖競爭 減少MySQL用戶等待時間
- 給數(shù)據(jù)減肥 讓MySQL數(shù)據(jù)庫跑的更快