Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群

文章目录

  • 前言
  • 一、MHA的组成和特点
    • 组成
    • 特点
  • 二、搭建MHA架构
    • 1 每个服务器开启日志和创建软连接
    • 2 配置主从复制
    • 3 测试主从复制
    • 数据库授权
  • 三 搭建MHA架构
    • 设置ssh免交互
    • 配置MHA
  • 四 故障恢复

前言

MHA是一套解决单点故障的高可用的解决方案,目前在企业中应用最广的容灾机制MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

一、MHA的组成和特点

组成

数据节点(node)
在集群中每台MySQL服务器都是一个数据节点
管理节点(manager)
MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。整个故障转移过程自动执行且效率高

特点

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

二、搭建MHA架构

本架构基于MySQL集群的主从架构 MHA就是管理MySQL集群的架构
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第1张图片

1 每个服务器开启日志和创建软连接

主服务器
在这里插入图片描述
在这里插入图片描述
给MySQL日志和MySQL命令创建软连接 让系统识别命令
在这里插入图片描述

从1服务器
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第2张图片
在这里插入图片描述
从2服务器
在这里插入图片描述
在这里插入图片描述

2 配置主从复制

对服务器授权
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第3张图片
查看主服务器的2进制文件和偏移量
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第4张图片
从1服务器配置
在这里插入图片描述
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第5张图片
从2配置
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第6张图片
这里要注明下 MySQL每次重启后2进制的文件中系统偏移量会变 每次变了就会导致i/o线程关闭 所以就必须要重新配置 重新开启i/o线程。

3 测试主从复制

主创建库
在这里插入图片描述
从1
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第7张图片
从2
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第8张图片
主从复制完成

数据库授权

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第9张图片
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第10张图片
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第11张图片
两个从库设置只读
在这里插入图片描述
在这里插入图片描述

三 搭建MHA架构

安装pele和MHA 每一台都要安装
使用网络源安装

yum install epel-release --nogpgcheck -y

yum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第12张图片
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第13张图片
数据库服务器安装node节点 MHA安装manger节点

tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL

make && make install
tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL

make && make install

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第14张图片masterha_check_ssh 检查 MHA 的 SSH 配置状况
masterha_check_repl 检查 MySQL 复制状况
masterha_manger 启动 manager的脚本
masterha_check_status 检测当前 MHA 运行状态
masterha_master_monitor 检测 master 是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的 server 信息
masterha_stop 关闭manager
在这里插入图片描述
save_binary_logs 保存和复制 master 的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的 slave
filter_mysqlbinlog 去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞 SQL 线程)

设置ssh免交互

manger节点要登录其他三台服务器 数据服务器之间要可以免交互登录
manger节点

ssh-keygen -t rsa
ssh-copy-id 192.168.30.18
ssh-copy-id 192.168.30.15
ssh-copy-id 192.168.30.19

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第15张图片
node节点
从2到从1和主

ssh-keygen -t rsa
ssh-copy-id 192.168.30.18
ssh-copy-id 192.168.30.15

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第16张图片
从1到从2和主

ssh-keygen -t rsa
ssh-copy-id 192.168.30.19
ssh-copy-id 192.168.30.18

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第17张图片
主到2个从

ssh-keygen -t rsa
ssh-copy-id 192.168.30.19
ssh-copy-id 192.168.30.15

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第18张图片

配置MHA

manger脚本复制到bin目录下 查看有四个脚本

cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin
ll /usr/local/bin/scripts/

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第19张图片
master_ip_failover也复制到/usr/local/bin目录

cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

在这里插入图片描述
在这里插入图片描述

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第20张图片
在这里插入图片描述
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第21张图片
测试ssh是否成功

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

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第22张图片
测试健康检查 注意配置文件

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

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第23张图片
开启MHA 后台运行 会有pid号

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 &

在这里插入图片描述
查看主节点是谁 18就为主节点

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

在这里插入图片描述
查看日志

cat /var/log/masterha/app1/manager.log 

Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第24张图片

四 故障恢复

现在master服务器挂了 检测地址会不会漂移
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第25张图片
查看指定的服务器是否漂移
备服务器vip地址已经漂移
Linux运维数据库篇 利用MHA架构搭建高可用的MySQL集群_第26张图片

你可能感兴趣的:(数据库)