MySQL 主从复制中 MHA 工具的研究与实践

MySQL 主从复制中 MHA 工具的研究与实践

    • 一、MHA 工具简介
    • 二、MHA 的工作原理
    • 三、MHA 配置步骤
      • 环境准备
        • 1. 在主服务器上配置主从复制
        • 2. 在从服务器上配置复制
      • 安装 MHA 工具
        • 1. 安装必要的依赖包
        • 2. 下载并安装 MHA
      • 配置 MHA
        • 1. 创建 MHA 配置文件
        • 2. 配置 SSH 免密登录
      • 测试 MHA
        • 1. 检查配置
        • 2. 启动 MHA 管理器
        • 3. 模拟主服务器故障
    • 四、实现高可用性的关键要点
    • 五、实际应用中的注意事项

在 MySQL 主从复制架构中,MHA (Master High Availability) 工具提供了高效的主从切换方案,从而大大提高了数据库的高可用性。以下是关于 MHA 工具的详细介绍和实践步骤,包括具体操作命令和源代码示例。

在此之前需要配置Mysql主从复制的环境,推荐文章:Mysql的主从复制-您数据库安全的保障

一、MHA 工具简介

MHA 是一套用于管理 MySQL 主从复制的开源工具,主要用于在主服务器故障时,自动进行故障转移和主从切换,以确保数据库服务的持续可用。

二、MHA 的工作原理

MHA 会监控主服务器的状态,当检测到主服务器故障时,它会按照以下步骤进行操作:

  1. 从众多从服务器中选择一个最新的作为新的主服务器。
  2. 应用从故障主服务器上保存的二进制日志到新的主服务器,以保证数据的一致性。
  3. 更新其他从服务器的配置,使其指向新的主服务器。

三、MHA 配置步骤

环境准备

至少需要三台 MySQL 服务器(1 主 2 从或更多)。

  • 安装 MySQL
  • 配置主从复制
1. 在主服务器上配置主从复制

编辑 MySQL 配置文件 (my.cnf):

[mysqld]
server-id=1
log-bin=mysql-bin

重启 MySQL 服务:

sudo systemctl restart mysql

在 MySQL 中创建复制用户:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
2. 在从服务器上配置复制

编辑 MySQL 配置文件 (my.cnf):

[mysqld]
server-id=2
relay-log=relay-bin

重启 MySQL 服务:

sudo systemctl restart mysql

配置从服务器指向主服务器:

CHANGE MASTER TOMASTER_HOST='master_host',MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=4;
START SLAVE;

安装 MHA 工具

1. 安装必要的依赖包
sudo apt-get update
sudo apt-get install -y perl libdbi-perl libdbd-mysql-perl libio-socket-ssl-perl libconfig-tiny-perl
2. 下载并安装 MHA
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-node_0.58-0_all.deb
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager_0.58-0_all.deb
sudo dpkg -i mha4mysql-node_0.58-0_all.deb
sudo dpkg -i mha4mysql-manager_0.58-0_all.deb

配置 MHA

1. 创建 MHA 配置文件

在 MHA 管理节点上创建配置文件 (/etc/mha.cnf):

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
user=root
password=yourpassword
ssh_user=root
repl_user=repl
repl_password=password
ping_interval=1[server1]
hostname=master_host[server2]
hostname=slave1_host[server3]
hostname=slave2_host
2. 配置 SSH 免密登录

在管理节点生成 SSH 密钥:

ssh-keygen -t rsa

将公钥复制到各 MySQL 服务器:

ssh-copy-id root@master_host
ssh-copy-id root@slave1_host
ssh-copy-id root@slave2_host

测试 MHA

1. 检查配置
masterha_check_ssh --conf=/etc/mha.cnf
masterha_check_repl --conf=/etc/mha.cnf
2. 启动 MHA 管理器
masterha_manager --conf=/etc/mha.cnf
3. 模拟主服务器故障

停止主服务器 MySQL 服务:

sudo systemctl stop mysql

检查 MHA 切换:

tail -f /var/log/masterha/app1/manager.log

四、实现高可用性的关键要点

  1. 监控的准确性: 确保对主服务器状态的监控准确及时,避免误判。
  2. 从服务器的同步状态: 选择最新的从服务器作为新主,以减少数据丢失。
  3. 配置的合理性: 包括网络配置、服务器资源配置等,以保证切换过程的顺畅。

五、实际应用中的注意事项

  1. 网络延迟: 低延迟的网络环境有助于提高切换的效率和准确性。
  2. 数据一致性: 在切换后,需要进一步检查数据的一致性,以确保业务的正常运行。
  3. 定期测试: 定期模拟故障进行切换测试,以验证 MHA 的有效性和稳定性。

通过合理配置和运用 MHA 工具,我们能够在 MySQL 主从复制架构中实现高效的主从切换,大大提高数据库的高可用性,为业务的稳定运行提供坚实的保障。

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

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

相关文章

vue-router 源码分析——8.重定向

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行: 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时…

python连接clickhouse,UnexpectedPacketFromServerError: Code: 102

安装驱动 pip install clickhouse-driver本地环境 python Python 3.8.8 clickhouse-driver 0.2.8 clickhouse server 20.3https://github.com/mymarilyn/clickhouse-driver https://clickhouse-driver.readthedocs.io/en/latest/installation.html from clickhouse_driver i…

基于Spring Boot框架的EAM系统设计与实现

摘 要:文章设计并实现一个基于Spring Boot框架的EAM系统,以应对传统人工管理模式存在的低效与信息管理难题。系统利用Java语言、JSP技术、MySQL数据库等技术栈,构建了一个B/S架构的高效管理平台,提升了资产管理的信息化水平。该系…

如何在Java中实现PDF生成

如何在Java中实现PDF生成 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在软件开发和企业应用中,生成PDF文档是一项常见的需求。Java作为一种强大…

一个小公司的技术开发心酸事

背景 长话短说,就是在2022年6月的时候加入了一家很小创业公司。老板不太懂技术,也不太懂管理,靠着一腔热血加上对实体运输行业的了解,加上盲目的自信,贸然开始创业,后期经营困难,最终散伙。 自己…

独立站外链的重要性是什么?

独立站外链在提升网站排名和增加流量方面有着重要的作用。简单来说,外链就是从其他网站指向你网站的链接。谷歌和其他搜索引擎会根据这些外链来判断你网站的权威性和相关性。 有了高质量的外链,搜索引擎会更倾向于认为你的网站内容是有价值的&#xff0c…

c++ 附赠课程的知识点记录

(1) 静态变量的赋值 再一个例子: (2) 一般在定义类的赋值运算符函数时, operator ( const A& a ) 函数,应避免自赋值的情况,就是把对象 a 又赋值给 对象a 如同 a a 这样的情况…

如何摆脱反爬虫机制?

在网站设计时,为了保证服务器的稳定运行,防止非法数据访问,通常会引入反爬虫机制。一般来说,网站的反爬虫机制包括以下几种: 1. CAPTCHA:网站可能会向用户显示CAPTCHA,要求他们在访问网站或执行…

空状态页面设计的艺术与科学

空状态界面是用户在网站、APP中遇到的因无数据展示而中断体验的界面,这个界面设计对于解决用户疑惑有着很大的帮助。那么我们应该如何设计空状态界面呢?空状态是指在界面设计中,没有内容或数据时所显示的状态。它可能出现在各种情况下&#x…

CentOS 7 搭建rsyslog日志服务器

CentOS 7 搭建rsyslog日志服务器 前言一、IP地址及主机名称规划1.修改主机名 二、配置rsyslog日志服务器1.安装rsyslog服务2.编辑/etc/rsyslog.conf 文件3.启动并启用rsyslog服务4.验证端口是否侦听 三、在rsyslog日志服务器上配置firewalld防火墙四、配置rsyslog日志客户端1.编…

【代码随想录算法训练营第37期 第三十八天 | LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯】

