数据(mysql)MHA高可用配置及故障切换

本文详细介绍了MySQL MHA(Master High Availability)的配置与故障切换过程,包括MHA的组成、特点、工作原理以及主从复制的部署。在故障模拟和修复环节,展示了如何在MHA Manager节点监控、模拟主节点故障,以及故障后的恢复步骤,确保数据库集群的高可用性和数据一致性。
摘要由CSDN通过智能技术生成

目录

一、MHA概述

1、MHA简介

2、MHA的组成

2.1 MHA Node(数据节点)

2.2 MHA Manager(管理节点)

3、MHA 的特点

4、MHA工作原理

5、主从复制有多少种复制方法

二、MySql+MHA部署

1、实验准备

2、Master、Slave1、Slave2 节点上安装 mysql并开启

3、 部署主从复制

3.1 修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf

4、在 Master、Slave1、Slave2 节点上都创建两个软链接 ☆

5、配置MySQL一主两从 

5.1 所有数据库节点进行 mysql 授权

5.2 在 Master 节点查看二进制文件和同步点 

5.3 在 Slave1、Slave2 节点执行同步操作 

5.4 Slave1、Slave2 节点设置为只读模式 

5.5 验证主从同步 

6、配置MHA

6.1 所有服务器上都安装 MHA 依赖的环境

6.2 node数据节点安装

扩展:node组件安装后也会在/usr/local/bin 下面会生成几个脚本

6.3 在manager服务器上安装 manager管理节点

扩展:manager组件安装后在/usr/local/bin下面会生成几个工具

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

7.1 在 manager 节点上配置到所有数据库节点的无密码认证

7.2 在 master 上配置到数据库节点 slave1 和 slave2 的无密码认证 

7.3 在 slave1 上配置到数据库节点 master 和 slave2 的无密码认证 

7.4 在 slave2 上配置到数据库节点 master 和 slave1 的无密码认证

8、在 manager 节点上配置 MHA

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

8.2 复制自动切换时 VIP 管理的脚本到 /usr/local/bin 目录

8.3 修改master_ip_failover脚本 

8.4 创建 MHA 软件目录并复制配置文件

9、在Master服务器上手动开启vip

10、在 manager 节点上测试 ssh 无密码认证 

11、在 manager 节点上测试 mysql 主从连接情况

12、在 manager 节点上启动 MHA 

12.1 查看 MHA 状态,可以看到当前的 master 

12.2 查看 MHA 日志,可以看到当前的 master

12.3 如果要关闭 manager 服务

三、故障模拟

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

2、模拟master节点故障关闭服务

3、查看manager节点动态日志 

4、故障切换备选主库的算法

四、故障修复

1、修复原master节点

2、修复主从

3、在 manager 节点上修改配置文件app1.cnf

3.1 执行一次漂移主master就会删除需要手动添加

3.2 再把这个记录添加进去,因为它检测掉失效时候会自动消失

4、在 manager 节点上启动 MHA 

总结

1、mha

2、mha的故障问题


一、MHA概述

1、MHA简介

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,MHA是由日本人开发,是一套优秀的MySQL故障切换和主从复制的高可用软件
① 在MySQL故障切换的过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作

② 在进行故障切换的过程中,MHA能够最大程度上保证数据库的一致性,以达到真正意义上的高可用
③ MHA由perl语言编写,该工具仅仅使用于MySQLReplication环境,目的在于维持Master主库的高可用性

2、MHA的组成

MHA由两部分组成:管理节点(MHA manager)和数据节点(MHA Node)两部分组成
MHA manager 可以单独部署在一台服务器上,可以部署在一台slave上面
了解:主从复制架构:主从复制(一主多从);MHA架构(多主多从);MMM架构(3主多从)

2.1 MHA Node(数据节点)

MHA Node运行在每台Mysql服务器上

2.2 MHA Manager(管理节点)

① MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。
② MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。
③ 整个故障转移过程对应用程序完全透明。

3、MHA 的特点

① 自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
② 使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性
③ 目前MHA支持一主多从架构,最少三台服务,即一主两从
MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性

