深入理解Mysql MHA高可用集群搭建:从实验到实战

1. 简介

MHA(Master High Availability)是一个高效的开源MySQL高可用性解决方案。由日本开发者yoshinorim(前DeNA员工,现在Facebook)创建,MHA支持MySQL的主从复制架构,自动化主节点故障转移。当主节点发生故障,MHA能迅速将最新数据的从节点升级为新主节点。这个过程中,MHA从其他从节点获取额外信息,确保数据一致性。MHA还能在线切换主节点,按需调整主从节点关系。它已被证明是一个成熟的MySQL高可用方案,能在30秒内完成故障切换,并最大限度地保证数据一致性。值得一提的是,淘宝也在开发一个类似的产品TMHA,目前支持一主一从架构。

2. MHA服务

MHA服务包括两种角色:MHA Manager(管理节点)和MHA Node(数据节点)。

  • MHA Manager:通常部署在一台独立的机器上,管理多个master/slave集群,每个集群称为一个application。它负责整个集群的管理和协调。
  • MHA Node:安装在每台MySQL服务器(无论是master、slave还是manager)上。它负责监控、解析日志和加快故障恢复的过程。

工具与功能

MHA提供了一系列工具,分布在Manager节点和Node节点上:

  • Manager节点工具
    • masterha_check_ssh:检测SSH环境。
    • masterha_check_repl:检测MySQL复制环境。
    • masterha_manager:MHA的主服务程序。
    • masterha_check_status:探测MHA运行状态。
    • masterha_master_monitor:监测MySQL主节点可用性。
    • masterha_master_switch:切换主节点的工具。
    • masterha_conf_host:添加或删除配置节点。
    • masterha_stop:关闭MHA服务的工具。
  • Node节点工具:(这些通常由Manager的脚本触发,无需手动操作)
    • save_binary_logs:保存并复制主节点的二进制日志。
    • apply_diff_relay_logs:识别并应用差异中继日志事件。
    • purge_relay_logs:清除中继日志。
  • 自定义扩展
    • secondary_check_script:通过多网络路由检测主节点可用性。
    • master_ip_failover_script:更新应用程序使用的master IP。
    • report_script:发送报告。
    • init_conf_load_script:加载初始配置参数。
    • master_ip_online_change_script:更新主节点IP地址。

工作原理

MHA的工作原理可以概括为以下几个步骤:

  1. 从故障的master节点保存二进制日志事件(binlog events)。
  2. 识别拥有最新更新的slave节点。
  3. 将差异的中继日志(relay log)应用到其他slave节点。
  4. 应用从master节点保存的二进制日志事件。
  5. 提升一个slave节点为新master。
  6. 使其他slave节点开始复制新master的数据。

3.MySQL Replication 环境的实验配置

3.1 准备实验 MySQL Replication 环境

3.1.1 相关配置

在本实验中,我们将设置一个包含四个节点的 MySQL Replication 环境,运行于 CentOS 7.3 系统。MHA (Master High Availability) 对 MySQL 复制环境有特定的配置需求,例如:

  • 所有节点必须开启二进制日志(bin-log)和中继日志(relay-log)。
  • 从节点(Slave)需设置为只读模式(read-only)。
  • 关闭中继日志自动清理功能(relay_log_purge)。

节点配置如下:

  • Manager (192.168.37.111): 作为控制器,负责监控和管理。
  • Master (192.168.37.122): 数据库主服务器。配置了 bin-log 和 relay-log,关闭了 relay_log_purge。
  • Slave1Slave2 (192.168.37.133 和 192.168.37.144): 数据库从服务器。与 Master 相同的日志配置。

为方便操作,我们在所有节点的 /etc/hosts 文件中添加了对应的域名解析配置。

3.1.2 主节点(Master)的初始配置

对于主节点 Master 的数据库配置,我们进行以下设置:

  • 设置 server-id 为 1,以保证集群中节点 ID 的唯一性。
  • 开启二进制日志(log-bin)和中继日志(relay-log)。
  • 关闭名称解析(skip_name_resolve,非必须)。

