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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

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,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
2月前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
122 2
【赵渝强老师】MySQL的体系架构
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
71 3
|
2月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
243 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
1月前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
92 8
|
2月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
85 1
服务架构的演进:从单体到微服务的探索之旅
|
2月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
127 7

热门文章

最新文章