色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL MHA基本介紹

jf_78858299 ? 來源:基礎技術研究 ? 作者:王曉華 ? 2023-03-29 13:12 ? 次閱讀

******** 摘要********

MySQL是目前主流的關系型數據庫管理系統,目前在全球被廣泛地應用。由于其開源、體積小、速度快、成本低、安全性高,因此許多網站選擇MySQL作為數據庫進行存儲數據。

****以前在運維數據庫過程中經常會遇到這樣的困擾:沒有工具快速切換集群主庫,如果切換主庫,需要DBA手動修改從庫指向,修改元信息等。所以今天給大家介紹一款工具MHA,可以實現需求快速上線,不影響當前架構,整個切換全部自動化處理,方便DBA使用,例如檢查,操作,展示等。

在 MySQL(5.5 及以下)傳統復制的時代,MHA(Master High Availability)在 MySQL 高可用應用中非常成熟。在 MySQL(5.6)及 GTID 時代開啟以后,MHA 沒有隨之進行進一步的更新,但是很多互聯網公司依然在沿用這個技術。因此本文給出了MHA的簡單介紹。

2

MHA簡介

【 什么是MHA

****MHA目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內自動完成數據庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。

目前MHA主要支持一主多從的架構,在搭建MHA時至少要有一個Master主庫和兩個Slave從庫,MHA架構支持任何存儲引擎。

****該軟件由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。MHA Manager可以單獨部署在一臺獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節點上。MHA Node運行在每臺MySQL服務器上,MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然后將所有其他的slave重新指向新的master。整個故障轉移過程對應用程序完全透明。

【 MHA優勢

  • 不影響服務器性能,易安裝,不改變現有部署
  • 故障切換(實現自動故障檢測和故障轉移,通常在30秒以內)
  • 數據一致性保證
  • 不需要對當前mysql環境做重大修改
  • 不需要添加額外的服務器(僅一臺manager就可管理上百個replication)
  • ****性能優秀,可工作在半同步復制和異步復制,當監控mysql狀態時,僅需要每隔N秒向master發送ping包(默認3秒),所以對性能無影響。你可以理解為MHA的性能和簡單的主從復制框架性能一樣
  • ****只要replication支持的存儲引擎mha都支持

【 MHA組成

MHA軟件由兩部分組成,Manager工具包和Node工具包,具體的說明如下。

Manager工具包主要包括以下幾個工具:

  • masterha_check_ssh 檢查MHA的SSH配置狀況
  • masterha_check_repl 檢查MySQL復制狀況
  • masterha_manger 啟動MHA
  • masterha_check_status 檢測當前MHA運行狀態
  • masterha_master_monitor 檢測master是否宕機
  • masterha_master_switch 控制故障轉移(自動或者手動)
  • masterha_conf_host 添加或刪除配置的server信息

Node工具包(這些工具通常由MHA Manager的腳本觸發,無需人為操作)主要包括以下幾個工具:

  • save_binary_logs 保存和復制master的二進制日志
  • apply_diff_relay_logs 識別差異的中繼日志事件并將其差異的事件應用于其他的slave
  • filter_mysqlbinlog 去除不必要的ROLLBACK事件
  • purge_relay_logs 清除中繼日志(不會阻塞SQL線程)

【 MHA版本選擇 】

從MHA的0.56版本開始,也支持基于GTID的故障切換。MHA會自動檢測mysqld是否在GTID運行,如果GTID開啟,MHA就實現帶GTID的故障切換,如果沒有啟用,MHA就使用基于relay log的故障切換。

3MHA實現

【 工作流程

  1. 從宕機崩潰的master保存二進制日志事件(binlog events);
  2. 識別含有最新更新的slave;
  3. 應用差異的中繼日志(relay log)到其他的slave;
  4. 應用從master保存的二進制日志事件(binlog events);
  5. 提升一個slave為新的master;
  6. 使其他的slave連接新的master進行復制。

【 MHA架構

中控機管理工具,用于管理mha部署、主從切換等;****

****mha管理工具,支持部署、更新配置文件、目錄等開關。manager收集切換日志、集群互信、檢查ssh、repl狀態、配置文件一致性等。

圖片

【 核心腳本工作原理介紹 】

1) masterha_manager

mha啟動腳本為masterha_manager,可選參數為remove_dead_master_conf、manger_log、ignore_last_failover。

masterha_manager主要流程為:

1.調用MasterMonitor,監控MySQL master狀態;

2.發現master狀態異常后,調用MasterFailover進行切換;

3.manager通過monitor監測master狀態,一旦獲得返回值,則表明monitor狀態異常。通過判斷exit_code確定是否應切換。

