当前位置: 首页 > news >正文

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.lryc.cn/news/393172.html

相关文章:

  • Hi3861 OpenHarmony嵌入式应用入门--TCP Server
  • Poker Game, Run Fast
  • 订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
  • Matlab中collectPlaneWave函数的应用
  • Linux系统的基础知识和常用命令
  • 三相异步电动机的起动方法
  • 【LinuxC语言】手撕Http协议之accept_request函数实现(一)
  • Redis Cluster 模式 的具体实施细节是什么样的?
  • 基于大模型的机器人控制
  • 在 PostgreSQL 中,如何处理数据的版本控制?
  • Rust 组织管理
  • vb.netcad二开自学笔记1:万里长征第一步Hello CAD!
  • Vue的学习之数据与方法
  • 刷题——在二叉树中找到最近公共祖先
  • nginx(三)—从Nginx配置熟悉Nginx功能
  • Python轮子:文件比较器——filecmp
  • uni-app组件 子组件onLoad、onReady事件无效
  • leetcode力扣_排序问题
  • 在 .NET 8 Web API 中实现弹性
  • linux下高级IO模型
  • 掌握Mojolicious会话管理:构建安全、持久的Web应用
  • 24西安电子科技大学马克思主义学院—考研录取情况
  • 12--RabbitMQ消息队列
  • VMware替换关键技术:核心业务系统中,访存密集型应用的性能优化
  • [单master节点k8s部署]20.监控系统构建(五)Alertmanager
  • 用MySQL+node+vue做一个学生信息管理系统(四):制作增加、删除、修改的组件和对应的路由
  • 磁盘就是一个超大的Byte数组,操作系统是如何管理的?
  • 14-28 剑和诗人2 - 高性能编程Bend和Mojo
  • Stable Diffusion:最全详细图解
  • Apache Seata分布式事务之Seata-Client原理及流程详解