MySQL HA 方案 MMM、MHA、MGR、PXC 对比

MySQL高可用架构

MMM

(Multi Master Replication Manager)

资源数量说明
主DB2用于主备模式的主主复制
从DB0~N台可以根据需要配置N台从服务器
IP地址2n+1N为MySQL服务器的数量
监控用户1用户监控数据库状态的MySQL用户(replication)
代理用户1用于MMM代理端改变read_only状态

故障转移步骤:

  • Slave服务器上的操作

    • 完成原主上已经复制的日志恢复

    • 使用Change Master命令配置新主

  • 主服务器上操作

    • 设置read_only关闭

    • 迁移VIP到新主服务器

优点:

  • 提供了读写VIP的配置,试读写请求都可以达到高可用

  • 工具包相对比较完善,不需要额外的开发脚本

  • 完成故障转移之后可以对MySQL集群进行高可用监控

缺点:

  • 故障简单粗暴,容易丢失事务,建议采用半同步复制方式,减少失败的概率

  • 目前MMM社区已经缺少维护,不支持基于GTID的复制

适用场景:

  • 读写都需要高可用的

  • 基于日志点的复制方式

MHA

(MySQL Master High Availability)

需要资源:

资源数量说明
主DB2用于主备模式的主主复制
从DB2~N台可以根据需要配置N台从服务器
IP地址n+2N为MySQL服务器的数量
监控用户1用户监控数据库状态的MySQL用户(replication)
复制用户1用于配置MySQL复制的用户

MHA采用的是从slave中选出Master,故障转移:

  • 从服务器:

    • 选举具有最新更新的slave

    • 尝试从宕机的master中保存二进制日志

    • 应用差异的中继日志到其它的slave

    • 应用从master保存的二进制日志

    • 提升选举的slave为master

    • 配置其它的slave向新的master同步

优点:

  • MHA除了支持日志点的复制还支持GTID的方式

  • 同MMM相比,MHA会尝试从旧的Master中恢复旧的二进制日志,只是未必每次都能成功。如果希望更少的数据丢失场景,建议使用MHA架构。

缺点:

  • MHA需要自行开发VIP转移脚本。

  • MHA只监控Master的状态,未监控Slave的状态

MGR

(MySQL Group Replication)

支持多主模式,但官方推荐单主模式:

  • 多主模式下,客户端可以随机向MySQL节点写入数据

  • 单主模式下,MGR集群会选出primary节点负责写请求,primary节点与其它节点都可以进行读请求处理.

 
  1. // 查看MGR的组员

  2. select * from performance_schema.replication_group_members;

  3. // 查看MGR的状态

  4. select * from performance_schema.replication_group_member_stats;

  5. // 查看MGR的一些变量

  6. show variables like 'group%';

  7. // 查看服务器是否只读

  8. show variables like 'read_only%';

AI助手

优点:

  • 基本无延迟,延迟比异步的小很多

  • 支持多写模式,但是目前还不是很成熟

  • 数据的强一致性,可以保证数据事务不丢失

缺点:

  • 仅支持innodb

  • 只能用在GTID模式下,且日志格式为row格式

适用的业务场景:

  • 对主从延迟比较敏感

  • 希望对对写服务提供高可用,又不想安装第三方软件

  • 数据强一致的场景

Percona的PXC

Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案, 的特性如下:

  • 同步复制,事务要么在所有节点提交或不提交。

  • 多主复制,可以在任意节点进行写操作。

  • 在从服务器上并行应用事件,真正意义上的并行复制。

  • 节点自动配置。

  • 数据一致性,不再是异步复制。

优点:

  • 当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。

  • 无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。

  • 良好的读负载扩展,任意节点都可以查询。

缺点:

  • 加入新节点,开销大。需要复制完整的数据。

  • 不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。

  • 有多少个节点就有多少重复的数据。

MMMMHAMGRPXC
优点成熟稳定、对MySQL侵入小、 宕机后保证数据一致原生高可用、数据一致性保证、支持多主类似MGR
缺点太旧,2010年后停止维护;仅支持基于binlog的同步 不支持;MySQL5.6以后的提供的多线程同步技术 没有读负载的功能 主从切换时,容易造成数据丢失 ;MMM监控服务存在单点故障,避免的监控服务单点,需要自行实现选主方式过时、需要配合第三方脚本进行自动切换;管理节点单点;MySQL异步复制中的数据丢失,不能保证数据强一致性管理不方便(需配合mysql-shell)性能损耗大(降低为1/3)、 大事务会卡住整个集群、需要用第三方发行版MySQL


限制与不足

  • 仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测;

  • 必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set

  • COMMIT可能会导致失败,类似于快照事务隔离级别的失败场景

  • 目前一个MGR集群最多支持9个节点

  • 不支持外键于save point特性,无法做全局间的约束检测与部分部分回滚

  • 二进制日志不支持binlog event checksum

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

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

相关文章

ISO17025最新认证消息

ISO17025认证是国际上广泛认可的实验室管理标准,全称为《检测和校准实验室能力的通用要求》,由国际标准化组织(ISO)和国际电工委员会(IEC)联合发布。以下是对ISO17025最新认证消息及相关内容的归纳&#xf…

npm淘宝镜像

通过命令行配置npm的淘宝镜像源和官方镜像源,以及如何安装和使用cnpm来解决安装包卡顿或无法安装的问题。通过设置registry和disturl,配合清理缓存,可以优化npm的下载速度。 1、​官方默认镜像 npm config set registry https://registry.n…

java12.24日记