4.檢測通過后,調用MasterFailover進執行切換操作。

具體流程如下:

圖片

2) MasterMonitor

MasterHA_Manager調用MasterMonitor的main方法對MySQL進行監控。

具體流程圖如下:

圖片

核心方法是一個死循環,不斷調用wait_until_master_is_dead方法監測主庫狀態。wait_until_master_is_dead方法的返回值中,exit_code有的值有四種,分別是0、1、20、retry。其中只有當exit_code=MHA::ManagerConst::MASTER_DEAD_RC,也就是20時,后續才會調用failover方法。

wait_until_master_is_dead方法中,核心方法是調用wait_until_master_is_unreachable方法并處理其返回值。邏輯關系如下:

圖片

拿到wait_until_master_is_unreachable的返回值后,會再次根據配置文件探活,確認主庫連接失敗后,根據配置文件檢測slave狀態和數量,有合適新主庫后,exit_code返回20,否則返回0或者1。

wait_until_master_is_unreachable方法的返回值有三個,分別是ret、dead_master和ssh_reachable。該方法的邏輯如下:

圖片

wait_until_master_is_unreachable調用MHA::ServerManager對主庫進行實時檢測,包括deadservers、aliveservers、aliveslaves等。如果啟用GTID,則檢查binlog server,否則進行ssh和slave版本檢測。

后續使用MHA::HealthCheck對主庫進行ping檢查。檢查確認主庫的確不可達后,返回func_rc, current_master, ssh_reachable。

4

總結

MHA 由日本 DeNA 公司 youshimaton 開發,他認為在 GTID 環境下MHA 存在的價值不大,MHA 最近一次發版是 2018 年。現如今使用 MySQL 已離不開 GTID ,無論是從功能、性能角度,還是從維護角度,GTID 能具備更優異的表現。但是無論是什么技術,他的核心原理都是可以自動將最新數據的Slave提升為新的 Master,然后將所有其他的Slave重新指向新的Master。整個故障轉移過程對應用程序是完全透明的,因此MHA的時代是值得被大家了解和記憶的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3794

    瀏覽量

    64364
  • MySQL
    +關注

    關注

    1

    文章

    804

    瀏覽量

    26538
  • 存儲數據
    +關注

    關注

    0

    文章

    88

    瀏覽量

    14100