完成配置后,重启 MariaDB 服务以应用更改。

3.1.3 从节点(Slave)的配置

对于两个从节点 Slave,我们进行以下操作:

  • 设置唯一的 server-id(2 和 3)。
  • 开启中继日志(relay-log)和二进制日志(log-bin)。
  • 启用只读模式(read_only)和日志更新(log_slave_updates)。
  • 根据需要设置中继日志清理(relay_log_purge)。
  • 可选关闭名称解析(skip_name_resolve)。

每次配置更改后,重启 MariaDB 服务以应用设置。

3.1.4 配置一主多从复制架构

在 Master 节点上,我们配置了权限以允许 Slave 连接和复制。具体命令包括授予复制权限和显示 Master 状态。

在每个 Slave 节点上,我们设置了连接到 Master 的参数,启动了复制服务,并检查了复制状态。

以上步骤完成了 MySQL Replication 环境的基本配置。

3.2 安装配置MHA

3.2.1 在Master节点进行授权
  • 目标:在所有MySQL节点中授权一个具有管理权限的用户,以便在本地网络中远程访问其他节点。
  • 操作:在Master节点运行SQL语句授权。
    • 示例命令grant all on *.* to 'mhaadmin'@'192.168.%.%' identified by 'mhapass';
3.2.2 准备SSH互通环境
  • 目的:在MHA集群中,各节点需要通过SSH互信通信来实现远程控制和数据管理。
  • 步骤
    1. 在Manager节点生成密钥对。
    2. 设置Manager节点可以远程连接本地主机。
    3. 将私钥文件和authorized_keys文件复制给所有其他节点。
    4. 在所有节点上进行上述操作。
    5. 验证所有节点的SSH无密码互通。
3.2.3 安装MHA包
  • 操作:在Manager节点和其他节点上安装MHA包。
      • 所有节点:mha4mysql-node-0.56-0.el6.norch.rpm
      • Manager节点额外安装:mha4mysql-manager-0.56-0.el6.noarch.rpm
    • 安装方法:使用rz命令上传包,然后使用yum进行安装。
3.2.4 初始化MHA,进行配置
  • 配置文件:Manager节点为每个监控的master/slave集群提供专用配置文件。
  • 文件位置:全局配置文件位于/etc/masterha_default.cnf,或者通过application的配置提供。
3.2.5 定义MHA管理配置文件
  • 步骤:在MySQL主节点上为MHA创建管理用户,以便于后续使用。
  • 配置:创建/etc/mha_master目录并编写mha.cnf文件,配置包括管理用户、密码、工作目录等。
3.2.6 对四个节点进行检测
  • SSH互信通信检测:在Manager机器上运行命令检测SSH连接。
  • MySQL复制集群连接配置检测
    • 使用masterha_check_repl命令检查。
    • 如有错误,可能需在master节点上创建从节点账号。
    • 再次运行检测命令以验证配置。

总结

此文档详细介绍了MHA的安装配置过程,包括授权、SSH互通设置、MHA包安装、配置文件定义和系统检测。这些步骤确保了MHA集群的正确安装和高效运行。

3.3 启动 MHA

在 manager 节点上执行以下命令来启动 MHA:

nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &

启动成功后,检查 master 节点的状态:

masterha_check_status -conf=/etc/mha_master/mha.cnf

如果服务正常运行,将显示 mha (pid:7598) is running(0:PING_OK)。要停止 MHA,使用:

masterha_stop -conf=/etc/mha_master/mha.cnf

