使用MHA对mysql主从架构中的主节点做高可用

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

MHA:Master HA(主从结构的高可用方案)只是实现了对主节点高可用,它是建构在mysql主从复制结构之上的,也就是说需要事先把mysq配置成传统的复制集群。

MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点称为新的master,在此期间,MHA会通过其它从节点获取额外信息来避免一致性方面的问题。MHA还提供了master节点在线切换的功能,即按需切换master/salve节点。


MHA服务有两种角色,MHA Manager(管理节点)和MHA Node(数据节点):

MHA Manager:通常单独部署在一台独立的机器上管理多个master/slave集群,每个master/slave集群称作一个Application;

MHA Node:运行在每台MySQL服务器上(master/slave/manager),它通过监控具备分析和清理logs功能的脚本来加快故障转移。


MySQL复制集群中的master故障时,MHA按如下步骤进行故障转移:

一旦主节点掉线,主节点上会有丢失的事件还没有复制到从节点上,为了避免出现事件丢失而导致数据不一致,MHA会在管理节点上保存一份主节点上二进制日志事件的副本;因此,当主节点掉线后,从管理节点上保存的事件中就能读出所有的事件,并且查找从各从节点中的中继日志中事件指针指向的位置,来判断哪个节点与主节点的事件更接近,并把管理节点本地备份冗余的二进制日志事件读出处理应用在这个最接近的从节点上,使这个从节点与主节点事件同步,并把其它从节点的主节点指向这个被修复的最近从节点,从而提升这个从节点提升了新的主;

为了完成这个功能MHA强依赖与ssh服务;因为它要通过ssh协议从主节点不断读取各种数据,把二进制日志事件同步到本地,以保证主节点掉线本地仍能获取到二进制日志事件;

然后,就在最近的从节点上重放管理节点上的事件,实现拥有与掉线的主节点一样的数据;


实验环境:物理机win7,虚拟机4台centos7

node1:MHA Manager

node2:MariaDB master

node3:MariaDB slave

node4:MariaDB slave


各节点的/etc/hosts文件配置内容添加:

192.168.255.2 node1.stu11.com node1

192.168.255.3 node2.stu11.com node2

192.168.255.4 node3.stu11.com node3

192.168.255.5 node4.stu11.com node4


首先,配置一个msyql主从复制结构:

安装MariaDB5.5,细节略。


在node2:

]# vim /etc/my.cnf

wKioL1da6o2weWrgAABBXd7n6WY607.png

]# systemctl start mariadb.service

查看二进制日志事务的位置:

wKioL1da6tXz0s09AAAqQiQiaqo259.png

注意:一定要在创建拥有复制权限的账号之前查看二进制日志事务的位置:这两个从节点也都需要用到这个复制权限账号,因为它们其中一个都有可能会成为新的主节点;它们也都需要创建一个拥有复制权限的账号被其它节点复制二进制日志;


> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.255.%' IDENTIFIED BY 'replpass';


> FLUSH PRIVILEGES;


在node3:

]# vim /etc/my.cnf

wKioL1da63iBLRLqAABOK3PVbiE285.png

]# systemctl start mariadb.service


> CHANGE MASTER TO MASTER_HOST='192.168.255.3',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000005',MASTER_LOG_POS=245;


>  START SLAVE;

wKioL1da7DuyOn4CAACqaPQW-kw900.png


在node4:

]# vim /etc/my.cnf

wKioL1da7MLBqYKvAABPuQ8ZZUA139.png

]# systemctl start mariadb.service


> CHANGE MASTER TO MASTER_HOST='192.168.255.3',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000005',MASTER_LOG_POS=245;


> START SLAVE;

wKiom1da7K_iZyRlAACiWXQX8s8889.png


以上配置完成mysql的主从复制结构。


在node2:创建一个拥有管理权限的用户账号且能够远程连接;

> GRANT ALL ON *.* TO 'mhauser'@'192.168.255.%' IDENTIFIED BY 'mhapass';

> FLUSH PRIVILEGES;



在node1:

]# ssh-keygen -t rsa -P ''

在一个主机生成密钥对,让其余每个节点都有私钥即可实现相互ssh通信;


设定密钥权限为600:

]# chmod go=  .ssh/authorized_keys


把私钥和认证文件复制到各节点一份:

]# scp -p .ssh/id_rsa .ssh/authorized_keys node2:/root/.ssh

]# scp -p .ssh/id_rsa .ssh/authorized_keys node3:/root/.ssh

]# scp -p .ssh/id_rsa .ssh/authorized_keys node4:/root/.ssh


node1安装node和manager程序包:node2,3,4安装安装MHA的node:

mha4mysql-manager-0.56-0.el6.noarch.rpm

mha4mysql-node-0.56-0.el6.noarch.rpm


]# yum install mha4mysql-*


]# mkdir /etc/masterha

]# vim /etc/masterha/app1.cnf

wKioL1da8Byyx9_aAABAyaxRA3k246.png


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

显示:[info] All SSH connection tests passed successfully

表示各节点间ssh互信通信成功;


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

输出信息最后一行类似如下信息,表示其通过检测:

MySQL Replication Health is OK


此时,MHA高可用mayql主从复制配置完成,可演示当,node2主节点掉线,由node3,4其中之一提升为新的主节点;


在node2:

]# killall mysqld mysqld_safe


在node4:

查看,可显示为已经更换了新的主节点;

wKioL1da81_Al5NQAAAgPUK-7LA874.png

实现当主节点掉线,从节点之中自动切换为一个新的主节点上来;此时,MHA已经完成mysql的主从自动切换;


当掉线的主节点再次加入到主从结构中时,要在新主节点上做一次备份,并且记录日志的名字和位置;把这个备份的内容导入到新增加的这个从节点上,让从节点从指定的位置开始往后复制即可;










本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1787859,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
728 0
|
1月前
|
网络协议 Linux
Linux DNS服务详解——DNS主从架构配置
Linux DNS服务详解——DNS主从架构配置
407 4
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
122 1
|
2月前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
307 6
|
2月前
|
SQL 关系型数据库 MySQL
(B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt
(B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt
|
2月前
|
SQL 存储 缓存
MySQL - 一文了解MySQL的基础架构及各个组件的作用
MySQL - 一文了解MySQL的基础架构及各个组件的作用
|
15天前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
10 0
|
26天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
74 0
|
1月前
|
负载均衡 关系型数据库 MySQL
MySQL Router读写节点支持负载均衡策略
`routing_strategy`是MySQL Router配置选项,用于设定数据路由策略。可选值包括:`first-available`, `next-available`, `round-robin`和`round-robin-with-fallback`,分别对应不同的负载均衡和故障转移策略。更多详情参考:<https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-conf-options.html#option_mysqlrouter_routing_strategy>。
10 1
|
1月前
|
架构师 算法 关系型数据库
数据库架构师之道:MySQL安装与系统整合指南
数据库架构师之道:MySQL安装与系统整合指南
45 0