MySQL高可用MHA

目录

前言

一、概述

二、配置免密、组从复制

三、MHA配置

四、测试

总结



前言

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、路径是否正确

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。它的出现解决了MySQL单点故障的问题。在MySQL故障切换过程中,MHA能够在0-30秒内自动完成故障切换操作,并且最大程度上保证数据的一致性,实现真正意义上的高可用MHA由多个组件组成,具体包括一个管理节点(manager node)和多个MySQL节点(MySQL nodes)。管理节点负责监控和管理MySQL集群的状态,而MySQL节点用于存储和处理数据。 为了实现MySQL高可用MHA使用了故障切换和主从复制的策略。当主节点出现故障时,MHA会自动切换到备用节点,以保证服务的连续性。切换过程中,MHA会尽量保证数据的一致性,确保新的主节点能够正确处理之前主节点上的数据。 除了故障切换,MHA还提供了其他功能,如故障模拟。通过故障模拟,可以模拟出主节点故障的情况,并观察MHA的行为和日志记录,以验证MHA的可靠性和正确性。 总之,MHA是一套用于MySQL高可用环境下故障切换和主从复制的软件,它能够在故障切换过程中保证数据的一致性,并提供了其他附加功能如故障模拟。通过使用MHA,可以提高MySQL的可用性和稳定性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQLMHA高可用](https://blog.csdn.net/masonyong/article/details/126425191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [数据库中的MHA高可用配置及故障切换](https://blog.csdn.net/Gengchenchen/article/details/113861265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值