MySQL高可用MHA

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: MySQL高可用管理工具(MHA,Master High Availability)是一个用于自动管理MySQL主从复制的工具,它可以提供高可用性和自动故障转移。MHA由原版的MHA工具和MHA Manager组成,它们协同工作以实现自动主从切换和监控。

前言

MySQL高可用管理工具(MHA,Master High Availability)是一个用于自动管理MySQL主从复制的工具,它可以提供高可用性和自动故障转移。MHA由原版的MHA工具和MHA Manager组成,它们协同工作以实现自动主从切换和监控。


MHA的主要功能和特点包括:


1. 自动故障检测和切换:MHA可以监测到主服务器的故障,并自动将一个备用服务器提升为新的主服务器,使数据库服务保持高可用性。


2. 平滑的主从切换:MHA可以确保在进行主从切换时,数据能够以无宕机的方式迁移到新的主服务器,避免数据丢失和应用程序中断。


3. 状态监测和报告:MHA可以监测MySQL主从复制的状态,并提供详细的报告和日志,帮助管理员进行故障诊断和维护。


4. 灵活的配置和管理:MHA提供了灵活的配置选项,可以根据具体需求进行定制。它也提供了命令行工具和Web界面(MHA Manager)来管理和监控MySQL高可用环境。


要使用MHA,通常需要将MHA工具和MHA Manager安装在一个单独的服务器上,该服务器作为MHA的管理节点。MHA Manager负责监听和监控MySQL主从复制环境,并在检测到故障时触发自动故障转移。MHA工具在备库服务器上运行,并负责实际的主从切换和复制管理。


总之,MHA是一个强大的工具,可以帮助实现MySQL数据库的高可用性和自动故障转移。它简化了管理和维护复杂的MySQL主从复制架构,提供了可靠的解决方案,以确保数据库服务在故障发生时能够持续可用。

一、概述


1、概念

MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
MHA 的出现就是解决MySQL 单点的问题。
 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2、组成: 1、MHA manager管理节点

         2、MHA node数据节点(每个节点上都需要安装)


3、特点:

   自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

   使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性

   目前MHA支持一主多从架构,最少三台服务,即一主两从


4、工作原理:

   从宕机崩溃的master 保存二进制日志事件(binlog events);

   识别含有最新的更新slave日志

   应用差异的中继日志(relay log)到其他的slave

   应用从master保存的二进制日志事件

   提升一个slave为新的master

   使其他的slave连接新的master进行复制

二、配置免密、组从复制


一、实验拓扑图

2、首先配置4台主机之间的免密

使用ssh-keygen与ssh-copy-id命令

##在192.168.115.131
ssh-keygen
for i in 132 133 134;do ssh-copy-id root@192.168.115.$i;done
##在192.168.115.132
ssh-keygen
for i in 131 133 134;do ssh-copy-id root@192.168.115.$i;done
##在192.168.115.133
ssh-keygen
for i in 132 131 134;do ssh-copy-id root@192.168.115.$i;done
##在192.168.115.134
ssh-keygen
for i in 132 133 131;do ssh-copy-id root@192.168.115.$i;done
##测试
for i in 132 133 134;do ssh 192.168.115.$i hostname;done

3、配置MySQL的主从


在192.168.115.131 、192.168.115.132 、192.168.115.133上安装mariadb

for i in 131 132 133;do ssh 192.168.115.$i yum install -y mariadb mariadb-server  mariadb;done

配置master192.168.115.131

##配置master
vim  /etc/my.cnf
##在[mysqld]下插入
server-id = 20
log-bin = master-bin
log-slave-updates = true
##启动
systemctl restart mariadb
##创建用户
mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.131' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.133' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.132' identified by '123.com';"
##查看状态,获取在为slave指定master时的所需信息
mysql -e "show master status";

配置slave192.168.115.132 、192.168.115.133

##配置master
vim  /etc/my.cnf
##在[mysqld]下插入
server-id=31
log-bin=master-bin
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
##启动
systemctl restart mariadb
##创建用户
[root@localhost ~]# mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
[root@localhost ~]# mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
[root@localhost ~]# mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.131' identified by '123.com';"
[root@localhost ~]# mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.133' identified by '123.com';"
[root@localhost ~]# mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.132' identified by '123.com';"
##指定主从
[root@localhost ~]# mysql -e "change master to master_host='192.168.115.131',master_user='myslave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=1013;"
##相同方法配置slave2

