chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL MHA基本介紹

jf_78858299 ? 來源:基礎(chǔ)技術(shù)研究 ? 作者:王曉華 ? 2023-03-29 13:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

MySQL是目前主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前在全球被廣泛地應(yīng)用。由于其開源、體積小、速度快、成本低、安全性高,因此許多網(wǎng)站選擇MySQL作為數(shù)據(jù)庫進(jìn)行存儲(chǔ)數(shù)據(jù)。

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

在 MySQL(5.5 及以下)傳統(tǒng)復(fù)制的時(shí)代,MHA(Master High Availability)在 MySQL 高可用應(yīng)用中非常成熟。在 MySQL(5.6)及 GTID 時(shí)代開啟以后,MHA 沒有隨之進(jìn)行進(jìn)一步的更新,但是很多互聯(lián)網(wǎng)公司依然在沿用這個(gè)技術(shù)。因此本文給出了MHA的簡(jiǎn)單介紹。

2

MHA簡(jiǎn)介

【 什么是MHA

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

目前MHA主要支持一主多從的架構(gòu),在搭建MHA時(shí)至少要有一個(gè)Master主庫和兩個(gè)Slave從庫,MHA架構(gòu)支持任何存儲(chǔ)引擎。

****該軟件由兩部分組成:MHA Manager(管理節(jié)點(diǎn))和MHA Node(數(shù)據(jù)節(jié)點(diǎn))。MHA Manager可以單獨(dú)部署在一臺(tái)獨(dú)立的機(jī)器上管理多個(gè)master-slave集群,也可以部署在一臺(tái)slave節(jié)點(diǎn)上。MHA Node運(yùn)行在每臺(tái)MySQL服務(wù)器上,MHA Manager會(huì)定時(shí)探測(cè)集群中的master節(jié)點(diǎn),當(dāng)master出現(xiàn)故障時(shí),它可以自動(dòng)將最新數(shù)據(jù)的slave提升為新的master,然后將所有其他的slave重新指向新的master。整個(gè)故障轉(zhuǎn)移過程對(duì)應(yīng)用程序完全透明。

【 MHA優(yōu)勢(shì)

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

【 MHA組成

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

Manager工具包主要包括以下幾個(gè)工具:

  • masterha_check_ssh 檢查MHA的SSH配置狀況
  • masterha_check_repl 檢查MySQL復(fù)制狀況
  • masterha_manger 啟動(dòng)MHA
  • masterha_check_status 檢測(cè)當(dāng)前MHA運(yùn)行狀態(tài)
  • masterha_master_monitor 檢測(cè)master是否宕機(jī)
  • masterha_master_switch 控制故障轉(zhuǎn)移(自動(dòng)或者手動(dòng))
  • masterha_conf_host 添加或刪除配置的server信息

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

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

【 MHA版本選擇 】

從MHA的0.56版本開始,也支持基于GTID的故障切換。MHA會(huì)自動(dòng)檢測(cè)mysqld是否在GTID運(yùn)行,如果GTID開啟,MHA就實(shí)現(xiàn)帶GTID的故障切換,如果沒有啟用,MHA就使用基于relay log的故障切換。

3MHA實(shí)現(xiàn)

【 工作流程

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

【 MHA架構(gòu)

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

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

圖片

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

1) masterha_manager

mha啟動(dòng)腳本為masterha_manager,可選參數(shù)為remove_dead_master_conf、manger_log、ignore_last_failover。

masterha_manager主要流程為:

1.調(diào)用MasterMonitor,監(jiān)控MySQL master狀態(tài);

2.發(fā)現(xiàn)master狀態(tài)異常后,調(diào)用MasterFailover進(jìn)行切換;

3.manager通過monitor監(jiān)測(cè)master狀態(tài),一旦獲得返回值,則表明monitor狀態(tài)異常。通過判斷exit_code確定是否應(yīng)切換。

4.檢測(cè)通過后,調(diào)用MasterFailover進(jìn)執(zhí)行切換操作。

具體流程如下:

圖片

2) MasterMonitor

MasterHA_Manager調(diào)用MasterMonitor的main方法對(duì)MySQL進(jìn)行監(jiān)控。

具體流程圖如下:

圖片

核心方法是一個(gè)死循環(huán),不斷調(diào)用wait_until_master_is_dead方法監(jiān)測(cè)主庫狀態(tài)。wait_until_master_is_dead方法的返回值中,exit_code有的值有四種,分別是0、1、20、retry。其中只有當(dāng)exit_code=MHA::ManagerConst::MASTER_DEAD_RC,也就是20時(shí),后續(xù)才會(huì)調(diào)用failover方法。

