您好,登錄后才能下訂單哦!
mha是使用python寫的嗎?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
MHA是一位日本MySQL大牛用Perl寫的一套MySQL故障切換方案,來保證數據庫系統的高可用。在宕機的時間內(1030秒內),完成故障切換,部署MHA,可避免主從一致性問題,節約購買新服務器的費用,不影響服務器性能,易安裝,不改變現有部署。MHA還支持在線切換,從當前運行master切換到一個新的master上面,只需要很短的時間(0.52秒內),切換時僅僅阻塞寫操作,并不影響讀操作,便于主機硬件維護。在有高可用,數據一致性要求的系統上,MHA 提供了強大的功能,幾乎無間斷的滿足維護需要。
優點:
(1)主庫自動監控和故障轉移
在當前已存在的主從復制環境中,MHA可以監控主庫故障,并自動轉移故障。即使有一些從庫沒有接收到新的relay log events,MHA也會從接收過的其他從庫中自動識別有差異的relay log events,并在沒接收到的從庫上進行數據的前滾,以此來保障主從數據的一致性。
MHA可達到秒級別故障轉移(9~12秒監測到主庫故障,任選7秒鐘關閉主庫電源主機避免腦裂,接下來對數據不全的從庫進行數據的前滾(通過其他完整從庫的中繼日志relay log)),最后建立新的主庫,總停機時間在(total downtime)10~30秒)。另外,在配置文件里可以配置一個從庫優先成為主庫,因為MHA修復了從庫之間的一致性,dba就不用去處理一致性問題。當建立新的主庫之后,并行恢復其他從庫。即使有成千上萬的從庫,也不會影響恢復主庫時間,從庫也很快完成數據同步。
例子:DeNA公司在150+主從環境中使用MHA。其中一個master崩潰,MHA在4秒完成故障轉移,這是主動/被動集群解決方案無法完成的。
(2)互動(手動)master故障轉移
MHA可以用來只做故障轉移,即不監測主庫狀態,只作為故障轉移的交互。
(3)非交互式故障轉移
MHA也提供非交互式的故障轉移(不監測主庫狀態,自動故障轉移)。這個特性很有用,特別是你已經安裝了其他軟件監控主庫。比如,用Pacemaker(Heartbeat)監測主庫故障和vip接管,用MHA進行故障轉移和從庫提升。
(4)在線切換主庫到不同主機
在很多情況下,有必要將主庫轉移到其他主機上(如替換raid控制器,提升主庫機器硬件等等)。這并不是主庫崩潰,而是計劃維護必須去做的。計劃維護會導致downtime,所以必須盡可能快的恢復。快速的主庫切換和優雅的阻塞寫操作是必需的,MHA提供了這種方式。優雅的主庫切換, 0.52秒內阻塞寫操作。在很多情況下0.52秒的downtime是可以接受的,并且不影響計劃維護窗口。這意味著當需要更換更快機器,升級高版本時,dba可以很容易采取動作。
(5)master 崩潰不會導致主從數據不一致性
當master 崩潰后,MHA自動識別從庫間relay log events的不同,然后應用于不同的從庫上,最終所有從庫都同步。結合通過半同步一起使用,幾乎沒有任何數據丟失。
(6)MHA部署不影響當前環境設置
MHA最重要的一個設計理念就是盡可能使用簡單。其他高可用方案需要改mysql部署設置,MHA不會讓dba做這些部署配置,同步和半同步環境都可以用。啟動/停止/升級/降級/安裝/卸載 MHA都不用改變(如啟動/停止)mysql主從環境。
當你需要升級MHA到新版本時,不需要停止mysql,僅僅更新HMA版本,然后重新啟動MHAmanger即可。有些高可用方案要求特定的mysql版本(如mysql cluster,mysql with global transaction id 等),而且你可能不想僅僅為了MasterHA而遷移應用。很多情況下,公司已經部署了許多傳統的mysql應用,開發或dba不想花太多時間遷移到不同的存儲引擎或新的特性上。
(7)不增加服務器費用
MHA 包含MHA Manager和MHA node。MHA node運行在每臺mysql服務器上,Manager可以單獨部署一臺機器,可監控100+以上數量的數據庫,總服務器數量不會有太大增加。需要注意的是Manager也可以運行在其中一臺從庫上。
(8)性能無影響
當監控主庫時,MHA只是每幾秒鐘(默認3秒)發送ping包,不發送大的查詢。主從復制性能不受影響。
(9)適用任何存儲引擎
Mysql不僅僅適用于事務安全的innodb引擎,在主從中適用的引擎,MHA都可以適用。即使使用遺留環境的myisam引擎,不進行遷移,也可以用MHA。
架構
在架構上來說,MHA分為兩類:
(1)Node
MHA是基于MySQL 主從復制環境的,在該環境中,不管是Master角色,還是Slave角色,都稱為Node,是被監控管理的對象節點。Node服務器上需要安裝MHA Node包。
(2)Manager
Manager為MHA架構中的管理者,建議部署在一臺獨立的服務器上,當然也可部署在某個Slave上,但該Slave永遠不要被選擇成為新的Master,否則故障切換后的MHA架構就失去了高可用性。Manager服務器需要安裝MHA Manager包,并完善一個主配置文件。一個Manager可管理多套MySQL 主從復制環境。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。