收藏 人收藏

    評論

    相關推薦

    MySQL數據遷移的流程介紹

    本文介紹了一次 MySQL 數據遷移的流程,通過方案選型、業務改造、雙寫遷移最終實現了億級數據的遷移。 一、背景 預約業務是 vivo 游戲中心的重要業務之一。由于歷史原因,預約業務數據表與其他業務
    的頭像 發表于 11-25 09:20 ?160次閱讀
    <b class='flag-5'>MySQL</b>數據遷移的流程<b class='flag-5'>介紹</b>

    MySQL還能跟上PostgreSQL的步伐嗎

    Percona 的老板 Peter Zaitsev最近發表一篇博客,討論了MySQL是否還能跟上PostgreSQL的腳步。Percona 作為MySQL 生態扛旗者,Percona 開發了知名
    的頭像 發表于 11-18 10:16 ?199次閱讀
    <b class='flag-5'>MySQL</b>還能跟上PostgreSQL的步伐嗎

    詳解MySQL多實例部署

    詳解MySQL多實例部署
    的頭像 發表于 11-11 11:10 ?227次閱讀

    MySQL編碼機制原理

    前言 一位讀者在本地部署 MySQL 測試環境時碰到一個問題,我覺得挺有代表性的,所以寫篇文章介紹一下,看完相信你會對 MySQL 的編碼機制有最本質的了解,本文的目錄結構如下 讀者問題簡介
    的頭像 發表于 11-09 11:01 ?222次閱讀

    適用于MySQL的dbForge架構比較

    dbForge Schema Compare for MySQL 是一種工具,用于輕松有效地比較和部署 MySQL 數據庫結構和腳本文件夾差異。該工具提供了 MySQL 數據庫架構中所有差異的全面視圖。
    的頭像 發表于 10-28 09:41 ?195次閱讀
    適用于<b class='flag-5'>MySQL</b>的dbForge架構比較

    配置MySQL主從復制和讀寫分離

    配置MySQL主從復制和讀寫分離
    的頭像 發表于 10-23 11:44 ?416次閱讀
    配置<b class='flag-5'>MySQL</b>主從復制和讀寫分離

    Jtti:MySQL初始化操作如何設置root密碼

    MySQL初始化時,可以通過以下步驟設置root密碼: 打開命令行工具,使用以下命令啟動MySQL服務: ? sudo service mysql start ? 使用以下命令登錄MySQL
    的頭像 發表于 08-08 16:45 ?362次閱讀

    MySQL知識點匯總

    大家好,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的其他部分。
    的頭像 發表于 08-05 15:27 ?396次閱讀
    <b class='flag-5'>MySQL</b>知識點匯總

    華納云:如何修改MySQL的默認端口

    MySQL是世界上最流行的開源關系型數據庫管理系統之一。在某些情況下,由于安全性、網絡策略或端口沖突的原因,數據庫管理員可能需要更改MySQL服務的默認監聽端口。本文將指導您如何在不同的操作系統上
    的頭像 發表于 07-22 14:56 ?307次閱讀
    華納云:如何修改<b class='flag-5'>MySQL</b>的默認端口

    MySQL的整體邏輯架構

    支持多種存儲引擎是眾所周知的MySQL特性,也是MySQL架構的關鍵優勢之一。如果能夠理解MySQL Server與存儲引擎之間是怎樣通過API交互的,將大大有利于理解MySQL的核心
    的頭像 發表于 04-30 11:14 ?449次閱讀
    <b class='flag-5'>MySQL</b>的整體邏輯架構

    MySQL忘記root密碼解決方案

    mysql登錄密碼為password()算法加密,解密成本太高,以下為通用方案; 原理:mysql提供了特殊啟動方式,即跳過權限表驗證,啟動后,登錄不需要提供密碼; 登錄后,即可修改mysql數據庫的user表,重置
    的頭像 發表于 04-23 16:08 ?693次閱讀

    查詢SQL在mysql內部是如何執行?

    我們知道在mySQL客戶端,輸入一條查詢SQL,然后看到返回查詢的結果。這條查詢語句在 MySQL 內部到底是如何執行的呢?本文跟大家探討一下哈,我們先來看下MySQL基本架構~
    的頭像 發表于 01-22 14:53 ?563次閱讀
    查詢SQL在<b class='flag-5'>mysql</b>內部是如何執行?

    MySQL密碼忘記了怎么辦?MySQL密碼快速重置方法步驟命令示例!

    MySQL密碼忘記了怎么辦?MySQL密碼快速重置方法步驟命令示例! MySQL是一種常用的關系型數據庫管理系統,如果你忘記了MySQL的密碼,不必擔心,可以通過一些簡單的步驟來快速重
    的頭像 發表于 01-12 16:06 ?743次閱讀

    如何使用Golang連接MySQL

    首先我們來看如何使用Golang連接MySQL
    的頭像 發表于 01-08 09:42 ?3354次閱讀
    如何使用Golang連接<b class='flag-5'>MySQL</b>

    mysql密碼忘了怎么重置

    mysql密碼忘了怎么重置? MySQL是一種開源的關系型數據庫管理系統,密碼用于保護數據庫的安全性和保密性。如果你忘記了MySQL的密碼,可以通過以下幾種方法進行重置。 方法一:使用MySQ
    的頭像 發表于 12-27 16:51 ?6669次閱讀
    主站蜘蛛池模板: 亚洲第一天堂无码专区| 日日操夜夜操狠狠操| 欧美群交XXXCOM| 色综合伊人色综合网站下载| 亚洲国产成人精品无码区APP| 亚洲综合色婷婷在线影院| 97久久精品人人槡人妻人| 国产成人精品久久久久婷婷| 黑吊大战白女出浆| 欧洲美女人 一级毛片| 袖珍人与大黑人性视频| 97国产精品视频在线观看| 国产精品第100页| 免费播放美女一级毛片| 亚洲1卡二卡3卡4卡新区在线| 97超碰免费人妻中文| 国产精品亚洲污污网站入口| 免费看美女的网站| 学生小泬无遮挡女HD| 宝贝好紧好爽再搔一点试視頻| 国模大胆一区二区三区| 日产日韩亚洲欧美综合搜索| 在线伦理电影网| 国产亚洲精品线观看不卡| 日本xxxx96| 99热在线视频| 久久精品中文字幕有码日本| 亚洲精品97福利在线| 国产精品成人免费视频99| 秋霞电影网午夜鲁丝片| 在线看片av以及毛片| 久9青青cao精品视频在线| 无码国产欧美日韩精品| 被黑人群jian又粗又大H| 奶大B紧17p| 最近免费视频中文2019完整版| 和老外3p爽粗大免费视频| 偷偷鲁青春草原视频| 国产GV无码A片在线观看| 日韩精品免费一区二区| yy8090韩国理伦片在线|