运算符: 算术运算符: 顾名思义进行算数运算的 多为:四则运算,加一个取余 ,-,*,/以及 %(取余) 而外的:自增 以及自减--,对原数进行1或者-1 i…

SAP SD销售订单处理流程

本篇博文中的流程: 创建销售订单→依据销售订单创建交货单→依据销售订单开票 一、VA01创建销售订单 1、填入必填项,回车。可点击左上角的依照参考创建按钮。 依照参考创建可以参考以下6个。其中询价单、报价单、订单、合同和计划协议可以理解为特殊的…

内网穿透ubuntu20 docker coplar

sudo apt-get install curl curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash ubuntu-base报错 /sbin/init:No such file or directory解决办法 apt install systemd 命令安装即可 cpolar version 1.3 token认证 登录cpolar官网后台…

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统,设置密码的步骤都相对简单,但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一:通过控制面板设置账户密码 点击桌面左下角的“开…

机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)

线性回归 线性回归是一种较为简单,但十分重要的机器学习方法。掌握线性的原理及求解方法,是深入了解线性回归的基本要求。除此之外,线性回归也是监督学习回归部分的基石,希望你能通过本文掌握机器学习的一些重要的思想。 知识点…

Linux下编译安装Kokkos

本文记录在Linux下编译安装Kokkos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 二、编译安装 参考文献 Mills R T. PETSc/TAO Developments for Early Exascale Systems[J]. 2024.Josef R. A Stud…

eMMC 存储分区结构解析

一、eMMC 存储分区结构图 分区 用途 Boot Area Partitions 存储引导加载程序,支持安全启动和恢复模式 RPMB Partition 存储安全关键数据,防止重放攻击 General Purpose Partitions OEM 自定义数据分区,用于特定功能或镜像存储 User D…

攻防世界web第一题

最近开始学习网络安全的相关知识,开启刷题,当前第一题 题目为攻防世界web新手题 这是题目 翻译:在这个训练挑战中,您将了解 Robots_exclusion_standard。网络爬虫使用 robots.txt 文件来检查是否允许它们对您的网站或仅网站的一部…

C++可执行文件参数解析

前言 针对简单工程甚至是单cpp文件&#xff0c;C可执行二进制的参数获取&#xff0c;getopt被用来解析命令行选项参数。该接口在unix的头文件<unistd.h>中定义。参数类型区分为短参数&#xff08;只有一个中划线’-&#xff09;、长参数&#xff08;有2个中划线‘–’&a…

跟踪方案和小语法

语法一&#xff1a; case when cond1 then res1 [when cond2 then res2] else res end; 这种语法用于条件判断&#xff0c;其中 cond1 和 cond2 是需要评估的条件。如果 cond1 为真&#xff0c;则执行 res1。如果 cond1 为假&#xff0c;程序会继续检查 cond2&#xff0c;如果…

大恒相机开发(2)—Python软触发调用采集图像

大恒相机开发&#xff08;2&#xff09;—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序&#xff0c;用于从大恒相机采集图像&#xff0c;通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码&#xff1a; # version:…

基于SSM(Spring + Spring MVC + MyBatis)框架构建一个图书馆仓储管理系统

基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架构建一个图书馆仓储管理系统是一个涉及多个功能模块的项目&#xff0c;包括但不限于图书管理、读者管理、借阅管理、归还管理等。 1. 环境准备 确保你已经安装了以下工具和环境&#xff1a; Java Developmen…

WebDavClient 安装和配置指南

WebDavClient 安装和配置指南 WebDavClient Asynchronous cross-platform WebDAV client for .NET Core [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/WebDavClient 1. 项目基础介绍和主要编程语言 WebDavClient 是一个异步的跨平台 WebDAV 客户端&#xf…

记一次某企业管理系统通用SQL注入挖掘

更多视频教程可看主页和专栏 目录: 一、资产发现 二、通用漏洞挖掘 三、通用漏洞经验总结 一、资产发现 通过漏洞挖掘过程中发现该系统存在sql注入 1.二话不说先来个单引号显示 ‘011111111111111’’) ) 再来一个单号试一试可不可以把他闭合掉 换成报错注入的poc 发现右边…

Mybatis 如何复用 SQL

比如你的Mapper是这样写的&#xff1a; 但这个接口是没有分页的&#xff0c;你还想再写一个有分页的查询接口&#xff0c;两个接口SQL一模一样&#xff0c;只是多了分页特性。你可以直接重载一个方法&#xff0c;增加分页参数&#xff0c;即可复用该SQL。如下&#xff1a;

python ai框架

Python是AI和机器学习领域最常用的编程语言之一&#xff0c;拥有大量的工具和库&#xff0c;下面是一些常见的Python AI工具&#xff0c;它们涵盖了从数据处理到模型训练、评估和部署的各个方面&#xff1a; 1. 机器学习与深度学习框架 TensorFlow&#xff1a;由Google开发的开…

Autosar入门_OS_2

上一篇 | 返回主目录 | 下一篇 OS调度机制 1 基本概念2 Tasks2.1 调度方式2.1.1 完全抢占式调度2.1.2 非抢占式调度2.1.3 混合抢占式调度2.2 激活方式2.2.1 系统定时2.2.2 调度表2.3 执行逻辑及分类2.4 任务堆栈2.5 任务基本属性3 Event4 ISRs1 基本概念 首先,明确三个基本概…

Redis 介绍和安装

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Redis 入门介绍 收录于专栏[redis] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 本章将带领读者进入 Redis 的世…