MySQL之MHA高可用配置及故障切换(图文详解,累到吐血)

本文详细介绍了MHA(Master High Availability)的概述、搭建准备、安装配置以及故障模拟与修复。通过图文结合的方式,展示了如何在MySQL环境中搭建MHA,确保在主节点故障时能自动切换到备用节点,实现数据的一致性和高可用性。
摘要由CSDN通过智能技术生成

目录

一:MHA概述

1.1什么是MHA

1.2MHA的组成

1.2.1MHA node(数据节点)

1.2.2MHA manager(管理节点)

1.3MHA的特点

1.4MHA工作原理总结

二:MHA搭建准备

2.1实验思路

2.2实验准备

三:搭建MySQL+MHA

3.1初始化环境

3.1.1关闭防火墙和增强机制

3.1.2查看是否有mysql

3.2配置主从复制

3.2.1修改 Master、Slave1、Slave2 节点的主机名 

3.2.2在master、slave1、slave2添加域名解析

3.2.3配置主从同步

3.2.4master、Slave1、Slave2 节点上都创建两个软链接

3.2.5登录数据库主从配置授权

3.2.6master 节点查看二进制文件和同步点 、在 slave1、slave2 节点执行同步操作

3.2.7设置两个从节点 只读模式

3.2.8验证主从同步

3.3安装MHA软件

3.3.1 所有服务器上都安装 MHA 依赖的环境,首先安装 epel 源

3.3.2安装 MHA 软件包,先在所有服务器上必须先安装 node 组件

3.3.3在 MHA-manager 节点服务器上安装 manager 组件

3.4在所有服务器上配置无密码认证

3.4.2在 mysql1(192.168.137.20)上配置到数据库节点 mysql2(192.168.137.15)和mysql3(192.168.137.10)的无密码认证 

3.4.3在 mysql2(192.168.137.15)上配置到数据库节点 mysql1(192.168.137.20)和mysql3(192.168.137.10) 的无密码认证 

3.4.4在 mysql3(192.168.137.10) 上配置到数据库节点 mysql1(192.168.137.20)和mysql2(192.168.137.15)的无密码认证 

3.5在manager节点上配置MHA

3.5.1在 manager 节点上复制相关脚本到/usr/local/bin 目录

3.5.2制上述的自动切换时 VIP 管理的脚本到 /usr/local/bin 目录

3.5.3修改master_ip_failover 全部删除,添加以下内容,修改相关参数

3.5.4创建 MHA 软件目录并复制配置文件,使用app1.cnf配置文件来管理 mysql 节点服务器,配置文件一般放在/etc/目录下

3.5.5在master服务器上手动开启vip

3.5.6在 manager 节点上测试 ssh 无密码认证,如果正常最后会输出 successfully

3.5.7在 manager 节点上测试 mysql 主从连接情况,最后出现 MySQL Replication Health is OK 字样说明正常

3.5.8在 manager 节点上启动 MHA

3.6故障模拟

3.6.1在 manager 节点上监控观察日志记录

3.6.2在 master 节点mysql1上停止mysql服务

3.7故障修复

3.7.1修复mysql1

3.7.2修复主从

四:总结

一:MHA概述

1.1什么是MHA

MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件

MHA的出现就是解决MySQL 单点的问题

MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作

MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用

1.2MHA的组成

1.2.1MHA node(数据节点)

MHA node运行在每台mysql服务器上

1.2.2MHA manager(管理节点)

MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上

MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明

1.3MHA的特点

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

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

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

1.4MHA工作原理总结

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

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

应用差异的中继日志(relay log)到其他的slave 达到数据的一致性

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

提升一个slave为新的master

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

二:MHA搭建准备

2.1实验思路

MHA架构 :①数据库安装 ②一主两从 ③MHA搭建

故障模拟: ①主库失效 ②备选主库成为主库 ③原故障主库恢复重新加入到MHA成为从库

2.2实验准备

节点服务器 系统 主机名 IP地址 安装服务及工具
MHA manager节点服务器 CentOS7.4(64 位) manage 192.168.137.30 安装MHA node和manager组件
Master节点服务器 CentOS7.4(64 位) mysql1 192.168.137.20 安装mysql5.7和MHA node组件
Slave1节点服务器 CentOS7.4(64 位) mysql2 192.168.137.15 安装mysql5.7和MHA node组件
Slave2节点服务器 CentOS7.4(64 位) mysql3 192.168.137.10 安装mysql5.7和MHA node组件

三:搭建MySQL+MHA

3.1初始化环境

3.1.1关闭防火墙和增强机制

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.1.2查看是否有mysql

netstat -anpt | grep 3306

3.2配置主从复制

3.2.1修改 Master、Slave1、Slave2 节点的主机名 

#在master上(192.168.137.20)
hostnamectl set-hostname mysql1
bash
 
#在Slave1(192.168.137.15)
hostnamectl set-hostname mysql2
bash
 
#在Slave2(192.168.137.10)
hostnamectl set-hostname mysql3
bash

3.2.2在master、slave1、slave2添加域名解析

vim /etc/hosts
192.168.137.20 Mysql1
192.168.137.15 Mysql2
192.168.137.10 Mysql3

3.2.3配置主从同步

修改 master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf
##Master 节点##
vim /etc/my.cnf
[mysqld]
server-id = 1
log_bin = master-bin
log-slave-updates = true
 
systemctl restart mysqld
 
##Slave1 节点##
vim /etc/my.cnf
server-id = 2 						#三台服务器的 server-id 不能一样
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
 
systemctl restart mysqld
 
###Slave2 节点##
vim /etc/my.cnf
server-id = 3 
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
 
systemctl restart mysqld

master服务器上

slave1服务器上

slave2服务器上

3.2.4master、Slave1、Slave2 节点上都创建两个软链接

ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
ls /usr/sbin/mysql*

master服务器上

slave1服务器上

slave2服务器上

3.2.5登录数据库主从配置授权

###master、Slave1、Slave2 节点上都授权###
grant replication slave on *.* to 'myslave'@'192.168.137.%' identified by '123456';
#授权主从用户
grant all privileges on *.* to 'mha'@'192.168.137.%' identified by 'manager';
grant all privileges on *.* to 'mha'@'mysql1' identified by 'manager';
grant all privileges on *.* to 'mha'@'mysql2' identified by 'manager';
grant all privileges on *.* to 'mha'@'mysql3' identified by 'manager';

刷新数据库
flush privileges;

master服务器上

slave1服务器上

slave2服务器上

3.2.6master 节点查看二进制文件和同步点 、在 slave1、slave2 节点执行同步操作

###在master上###
show master status;
 
###在slave1、slave2节点执行同步操作##
change master to master_host='192.168.137.20',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1747;
start slave;
show slave status\G;

master服务器上

show master status;

slave1服务器上

change master to master_host='192.168.137.20',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1747;
start slave;
show slave status\G;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值