3.4 测试 MHA 故障转移

  1. 模拟主节点崩溃:在 master 节点关闭 mariadb 服务。

    killall -9 mysqld mysqld_safe rm -rf /var/lib/mysql/*

  2. 查看 manager 节点日志

    tail -200 /etc/mha_master/manager.log

    日志显示 manager 检测到节点故障,并自动将 192.168.37.133 提升为主节点。

3.5 修复复制集群

  1. 准备新的 MySQL 节点:基于 master 节点的备份恢复数据,配置为新的 master 的从节点。
  2. 备份和数据恢复:在新的 master 节点进行备份,将数据恢复到新节点。
  3. 配置主从关系:设置新的主节点和从节点,检查主从状态。

3.6 再次检查操作

  1. 使用 masterha_check_repl 检查复制状态。
  2. 如果无误,重新启动 manager 并查看状态:

    masterha_manager -conf=/etc/mha_master/mha.cnf > /etc/mha_master/manager.log 2>&1 & masterha_check_status -conf=/etc/mha_master/mha.cnf

3.7 故障转换恢复注意事项

  1. 备份和手动提升:在从节点上做备份,并将主节点手动提升为从节点。
  2. 配置文件修改:自动转换后,可能需要手动修复主节点并修改配置文件。
  3. 重新运行检测命令:手动修复后,再次运行检测命令以确保恢复成功。

以上步骤详细介绍了如何启动和管理 MHA,以及在出现问题时的故障排查和修复流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流

目录 TCP的通信机制的核心特性 七、延时应答 1)什么是延时应答? 2)延时应答的作用 八、捎带应答 1)什么是捎带应答? 2)捎带应答的作用 九、面向字节流 1)沾包问题 2)“沾包…

JavaSE基础50题:28.(数组练习)冒泡排序

概述 给定一个整型数组,实现冒泡排序。 如:给一组数组{5,10,8,3,7}进行冒泡排序。 j一直往下走,和下一个数字进行比较,如果当前数字大于下一个数字,则两个数字交换&…

【Java干货教程】JSON,JSONObject,JSONArray类详解

一、定义 JSON:就是一种轻量级的数据交换格式,被广泛应用于WEB应用程序开发。JSON的简洁和清晰的层次结构,易于阅读和编写;同时也易于机器解析和生成,有效的提升网络传输效率;支持多种语言,很多…

ERROR: No matching distribution found for torch==2.0.1解决方案

大家好,我是水滴~~ 本文主要介绍在安装 stable-diffusion-webui 时出现的 ERROR: No matching distribution found for torch2.0.1 问题的解决方案,希望能对你有所帮助。 《Python入门核心技术》专栏总目录・点这里 文章目录 问题描述解决方案离线安装 …

PostgreSQL 数据库归档最近被问及的问题问题 与 4 毋 处世学

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1790人左右 1 2 3 4 5&#xff0…

小型企业成为网络犯罪分子获取数据的目标

在过去十年的大部分时间里,网络犯罪的巨额资金来自针对大型组织的勒索软件攻击。这种威胁仍然存在。但犯罪分子可能会将注意力转向中小企业 (SMB)。这对消费者的影响将是巨大的。 将软件即服务 (SaaS) 技术用于核心业务功能继续将中小企业整合到全球供应链中。由于…

Chatgpt如何共享可以防止封号!

ChatGPT 是一个基于 GPT-3.5/GPT-4 模型的对话系统,它主要用于处理自然语言对话。通过训练模型来模拟人类的语言行为,ChatGPT 可以通过文本交流与用户互动。每个新版本的 GPT 通常都会在模型规模、性能和其他方面有一些改进。在目前免费版GPT-3.5 中&…

【第十二课】KMP算法(acwing-831 / c++代码 / 思路 / 视频+博客讲解推荐)

目录 暴力做法 代码如下 KMP算法 不同的next求法-----视频讲解/博客推荐 视频推荐 博客推荐 课本上的方法- prefix的方法- 求next数组思路---next数组存放前缀表的方式 s和p匹配思路 代码如下 暴力做法 遍历s主串中每一个元素,如果该元素等于模板串p中…

数据智慧:C#中编程实现自定义计算的Excel数据透视表

前言 数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总、分析和展示。它可以帮助用户从原始数据中提取关键信息、发现模式和趋势,并以可视化的方式呈现。 在数据透视表中,数据分析师通常希望进…

Vue使用Element table表格格式化GMT时间为Shanghai时间

Vue使用Element表格格式化GMT时间为Shanghai时间 说明 阿里巴巴java开发规范规定,数据库必备gmt_create、gmt_modified字段,使用的是GMT时间,在中国使用必然要转换我中国时间。 在阿里巴巴的Java开发规范中,要求每个表都必备三…

智能写作辅助工具有哪些,这4款强烈推荐

智能写作辅助工具是现代写作过程中的必备利器,它们能够提供语法纠错、词汇替换、文本优化等功能,帮助我们提高写作效率和质量。在众多智能写作辅助工具中,以下是四款强烈推荐的中文软件。 推荐一:爱制作AI 一、什么是爱制作AI 爱…

VD6283TX环境光传感器(2)----移植闪烁频率代码

VD6283TX环境光传感器----2.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载参考代码硬件准备开发板设置生成STM32CUBEMX串口配置IIC配置X-CUBE-ALSADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数演示结果 闪烁定义 光学闪烁是指人造光源产生的光…

什么是骨传导耳机?骨传导能保护听力吗?

骨传导耳机是一种非常特殊的蓝牙耳机,它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机,它不通过空气传送声音,而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用,主要是因为它们不…

UniApp小程序使用vant引入vant weapp

HBuilder X里新建项目指路 HBuilderX新建项目 安装node.js指路 安装node.js 1.通过npm安装 查看npm环境 //打开终端输入命令查看版本 npm -version 1.1.右键打开外部终端窗口 1.2.输入npm init -y命令 1.3.通过命令安装 npm i vant/weapp1.3.3 -S --production 1.4.打开工具…

Hive讲课笔记:内部表与外部表

文章目录 一、导言二、内部表1.1 什么是内部表1.1.1 内部表的定义1.1.2 内部表的关键特性 1.2 创建与操作内部表1.2.1 创建并查看数据库1.2.2 在park数据库里创建student表1.2.3 在student表插入一条记录1.2.4 通过HDFS WebUI查看数据库与表 三、外部表2.1 什么是外部表2.2 创建…

鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建

上篇说到,鸿蒙开发目前势头旺盛,头部大厂正在如火如荼地进行着,华为也对外宣称已经跟多个厂商达成合作。目前看来,对于前端或客户端开发人员来说,掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…

idea 插件开发之 HelloWorld

前言 本文使用的 idea 2023.3 版本进行插件入门开发,首先要说明的是 idea 2023 版本及以后的 idea,对插件开发进行了一定程度的变动: 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本(点击查看官网版本对应关系&…

【微服务核心】MyBatis Plus

MyBatis Plus 文章目录 MyBatis Plus1. 简介2. 入门使用3. 核心功能3.1 CRUD 接口3.1.1 Mapper CRUD 接口3.1.2 Service CRUD 接口 3.2 条件构造器3.3 分页插件3.4 Mybatis-Plus 注解 4. 拓展4.1 逻辑删除4.2 MybatisX快速开发插件 5. 插件5.1 [分页插件](#page)5.2 乐观锁插件…

五轴机床测头:高精度曲面检测的得力工具

五轴机床测头广泛应用于制造业中的高精度加工领域。它能够准确、快速地检测出曲面的形状、尺寸和特征,为生产过程中的质量控制提供了重要支持。 五轴机床测头是一款具有3维5向探测功能的红外触发机床测头,广泛应用于 3 轴、5 轴加工中心,以及…

大数据前馈神经网络解密:深入理解人工智能的基石

文章目录 大数据前馈神经网络解密:深入理解人工智能的基石一、前馈神经网络概述什么是前馈神经网络前馈神经网络的工作原理应用场景及优缺点 二、前馈神经网络的基本结构输入层、隐藏层和输出层激活函数的选择与作用网络权重和偏置 三、前馈神经网络的训练方法损失函…