4、MHA工作原理

MHA Manger管理多组主从复制。

MHA工作原理总结如下:

① 从宕机崩溃的master保存二进制日志事件(binlog events) ;
② 识别含有最新的更新slave日志
③ 应用差异的中继日志(relay log)到其他的slave
④ 应用从master保存的二进制日志事件
⑤ 提升一个salve为新的master
⑥ 使其他的slave连接行的master进行复制。

5、主从复制有多少种复制方法

总共有三种:同步、半同步、异步

异步: 在主从架构中加入当客户端发送了一条update语句,主服务器上I/O 线程将二进制日志写入到binlog文件之后就返回客户端结构,不管从服务器是否已经同步到了自己的relay-log(中继日志中)。

优点:性能是最好的。
缺点:主服务器宕机,容易造成数据不一致,mysql中默认的就是异步复制
同步: 也称全同步,当主服务器完成更新,并且同步到所有从服务器才会返回成功结果。

优点:安全
缺点:效率低,影响性能。
半同步: 将两个方法折中,当主服务器完成更新,至少有一个从服务器接收到并完成更新,主服务器就返回成功。

二、MySql+MHA部署

MHA高可用是基于主从复制的基础上进行安装部署一台新的MHA manager服务器,该服务器用来监控master服务器,当master服务器出现故障时,它可以自动将最新的数据的slave提升为master(或者可指定直接新的master)。然后其它的 slave重新指向新的master。

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

1、实验准备

主机 IP地址
MHA manager 192.168.100.50
Master 192.168.100.20
Slave1 192.168.100.30
Slave2 192.168.100.40

2、Master、Slave1、Slave2 节点上安装 mysql并开启

netstat -natp | grep 3306

3、 部署主从复制

3.1 修改 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

[mysqld]
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

[mysqld]
server-id = 3                         #三台服务器的 server-id 不能一样
relay-log = relay-log-bin    #开启中继日志
relay-log-index = slave-relay-bin.index   #当服务器故障,从主服务器获得二进制文件

systemctl restart mysqld

4、在 Master、Slave1、Slave2 节点上都创建两个软链接 

将mysql命令和日志软链接到/usr/sbin,便于系统识别

#第一个是mysql命令 
#第二个mysqlbinlog是节点恢复
ln -s /usr/local/mysql/bin/mysql /usr/sbin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin

ll /usr/sbin

5、配置MySQL一主两从 

5.1 所有数据库节点进行 mysql 授权

mysql -uroot -p

#授权 ##允许myslave用户在192.168.100.0网段使用密码123456登录到本机
grant replication slave on *.* to 'myslave'@'192.168.100.%' identified by '123456';        

#授权mha用户在192.168.100.0网段使用密码manager登录到本机

grant all privileges on *.* to 'mha'@'192.168.100.%' identified by 'manager';      

#防止从库通过主机名连接不上主库再次进行授权

grant all privileges on *.* to 'mha'@'master' identified by 'manager';                
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';
flush privileges;  刷新权限

注意(报错):给从服务器授权时,可能会出现密码不符合当前策略要求 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
您的密码不符合当前策略要求

解决方法:
在数据库配置文件中添加一行,关闭密码策略

vim /etc/my.cnf 末行加入

validate_password=off

5.2 在 Master 节点查看二进制文件和同步点 

主服务中查看二进制文件及偏移量 

show master status;

5.3 在 Slave1、Slave2 节点执行同步操作 

reset slave; 删除之前的主从复制

change mamaster_host='192.168.100.20', master_user='myslave',

master_password='123456',master_log_file='master-bin.000003',

master_log_pos=1747;

start slave; 开启主从复制

show slave status\G #查看 Slave 状态
//确保 IO 和 SQL 线程都是 Yes,代表同步正常。
Slave_IO_Running: Yes                #负责与主机的io通信
Slave_SQL_Running: Yes                #负责自己的slave mysql进程

5.4 Slave1、Slave2 节点设置为只读模式 

set global read_only=1;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值