验证,在master上建立库jx1,来到slave1、slave2查看

slave1 上查看

slave2上查看

三、MHA配置

1、所有节点安装perl环境

yum install epel-release -y
yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-CPAN


2、node:所有节点安装node

   

tar xf mha4mysql-node-0.57.tar.gz

 

cd mha4mysql-node-0.57
        perl Makefile.PL && make && make install

验证

       

cd /usr/local/bin

       看到脚本就OK


3、安装manager

tar xf mha4mysql-manager-0.57.tar.gz
cd /root/mha4mysql-manager-0.57
perl Makefile.PL && make && make install

cp samples/scripts/master_ip_failover /usr/local/bin/
cp samples/scripts/master_ip_online_change     /usr/local/bin/


/

4、脚本说明:

master_ip_failover    //自动切换时 VIP 管理的脚本
master_ip_online_change   // 在线切换时 vip 的管理
power_manager   // 故障发生后关闭主机的脚本
send_report   // 因故障切换后发送报警的脚本


/

5、配置文件建立:

 

mkdir /etc/masterha
    vim /etc/masterha/app1.cnf


6、目录创建

mkdir /var/log/masterha/app1

7、测试MAH

vim /usr/local/bin/master_ip_failover


masterha_check_ssh --conf=/etc/masterha/app1.cnf


masterha_check_repl --conf=/etc/masterha/app1.cnf

8、启动命令

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

启动时masterIP异常:需要工程手动配置VIP

四、测试


测试:停用master的mariadb服务

systemctl stop mariadb

来到slave1查看ip a

此时的slave1成为了master了,在slave1上创建库haohaoxuexi到slave2查看

创建

查看

成功!!

如果想把master修好可以进行以下操作:

修改app1.cnf启动配置:添加master主机配置信息

分别在slave上重新指定master主机及binlog日志同步信息

 


总结

本次实验要注意以下几点:

1、确保各主机之间的通联性,比如开启ssh互相免密;

2、确保主从复制成功建立

3、每台主机都要配置epel环境、node

4、管理设备上安装manger注意脚本中的ip、路径是否正确


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
存储 关系型数据库 MySQL
Mysql高可用|索引|事务 | 调优
Mysql高可用|索引|事务 | 调优
|
5月前
|
SQL 容灾 关系型数据库
rds容灾与高可用
rds容灾与高可用
69 4
|
2月前
|
运维 容灾 关系型数据库
MySQL高可用方案--Xenon全解
MySQL高可用方案--Xenon全解
|
2月前
|
SQL 关系型数据库 MySQL
orchestrator搭建mysql高可用
orchestrator搭建mysql高可用
21 0
|
2月前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
17 0
|
2月前
|
安全 关系型数据库 MySQL
【MySQL】Orchestrator最简单的 mysql 高可用方案最细细细细~
【MySQL】Orchestrator最简单的 mysql 高可用方案最细细细细~
|
4月前
|
运维 容灾 关系型数据库
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
661 3
介绍几种 MySQL 官方高可用方案
|
2月前
|
缓存 关系型数据库 MySQL
MySQL调优秘籍曝光!从索引到事务,全方位解锁高可用秘诀,让你的数据库性能飞起来!
【8月更文挑战第6天】MySQL是顶级关系型数据库之一,其性能直接影响应用的高可用性与用户体验。本文聚焦MySQL的高性能调优,从索引设计到事务管理,逐一解析。介绍如何构建高效索引,如联合索引`CREATE INDEX idx_order_customer ON orders(order_id, customer_id);`,以及索引覆盖查询等技术。
68 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL高可用架构设计:从主从复制到分布式集群
MySQL高可用性涉及主从复制、半同步复制和Group/InnoDB Cluster。主从复制通过二进制日志同步数据,保证故障时可切换。半同步复制确保事务在至少一个从服务器确认后才提交。Group Replication是多主复制,支持自动故障切换。InnoDB Cluster是8.0的集成解决方案,简化集群管理。使用这些技术能提升数据库的稳定性和可靠性。
348 2
|
5月前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
195 9
下一篇
无影云桌面