MySQL + MHA高可用 :一主多从的好东西

Table of Contents

1. MHA介绍

1.1 MHA软件组成

1.2 MHA工作原理

1.3 MHA工具

2. MySQL + MHA高可用

2.1 实验环境

2.2 配置主从复制

2.2.1 修改配置文件

2.2.2 安全初始化

2.3 测试

2.4 配置MHA

2.4.1 安装mha-node(所有节点)

2.4.2 安装mha-manager(管理节点) 

2.4.3 管理节点配置免密登陆

2.4.4 配置mha

2.5 测试

2.5.1 手动切换

2.5.2 自动切换


1. MHA介绍

MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件。它能够在短时间内完成故障切换,并最大程度的保证数据的一致性来达到真正的高可用。

1.1 MHA软件组成

MHA包含两个部分:MHA Manager(管理节点)和MHA Node(数据节点)

  • MHA Manager可以单独部署在一台独立的机器上来管理多个master-slave集群,也可以部署在一台slave节点上
  • MHA Node运行在每台MySQL服务器上
  • MHA Manager会定时探测集群中master节点,当检测到master节点出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave节点重新指向新的master
  • MHA配合半同步复制使用可以最大限度的保证数据安全性

1.2 MHA工作原理

1.3 MHA工具

Manager工具:

masterha_check_ssh            # 检查MHA的SSH配置状况,MHA强烈依赖ssh秘钥验证
masterha_check_repl           # 检查MySQL复制状况
masterha_manager              # MHA主程序
masterha_check_status         # 检测当前MHA运行状态
masterha_master_monitor       # 检测master是否宕机
masterha_master_switch        # 手动控制故障转移
masterha_conf_host            # 添加或删除配置的server信息
masterha_stop                 # MHA关闭工具

Node工具:

save_binary_logs          # 保存和复制master的二进制日志
apply_diff_relay_logs     # 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog        # 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs          # 清除中继日志(不会阻塞SQL线程)

2. MySQL + MHA高可用

2.1 实验环境

node1:192.168.1.11 node节点

node2:192.168.1.12 node节点

node3:192.168.1.13 node节点

node4:192.168.1.14 manager节点

2.2 配置主从复制

一定要注意保证实验环境纯净~

2.2.1 修改配置文件

node1: 

node2:

node3: 

由于我们所有的节点都可能切换成master节点,因此配置文件中我们添加log_slave_updates工具。方便MHA完成主从切换,在主节点出现故障时,从节点升级为主节点。

2.2.2 安全初始化

node1:

  • 查看临时密码 
cat /var/log/mysqld.log | grep password

  • 更改密码,创建复制用户并授权
alter user root@localhost identified by 'Du@961028';                           # 更改密码
grant replication slave on *.* to dsd@'192.168.1.%' identified by 'Du@961028'; # 创建复制用户并授权

node2:

  • 查看临时密码,并更改密码 

  • 在从节点更改主节点信息

  • 开启主从复制,并查看主从复制状态 

node3与node2操作一致,这里就不做赘余。 

2.3 测试

  • 主节点创建数据库
CREATE DATABASE test;

  • node2和node3从节点查看数据库

没有问题。到这里, 我们的主从复制就已经配置完成了~

2.4 配置MHA

下载地址:

https://github.com/yoshinorim/mha4mysql-manager/releases
https://github.com/yoshinorim/mha4mysql-node/releases
https://centos.pkgs.org/

下载文件:(mysql MHA CentOS7相关依赖包和manager、node管理工具)

2.4.1 安装mha-node(所有节点)

2.4.2 安装mha-manager(管理节点) 

2.4.3 管理节点配置免密登陆

  • 生成密钥

  • 配置免密

注:这里是所有节点之间都要互相免密

2.4.4 配置mha

node4管理节点:

  • 建立mha工作目录并编辑配置文件
mkdir /etc/masterha
cd /etc/masterha/
vim mastermha.cnf

  • 检测ssh的连通性
masterha_check_ssh --conf=/etc/masterha/masterha.cnf

  • 检测权限
masterha_check_repl --conf=/etc/masterha/masterha.cnf

可以看到,错误提示告知我们没有权限去访问,那么我们就要对其进行授权

  • node1授权
grant all on *.* to root@'192.168.1.%' identified by 'Du@961028';

  • 再次检测权限

  • 查看当前mha状态
masterha_check_status --conf=/etc/masterha/masterha.cnf

2.5 测试

2.5.1 手动切换

  • 关闭node1的mysqld,在node4操作

masterha_master_switch --master_state=dead --conf=/etc/masterha/masterha.cnf --dead_master_host=node1 --dead_master_port=3306 --new_master_host=node2 --new_master_port=3306

提示node1已经dead,询问是否切换

询问是否将主节点从node1切换为node2

切换成功

  • 在node3查看当前主节点

主节点已经切换成node2~实验成功

  • 开启node1的mysqld,并设置为node2的从节点

2.5.2 自动切换

  • node4后台监控
nohup masterha_manager --conf=/etc/masterha/masterha.cnf &>/dev/null &

  • 删除手动切换生成的文件
rm -rf masterha.failover.complete
  • 手动停止node2,并在node4进程查看

  • 在node3查看切换状态 

  • 查看node1状态,很明显已经成功切换为主节点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值