想学精MySQL,得先捋一捋高可用架构

news2024/12/24 21:20:44

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 1.主从复制
    • 2.读写分离及负载均衡
    • 3.MHA架构
    • 4.多源复制
    • 5.MGR架构
    • 6.双主+Keepalived
    • 7.PXC架构
    • 8. Orchestrator+VIP架构

前言

本文对MySQL的高可用架构做了详细的阐述,均来自真实的企业生产环境

1.主从复制

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现 从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

MySQL 主从复制的优点主要包括以下3个方面:
(1)如果主库出现问题,可以快速切换到从库提供服务;
(2)可以在从库上执行查询操作,降低主库的访问压力;
(3)可以在从库上执行备份,以避免备份期间影响主库的服务

2.读写分离及负载均衡

MySQL Router 的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。
MySQL 强烈建议使用 Router 8 与 MySQL Server8和5.7一起使用,MySQL Router 是 MySQL 官方提供的一个轻量级中间件,可以在应用程序与 MySQL 服务器之间提供透明的路由方式。主要用以解决 MySQL 主从库集群的高可用、负载均衡、易扩展等问题

1.实现了主从读写分离
2.读从库一定程度上起到了负载均衡的作用
3.可以当作连接池
4.主主架构中,主数据库发生故障后,主从 MySQL 服务器自动发生切换
5.多从服务器负载读时,其中一台从服务器 DOWN 机,不影响业务访问

3.MHA架构

MHA(Master High Availability Manager and tools for MySQL)目前在MySQL高可用方面是一个相对成熟的解决方案,它是由youshimaton采用Perl语言编写的一个脚本管理工具。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。

MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据库节点),
MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,
也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,
MHA Manager 会定时探测集群中的 master 节点,
当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,
然后将所有其他的 slave 重新指向新的 master。
整个故障转移过程对应用程序完全透明

4.多源复制

所谓多源复制(Multi-source Replication),就是多台主库的数据同步到一台从库服务器上,从库创建通往每个主库的管道,从Mysql5.7版本开始支持多主一从的复制方式

多源复制的应用场景
1.各个主数据库的数据汇总到统一的数据库中
2.在从数据库对各个主数据库的数据进行集中备份
在部署多主一从之前,我们先了解下多源复制的好处:
(1)可以集中备份,在从库上备份,不会影响线上的数据正常运行;
(2)节约购买从库服务器的成本,只需要一个从库服务器即可;
(3)数据汇总在一起,方便后期做数据统计,可用于数仓;
(4)减轻DBA维护工作量,整合数据资源;

5.MGR架构

MySQL Group Replication(简称MGR)是一款高可用与高扩展的解决方案,
它提供了高可用、高扩展、高可靠的MySQL集群服务。既可以很好的保证数据一致性又可以自动切换,具备故障检查功能、支持多节点写入,以插件形式提供,实现了分布式下数据的最终一致性

(1)强一致性
基于原生复制及paxos协议的组复制技术,
并以插件方式提供,提供一致性数据安全。
(2)高容错性
只要不是大多数节点环境坏掉就可以继续工作,
有自动检查机制,当不同节点产生资源争用冲突时,
不会出现错误,按照先到者优先原则进行处理,并内置自动化脑裂防护机制。
(3)高扩展性
节点的新增和移除都是自动的,新节点加入后,
会自动从其他节点上同步状态,直到新节点和其他节点保持一致,
如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息。
(4)高灵活性
有单主模式和多主模式,单主模式下会自动选主,
所有的更新操作都是在主上进行;多主模式下,所有server都可以同时处理更新操作。

6.双主+Keepalived

一般中小型公司都使用这种架构,搭建比较方便简单;可以采用主从或者主主模式,在 master 节点发生故障后,利用keepalived 高可用机制实现快速切换到 slave 节点。原来的从库变成新的主库

keepalived主要有三个模块,分别是core、check和vrrp。
core模块为keepalived的核心,
负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的

7.PXC架构

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步

①实现 mysql 数据库集群架构的高可用性和数据的强一致性。
②完成了真正的多节点读写的集群方案。
③改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。
④新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。
⑤由于是多节点写入,所以数据库故障切换很容易。

8. Orchestrator+VIP架构

Orchestrator是最近非常流行的MySQL复制管理工具,相比较于MHA等常用管理工具,其支持高可用部署,并对故障进行一个完整的探测分析后才会做相应的故障转移,探测更精准、全面

下图中:Sqlite/MySQL,是Orchestrator的后端存储数据库
(存储监控的mysql复制实例的相关状态信息),可以选择MySQL,也可以选择SQLite。
/etc/orchestrator.conf.json是配置文件,Orchestrator启动时读取。
下面部分是监控的MySQL的实例,以下是搭建的一主两从。
当然,实际上Orchestrator可以监控成百上千个MySQL复制集群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实现机考程序界面

机考界面如下(单选题),上方是题目状态,下方是题目,1/5/1是已做题目数量、总共题目数量和答对题目数量。 再看一下多选题的界面。 判断题的界面。 回答正确时的反馈,会给出用时。 回答错误时的反馈&#xff…

社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律)

推荐大家去看看天涯社区的精华帖子:《社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律)》 原出处天涯精华帖:《社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律&…

多模态AI:技术深掘与应用实景解析

多模态AI:技术深掘与应用实景解析 在当今人工智能技术的快速发展中,多模态AI凭借其独特的数据处理能力,成为了科技创新的前沿。这项技术结合了视觉、听觉、文本等多种感知模式,开辟了人工智能处理和理解复杂信息的新纪元。本文旨…

