您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL的高可用架構技術是什么”,在日常操作中,相信很多人在MySQL的高可用架構技術是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL的高可用架構技術是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
隨著信息技術的發展,企業越來越依賴于信息化管理,各業務應用的數據信息,主要存儲在數據庫中,企業對這些數據訪問的連續性要求越來越高,為了避免因為數據的中斷導致各種損失,數據庫的高可用已成了企業信息化建設的重中之中。同時,對于電信、金融、能源、軍工等等涉及國計民生的行業或領域的關鍵業務對于關鍵數據存儲都需要高可用,必須保證數據系統7×24小時全天候運行,防止數據丟失、數據損壞。編程學習資料點擊領取
高可用架構對于互聯網服務基本是標配,無論是應用服務還是數據庫服務都需要做到高可用。對于一個系統而言,可能包含很多模塊,比如前端應用,緩存,數據庫,搜索,消息隊列等,每個模塊都需要做到高可用,才能保證整個系統的高可用。對于數據庫服務而言,高可用可能更復雜,對用戶的服務可用,不僅僅是能訪問,還需要有正確性保證,因此數據庫的高可用需要更加認證對待。
MySQL高可用架構分類
MySQL實現高可用之MMM
MySQL實現高可用之MHA
MySQL實現高可用之主從架構
MySQL實現高可用之Cluster模式
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。
MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱
MMM的監控端是會提供多個虛擬ip(vip),包括一個可寫的vip,多個可讀的vip,通過監管的管理,這些ip會綁定在可用的mysql上,當某一臺mysql宕機時,會將vip遷移到其他mysql。
MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。
這個套件也能基于標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居于復制的服務器啟動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。
MMM的基礎組件分析
mmm_mond:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。因此,腳本需要在監管上運行。
mmm_agentd:運行在每個msql服務器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在被監管機上運行。
mmm_control:一個簡單的腳本,提供管理mmm_mond進行的命令。
MMM實現基本實現原理
MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。
MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。
MMM的使用場景
由于MMM無法完全的保證數據一致性,所以MMM適用于對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。
對于那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構。
MMM項目來自 Google:code.google.com/p/mysql-mas…
官方網站為:mysql-mmm.org
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司的youshimaton(現就職于Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內自動完成數據庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。
MHA是一款開源的MySQL高可用程序,MHA在監控到master節點故障時,會自動提升其中擁有最新數據的slave節點成為新的master節點。
MHA會獲取其他節點的額外信息來避免一致性方面的問題,也就是MHA會獲取其他從節點中的數據信息,并將信息發給最接近主節點的從節點,這樣主節點故障時會提升此從節點為主節點,而此從節點擁有其他從節點所有的數據信息。
MHA還提供了master節點的在線切換功能,即按需切換master/slave節點。
MHA的基礎組件
MHA由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。
MHA Manager可以單獨部署在獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節點上。
MHA的實現原理
MHA Node運行在每臺MySQL服務器上,MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然后將所有其他的slave重新指向新的master。整個故障轉移過程對應用程序完全透明。
在MHA自動故障切換過程中,MHA試圖從宕機的主服務器上保存二進制日志,最大程度的保證數據的不丟失,但這并不總是可行的。
例如,如果主服務器硬件故障或無法通過ssh訪問,MHA沒法保存二進制日志,只進行故障轉移而丟失了最新的數據。使用MySQL 5.5的半同步復制,可以降低數據丟失的風險。
MHA可以與半同步復制結合起來,如果只有一個slave已經收到了最新的二進制日志,MHA可以將最新的二進制日志應用于其他所有的slave服務器上,因此可以保證所有節點的數據一致性。
MHA的使用場景
目前MHA主要支持一主多從的架構。
要搭建MHA,要求一個復制集群中必須最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫。
因為至少需要三臺服務器,出于機器成本的考慮,淘寶也在該基礎上進行了改造,目前淘寶TMHA已經支持一主一從。
從代碼層面看,MHA就是一套Perl腳本,那么相信以阿里系的技術實力,將MHA改成支持一主一從也并非難事。
此種架構,一般初創企業比較常用,也便于后面步步的擴展
此架構特點
成本低,布署快速、方便
讀寫分離
還能通過及時增加從庫來減少讀庫壓力
主庫單點故障
數據一致性問題(同步延遲造成)
高可用軟件可使用Heartbeat,全面負責VIP、數據與DRBD服務的管理
主故障后可自動快速切換,并且從庫仍然能通過VIP與新主庫進行數據同步
從庫也支持讀寫分離,可使用中間件或程序實現
MySQL Cluster技術在分布式系統中為MySQL提供了冗余特性,增強了安全性,可以的提高系統的可靠性和數據的有效性。MySQL集群需要一組計算機,每臺計算機可以理解為一個節點,這些節點的功能各不相同。MySQL Cluster按照功能來分,可以分為三種節點:管理節點、數據節點和SQL節點。集群中的某臺計算機可以是某一個節點,也可以是兩種或者三種節點的集合,這些節點組合在一起,為應用提供具有高可靠性、高性能的Cluster數據管理;
目前企業數據量越來越大,所以對MySQL的要求進一步提高,以前的大部分高可用方案通常存在一定的缺陷,例如MySQL Replication方案,Master是否存活檢測需要一定的時間,如果需要主從切換也需要一定的時間,因此高可用很大的程度上依賴于監控軟件和自動化管理工具。隨著MySQL Cluster的不斷發展,終于在性能和高可用上得到了很大的提高;
MySQL Cluster基本概念
MySQL Cluster簡單地講是一種MySQL集群的技術,是由一組計算機構成,每臺計算機可以存放一個或者多個節點,其中包括MySQL服務器,DNB Cluster的數據節點,管理其他節點,以及專門的數據訪問程序,這些節點組合在一起,就可以為應用提高可高性能、高可用性和可縮放性的Cluster數據管理;
MySQL Cluster的訪問過程大致是這樣的,應用通常使用一定的負載均衡算法將對數據訪問分散到不同的SQL節點,SQL節點對數據節點進行數據訪問并從數據節點返回數據結果,管理節點僅僅只是對SQL節點和數據節點進行配置管理;
理解MySQL Cluster節點
MySQL Cluster按照節點類型可以分為3種類型的節點,分別是管理節點、SQL節點、數據節點,所有的這些節點構成了一個完整的MySQL集群體系,事實上,數據保存在NDB存儲服務器的存儲引擎中,表結構則保存在MySQL服務器中,應用程序通過MySQL服務器訪問數據,而集群管理服務器則通過管理工具ndb_mgmd來管理NDB存儲服務器;
【1.管理節點】
管理節點主要是用來對其他的節點進行管理。通常通過配置config.ini文件來配置集群中有多少需要維護的副本、配置每個數據節點上為數據和索引分配多少內存、IP地址、以及在每個數據節點上保存數據的磁盤路徑;
管理節點通常管理Cluster配置文件和Cluster日志。Cluster中的每個節點從管理服務器檢索配置信息,并請求確定管理服務器所在位置的方式。如果節點內出現新的事件的時候,節點將這類事件的信息傳輸到管理服務器,將這類信息寫入到Cluster日志中;
一般在MySQL Cluster體系中至少需要一個管理節點,另外值得注意的是,因為數據節點和SQL節點在啟動之前需要讀取Cluster的配置信息,所以通常管理節點是最先啟動的;
【2.SQL節點】
SQL節點簡單地講就是mysqld服務器,應用不能直接訪問數據節點,只能通過SQL節點訪問數據節點來返回數據。任何一個SQL節點都是連接到所有的存儲節點的,所以當人任何一個存儲節點發生故障的時候,SQL節點都可以把請求轉移到另一個存儲節點執行。通常來講,SQL節點越多越好,SQL節點越多,分配到每個SQL節點的負載就越小,系統的整體性能就越好;
【3.數據節點】
數據節點用來存放Cluster里面的數據,MySQL Cluster在各個數據節點之間復制數據,任何一個節點發生了故障,始終會有另外的數據節點存儲數據;
通常這3種不同邏輯的節點可以分布在不同的計算機上面,集群最少有3臺計算機,為了保證能夠正常維護集群服務,通常將管理節點放在一個單獨的主機上。
到此,關于“MySQL的高可用架構技術是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。