wait_until_master_is_dead方法中,核心方法是調(diào)用wait_until_master_is_unreachable方法并處理其返回值。邏輯關(guān)系如下:

圖片

拿到wait_until_master_is_unreachable的返回值后,會(huì)再次根據(jù)配置文件探活,確認(rèn)主庫連接失敗后,根據(jù)配置文件檢測(cè)slave狀態(tài)和數(shù)量,有合適新主庫后,exit_code返回20,否則返回0或者1。

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

圖片

wait_until_master_is_unreachable調(diào)用MHA::ServerManager對(duì)主庫進(jìn)行實(shí)時(shí)檢測(cè),包括deadservers、aliveservers、aliveslaves等。如果啟用GTID,則檢查binlog server,否則進(jìn)行ssh和slave版本檢測(cè)。

后續(xù)使用MHA::HealthCheck對(duì)主庫進(jìn)行ping檢查。檢查確認(rèn)主庫的確不可達(dá)后,返回func_rc, current_master, ssh_reachable。

4

總結(jié)

MHA 由日本 DeNA 公司 youshimaton 開發(fā),他認(rèn)為在 GTID 環(huán)境下MHA 存在的價(jià)值不大,MHA 最近一次發(fā)版是 2018 年?,F(xiàn)如今使用 MySQL 已離不開 GTID ,無論是從功能、性能角度,還是從維護(hù)角度,GTID 能具備更優(yōu)異的表現(xiàn)。但是無論是什么技術(shù),他的核心原理都是可以自動(dòng)將最新數(shù)據(jù)的Slave提升為新的 Master,然后將所有其他的Slave重新指向新的Master。整個(gè)故障轉(zhuǎn)移過程對(duì)應(yīng)用程序是完全透明的,因此MHA的時(shí)代是值得被大家了解和記憶的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3992

    瀏覽量

    67703
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    897

    瀏覽量

    29192
  • 存儲(chǔ)數(shù)據(jù)

    關(guān)注

    0

    文章

    90

    瀏覽量

    14418
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南

    作為一名運(yùn)維工程師,MySQL數(shù)據(jù)庫優(yōu)化是我們?nèi)粘9ぷ髦凶罹咛魬?zhàn)性的任務(wù)之一。MySQL 8.0作為當(dāng)前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發(fā)揮其潛力,仍需要我們掌握正確的優(yōu)化策略。
    的頭像 發(fā)表于 07-24 11:48 ?519次閱讀

    MySQL數(shù)據(jù)備份與恢復(fù)策略

    數(shù)據(jù)是企業(yè)的核心資產(chǎn),MySQL作為主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)的安全性和可靠性至關(guān)重要。本文將深入探討MySQL的數(shù)據(jù)備份策略、常用備份工具以及數(shù)據(jù)恢復(fù)的最佳實(shí)踐,幫助運(yùn)維工程師構(gòu)建完善的數(shù)據(jù)保護(hù)體系。
    的頭像 發(fā)表于 07-14 11:11 ?455次閱讀

    企業(yè)級(jí)MySQL數(shù)據(jù)庫管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫,承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)與處理。作為數(shù)據(jù)庫管理員(DBA),掌握MySQL的企業(yè)級(jí)部署、優(yōu)化、維護(hù)技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),系統(tǒng)闡述MySQL在企業(yè)環(huán)
    的頭像 發(fā)表于 07-09 09:50 ?495次閱讀

    介紹三種常見的MySQL高可用方案

    在生產(chǎn)環(huán)境中,為了確保數(shù)據(jù)庫系統(tǒng)的連續(xù)可用性、降低故障恢復(fù)時(shí)間以及實(shí)現(xiàn)業(yè)務(wù)的無縫切換,高可用(High Availability, HA)方案至關(guān)重要。本文將詳細(xì)介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?981次閱讀

    MySQL數(shù)據(jù)庫是什么

    MySQL數(shù)據(jù)庫是一種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)存儲(chǔ)、管理和操作,廣泛應(yīng)用于Web
    的頭像 發(fā)表于 05-23 09:18 ?896次閱讀

    除了增刪改查你對(duì)MySQL還了解多少

    我們都知道MySQL服務(wù)器的默認(rèn)端口為3306,之后就在這個(gè)端口號(hào)上等待客戶端進(jìn)程進(jìn)行連接(MySQL服務(wù)器會(huì)默認(rèn)監(jiān)聽3306端口)。
    的頭像 發(fā)表于 04-14 17:20 ?501次閱讀

    從Delphi、C++ Builder和Lazarus連接到MySQL數(shù)據(jù)庫

    ? 從 Delphi、C++ Builder 和 Lazarus 連接到 MySQL 數(shù)據(jù)庫 MySQL 數(shù)據(jù)訪問組件(MyDAC)是一個(gè)組件庫,提供從 Delphi 和 C++ Builder
    的頭像 發(fā)表于 01-20 13:47 ?1296次閱讀
    從Delphi、C++ Builder和Lazarus連接到<b class='flag-5'>MySQL</b>數(shù)據(jù)庫

    使用插件將Excel連接到MySQL/MariaDB

    使用插件將 Excel 連接到 MySQL/MariaDB 適用于 MySQL 的 Devart Excel 插件允許您將 Microsoft Excel 連接到 MySQL 或 MariaDB
    的頭像 發(fā)表于 01-20 12:38 ?1116次閱讀
    使用插件將Excel連接到<b class='flag-5'>MySQL</b>/MariaDB

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)庫

    適用于 MySQL 和 MariaDB 的 Python 連接器 Python Connector for MySQL 是一種可靠的連接解決方案,用于從 Python 應(yīng)用程序訪問 MySQL
    的頭像 發(fā)表于 01-17 12:18 ?836次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的Python連接器:可靠的<b class='flag-5'>MySQL</b>數(shù)據(jù)連接器和數(shù)據(jù)庫

    適用于MySQL和MariaDB的.NET連接器

    支持 ORM 的適用于 MySQL 和 MariaDB 的 .NET 連接器 dotConnect for MySQL 是一種高性能 ADO.NET 數(shù)據(jù)提供程序,可在開發(fā) MySQL 的應(yīng)用程序
    的頭像 發(fā)表于 01-16 14:17 ?784次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的.NET連接器

    MySQL數(shù)據(jù)庫的安裝

    MySQL數(shù)據(jù)庫的安裝 【一】各種數(shù)據(jù)庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL
    的頭像 發(fā)表于 01-14 11:25 ?842次閱讀
    <b class='flag-5'>MySQL</b>數(shù)據(jù)庫的安裝

    windows服務(wù)器備份mysql腳本

    osimport reimport datetimeimport subprocess## 需要備份數(shù)據(jù)庫的登錄信息mysql_host = { 'test': '10.10.3.207'}db_user
    的頭像 發(fā)表于 01-02 09:14 ?663次閱讀

    華為云 Flexus X 實(shí)例 MySQL 性能加速評(píng)測(cè)及對(duì)比

    目錄 前言 1 一、Flexus 云服務(wù)器 X 介紹 1 1.1 Flexus 云服務(wù)器 X 實(shí)例簡(jiǎn)介 1 1.2 Flexus 云服務(wù)器 X 實(shí)例特點(diǎn) 2 1.3 Flexus 云服務(wù)器 X 實(shí)例
    的頭像 發(fā)表于 12-25 17:10 ?837次閱讀
    華為云 Flexus X 實(shí)例 <b class='flag-5'>MySQL</b> 性能加速評(píng)測(cè)及對(duì)比

    云服務(wù)器 Flexus X 實(shí)例 MySQL 應(yīng)用加速測(cè)試

    文章目錄 目錄 文章目錄 ? 購買配置 ? 基本配置參考如下: ? 連接服務(wù)器 ? 查詢MySQL狀態(tài) ? 啟動(dòng)MySQL ? 添加配置 ? 添加密碼并修改權(quán)限 ? 性能測(cè)試 ? C#插入數(shù)據(jù)測(cè)試
    的頭像 發(fā)表于 12-24 12:19 ?784次閱讀
    云服務(wù)器 Flexus X 實(shí)例 <b class='flag-5'>MySQL</b> 應(yīng)用加速測(cè)試

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫故障: Mysql數(shù)據(jù)庫表記錄丟失。 Mysql數(shù)據(jù)庫故障表現(xiàn): 1、Mysql數(shù)據(jù)庫表中無任何數(shù)據(jù)或只有部分?jǐn)?shù)據(jù)。 2、客戶端無法查詢到完整的信息。
    的頭像 發(fā)表于 12-16 11:05 ?978次閱讀
    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—<b class='flag-5'>Mysql</b>數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復(fù)流程