代码随想录算法训练营第37期 第三十八天 | LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 一、509. 斐波那契数 解题代码C&#xff1a; class Solution { public:int fib(int N) {if (N < 2) return N;return fib(N - 1) fib(N - 2);} };题目链接/文章讲…

刷算法Leetcode---8(二叉树篇)(层序遍历)

前言 本文是跟着代码随想录的二叉树顺序进行刷题并编写的 代码随想录 二叉树的题目较多&#xff0c;就多分了几次写&#xff0c;这是第二篇 第一篇二叉树的文章链接&#xff1a;刷算法Leetcode---7&#xff08;二叉树篇&#xff09;&#xff08;前中后序遍历&#xff09; 这是力…

超实用的VS Code插件推荐

VS Code代码编辑器中提供了丰富的插件&#xff0c;满足不同开发者的需求。这里为大家推荐一些强大的VS Code插件&#xff0c;帮助你打造一个个性化的开发环境&#xff0c;让你的编码体验更加舒适和高效。 打开扩展模块&#xff0c;输入安装包名称&#xff0c;回车进行搜索&…

【WSL】常用命令

文章目录 启动 WSL列出 Linux 发行版安装 Linux 发行版设置默认的 Linux 发行版卸载 Linux 发行版更新 WSL检查 WSL 状态启动和关闭 WSL跨系统文件访问其他命令 Windows Subsystem for Linux (WSL) 提供了一系列命令用于管理 Linux 发行版在 Windows 系统中的运行。下面是一些常…

【Qt之·类QVariant·数据类型】

系列文章目录 文章目录 前言一、概述二、操作及用法1.1 存储数据1.2 获取数据1.3 设置数据1.4 数据类型判断1.5 判断数据是否有效 三、实例演示总结 前言 QVariant是Qt开发中非常重要的一部分&#xff0c;它是Qt的一个核心类&#xff0c;用于处理不同数据类型之间的转换和传递。…

微服务框架Kratos学习笔记

环境配置 export GOPROXYhttps://goproxy.cn export GO111MODULEon go get -u github.com/go-kratos/kratos/tool/kratoskratos 工具安装完成 使用kratos命令创建新项目 kratos new kratos-demo看到这个提示&#xff0c;项目创建完成 go mod tidy 拉取项目依赖 生成所有pro…

保险研究期刊

《保险研究》创刊于1980年&#xff0c;是国家金融监督管理总局主管的学术性保险期刊&#xff0c;是中国保险学会会刊&#xff0c;是中文社会科学引文索引&#xff08;CSSCI&#xff09;来源期刊、中文核心期刊、中国人文社会科学核心期刊、人大“复印报刊资料”重要转载来源期刊…

二、从多臂老虎机看强化学习

二、从多臂老虎机看强化学习 2.1 多臂老虎机问题2.1.1 问题定义2.2.2 问题建模2.2.3 累积懊悔2.2.4 估计期望奖励 2.2 强化学习中的探索与利用平衡2.3 贪心策略2.4 上置信界算法2.5 汤普森采样算法 2.1 多臂老虎机问题 2.1.1 问题定义 在多臂老虎机(mutil-armed bandit, MAB)问…

科研绘图系列:R语言点数图(dot plot)

介绍 点数图(Dot Plot)是一种数据可视化方法,它通过在坐标轴上放置点来展示数据。每个点代表一个数据项,点的位置通常对应于数据值的大小。点数图可以有效地展示多个类别或组的数值比较,使得观察者能够快速识别出哪些类别的数值较高或较低。 加载R包 library(tidyverse…

离线升级docker中的某个镜像——以etcd为例

之前有个项目的程序统一在docker中运行&#xff0c;最近在做安全检查时&#xff0c;发现docker的部分image因为版本没有更新到最新而出现安全漏洞问题。 本贴记录linux环境中&#xff0c;升级docker中某个镜像的步骤&#xff0c;详情如下&#xff1a; 一、生成镜像的步骤&…