MySQL集群解决方案
**
1:mysql數據分庫分表,讀寫分離,主從切換使用mycat
2:集群方案(分布式+集群)
**
分布式:不同的服務器部署不同的模塊/工程,他們之間通過RPC/Rmi通信和調用,對外提供服務和組內協作
集群:不同的服務器部署相同的模塊/工程,他們之間通過分布式調動軟件進行統一調度,對外提供服務和訪問
注意:這里的雙主節點,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱。
就各個集群方案來說,其優勢為:
自動的主主Failover切換,一般3s以內切換備機。
多個從節點讀的負載均衡。
其劣勢為:
無法完全保證數據的一致性。如主1掛了,MMM monitor已經切換到主2上來了,而若此時雙主復制中,主2數據落后于主1(即還未完全復制完畢),那么此時的主2已經成為主節點,對外提供寫服務,從而導致數據不一。
由于是使用虛擬IP浮動技術,類似Keepalived,故RIP(真實IP)要和VIP(虛擬IP)在同一網段。如果是在不同網段也可以,需要用到虛擬路由技術。但是絕對要在同一個IDC機房,不可跨IDC機房組建集群。
2.2,MHA
MHA是在MySQL Replication的基礎上,對其進行優化。
MHA(Master High Availability)是多主多從結構,這是日本DeNA公司的youshimaton開發,主要提供更多的主節點,但是缺少VIP(虛擬IP),需要配合keepalived等一起使用。
要搭建MHA,要求一個復制集群中必須最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫。
MHA_lgx211
就各個集群方案來說,其優勢為:
可以進行故障的自動檢測和轉移
具備自動數據補償能力,在主庫異常崩潰時能夠最大程度的保證數據的一致性。
其劣勢為:
MHA架構實現讀寫分離,最佳實踐是在應用開發設計時提前規劃讀寫分離事宜,在使用時設置兩個連接池,即讀連接池與寫連接池,也可以選擇折中方案即引入SQL Proxy。但無論如何都需要改動代碼;
關于讀負載均衡可以使用F5、LVS、HAPROXY或者SQL Proxy等工具,只要能實現負載均衡、故障檢查及備升級為主后的讀寫剝離功能即可,建議使用LVS
2.3,Galera Cluster
Galera Cluster是由Codership開發的MySQL多主結構集群,這些主節點互為其它節點的從節點。不同于MySQL原生的主從異步復制,Galera采用的是多主同步復制,并針對同步復制過程中,會大概率出現的事務沖突和死鎖進行優化,就是復制不基于官方binlog而是Galera復制插件,重寫了wsrep api。
異步復制中,主庫將數據更新傳播給從庫后立即提交事務,而不論從庫是否成功讀取或重放數據變化。這種情況下,在主庫事務提交后的短時間內,主從庫數據并不一致。
同步復制時,主庫的單個更新事務需要在所有從庫上同步 更新。換句話說,當主庫提交事務時,集群中所有節點的數據保持一致。
對于讀操作,從每個節點讀取到的數據都是相同的。對于寫操作,當數據寫入某一節點后,集群會將其同步到其它節點。
MHA_lgx211
就各個集群方案來說,其優勢為:
多主多活下,可對任一節點進行讀寫操作,就算某個節點掛了,也不影響其它的節點的讀寫,都不需要做故障切換操作,也不會中斷整個集群對外提供的服務。
拓展性優秀,新增節點會自動拉取在線節點的數據(當有新節點加入時,集群會選擇出一個Donor Node為新節點提供數據),最終集群所有節點數據一致,而不需要手動備份恢復。
其劣勢為:
能做到數據的強一致性,毫無疑問,也是以犧牲性能為代價。
3:mysq5.7已經支持分布式事務
4:分布式id生成
2.2 Mycat 高可用方案
Mycat 作為一個代理層中間件,Mycat 系統的高可用涉及到 Mycat 本身的高可用以及后端 MySQL 的高可用,
前面章節所講的 MySQL 高可用方案都可以在此用來確保 Mycat 所連接的后端 MySQL 服務的高可用性。在大多
數情況下,建議采用標準的 MySQL 主從復制高可用性配置并交付給 Mycat 來完成后端 MySQL 節點的主從自動
切換。
mycat的三大功能:分庫分表、讀寫分離、主從切換
Mycat關鍵特性
關鍵特性
支持SQL92標準
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio實現,有效管理線程,解決高并發問題。
支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁。
支持單庫內部任意join,支持跨庫2表join,甚至基于caltlet的多表join。
支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢。
支持多租戶方案。
支持分布式事務(弱xa)。
支持XA分布式事務(1.6.5)。
支持全局序列號,解決分布式下的主鍵生成問題。
分片規則豐富,插件化開發,易于擴展。
強大的web,命令行監控。
支持前端作為MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密碼加密
支持服務降級
支持IP白名單
支持SQL黑名單、sql注入攻擊攔截
支持prepare預編譯指令(1.6)
支持非堆內存(Direct Memory)聚合計算(1.6)
支持PostgreSQL的native協議(1.6)
支持mysql和oracle存儲過程,out參數、多結果集返回(1.6)
支持zookeeper協調主從切換、zk序列、配置zk化(1.6)
支持庫內分表(1.6)
集群基于ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。
什么是MYCAT
一個徹底開源的,面向企業應用開發的大數據庫集群
支持事務、ACID、可以替代MySQL的加強版數據庫
一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
一個新穎的數據庫中間件產品
MYCAT監控
支持對Mycat、Mysql性能監控
支持對Mycat的JVM內存提供監控服務
支持對線程的監控
支持對操作系統的CPU、內存、磁盤、網絡的監控
目標
低成本的將現有的單機數據庫和應用平滑遷移到“云”端,解決數據存儲和業務規模迅速增長情況下的數據瓶頸問題。
1.6版本架構
長期規劃2.0
完全實現分布式事務,完全的支持分布式。
通過Mycat web(eye)完成可視化配置,及智能監控,自動運維。
通過mysql 本地節點,完整的解決數據擴容難度,實現自動擴容機制,解決擴容難點。
支持基于zookeeper的主從切換及Mycat集群化管理。
通過Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群節點的動態上下線。
接入Spark等第三方工具,解決數據分析及大數據聚合的業務場景。
通過Mycat智能優化,分析分片熱點,提供合理的分片建議,索引建議,及數據切分實時業務建議。
優勢
基于阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和性能以及眾多成熟的使用案例使得MYCAT一開始就擁有一個很好的起點,站在巨人的肩膀上,我們能看到更遠。業界優秀的開源項目和創新思路被廣泛融入到MYCAT的基因中,使得MYCAT在很多方面都領先于目前其他一些同類的開源項目,甚至超越某些商業產品。
MYCAT背后有一支強大的技術團隊,其參與者都是5年以上軟件工程師、架構師、DBA等,優秀的技術團隊保證了MYCAT的產品質量。
MYCAT并不依托于任何一個商業公司,因此不像某些開源項目,將一些重要的特性封閉在其商業產品中,使得開源項目成了一個擺設。
總結
以上是生活随笔為你收集整理的MySQL集群解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计传感器,需要注意哪些问题
- 下一篇: 有没有前端小伙伴知道Cutterman为