SpringBootWeb入门、HTTP协议、Web服务器-Tomcat

目录 一、SpringBootWeb入门 二、HTTP协议 HTTP-请求协议 HTTP-响应协议 HTTP-协议解析 三、Web服务器-Tomcat 服务器概述 Tomcat 一、SpringBootWeb入门 直接基于SpringFramework进行开发,存在两个问题:配置繁琐、入门难度大 通过springboot就…

最新鸿蒙HarmonyOS4.0开发登陆的界面1

下载deveco-studio 说明一下,本人只是学习中,现在只是拿着vue及uniapp的经验在一点一点的折腾,不过现在看来,鸿蒙入门并不是很难。也许是自己没有深入下去。 https://developer.harmonyos.com/cn/develop/deveco-studio#download…

对比SPI、UART、I2C通信的区别与应用

SPI、UART、I2C通信是常用的数字通信协议,它们在不同的场景下有不同的应用。下面,我将分别介绍它们的特点、区别与应用。 SPI通信 SPI通信是一种串行同步通信协议,它的全称为“Serial Peripheral Interface”。SPI通信是一种单主多从的通信方…

Ubuntu22.04终端设置白底黑字

概要:有两种白底黑字 第一种: 第二种: 一、第一种白底黑字 1、打开偏爱 先点击终端右上角的三个短横线的按钮,在展开中选择Preferences 2、设置终端的顶部为light 3、设置白底黑字 默认是使用来自系统主题的颜色,我…

点评项目——用户签到模块

2023.12.13 通常app为了吸引用户每天登陆app,会设定一个签到模块,本章就来实现用户签到模块,包含签到功能和签到统计功能。 BitMap用法 通常使用二进制位来记录每个月的签到情况,签到记录为1,未签到记录为0。每一个bi…

tcp的聊天室

注意&#xff1a;要加库文件&#xff0c;服务端客户端都要加 network 客户端的头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket>//客户端类 #include <QMessageBox>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } Q…

js实现excel里面的PMT函数

// 辅助函数&#xff0c;保留两位小数function roundToTwoDecimal(value) {return Math.round(value * 100) / 100;}function calculatePMT(rate, nper, pv, fv, type) {// rate: 年利率// nper: 总期数// pv: 现值&#xff08;贷款或投资的初始金额&#xff09;// fv: 未来值&…

Leetcode—783.二叉搜索树节点最小距离【简单】

2023每日刷题&#xff08;五十八&#xff09; Leetcode—783.二叉搜索树节点最小距离 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ void dfs(struct TreeNode* roo…

Next.js ts redux/toolkit状态管理

目录 介绍 安装依赖 初始化store 1、在src下创建store文件夹&#xff0c; 2、创建最简单的slice切片 3、创建入口文件index.ts 4、创建hooks.ts 在_app.tsx中注入store tsx中使用store payload createAsyncThunk 效果 介绍 reduxjs/toolkit是Redux 官方提供的一个…

C51--小车——L9110s电机驱动模块

电机模块开发&#xff1a; L9110s&#xff1a; 接通VCC&#xff0c;GND 模块电源指示灯亮。 IA1输入高电平&#xff0c;IA1输入低电平&#xff0c;【OA1 OB1】电机正转&#xff1b; IA1输入低电平&#xff0c;IA1输入高电平&#xff0c;【OA1 OB1】电机反转&#xff1b; IA2…

Java_Mybatis_动态SQL

一、动态SQL 1.概述 动态SQL&#xff1a; 是 MyBatis 的强大特性之一&#xff0c;解决拼接动态SQL时候的难题&#xff0c;提高开发效率分类 ifchoose(when,otherwise)trim(where,set)foreach 2.if 做 where 语句后面条件查询的,if 语句是可以拼接多条的 需求&#xff1a;根…

B站内容新爆点 | 高效引流、吸睛利器

11月29日&#xff0c;B站官方发布了2023年第三季度财报。财报显示&#xff0c;B站平台月均活跃用户数从第二季度3.24亿增长至3.41亿&#xff0c;再创新高&#xff0c;日均活跃用户数则突破一亿里程碑&#xff0c;达1.03亿&#xff0c;同比增长14%。用户日均使用时长首次超过100…

Java - Collectors.toMap() 使用

List 转 Map 一、Collectors.toMap() 函数源码定义&#xff1a; // 两个参数public static <T, K, U>Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,Function<? super T, ? extends U> valueMapper) {retu…

【数据结构】贪心算法

一.贪心算法的定义 贪心算法是指在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;只做出在某种意义上的局部最优解。 贪心算法的结果是最优解的最好近似。 优点&#xff1a;简单&#xff0c;高效。 缺点&…

慎用,Mybatis-Plus这个方法可能导致死锁

1 场景还原 1.1 版本信息 MySQL版本&#xff1a;5.6.36-82.1-log Mybatis-Plus的starter版本&#xff1a;3.3.2 存储引擎&#xff1a;InnoDB1.2 死锁现象 A同学在生产环境使用了Mybatis-Plus提供的 com.baomidou.mybatisplus.extension.service.IService#saveOrUpdate(T, co…

【MySQL】:表的约束(上)

表的约束 一.非空约束二.default约束三.列描述四.zerofill五.主键1.单个主键2.复合主键 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比如有…

孩子还是有一颗网安梦——Bandit通关教程:Level 11 → Level 12

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…