首页 > 数据库 >MySQL HA 方案 MMM、MHA、MGR、PXC 对比

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

时间:2023-06-07 10:46:15浏览次数:44  
标签:MHA MMM MGR 复制 https MySQL 节点

ySQL高可用架构

MMM

(Multi Master Replication Manager)

 

 

 

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

故障转移步骤:

  • Slave服务器上的操作

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

    • 使用Change Master命令配置新主

  • 主服务器上操作

    • 设置read_only关闭

    • 迁移VIP到新主服务器

优点:

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

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

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

缺点:

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

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

适用场景:

  • 读写都需要高可用的

  • 基于日志点的复制方式

MHA

(MySQL Master High Availability)

 

 

需要资源:

资源数量说明
主DB 2 用于主备模式的主主复制
从DB 2~N台 可以根据需要配置N台从服务器
IP地址 n+2 N为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%';
  9.    

优点:

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

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

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

缺点:

  • 仅支持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

 


参考

https://juejin.cn/post/6844903812700831752

https://tech.meituan.com/2017/06/29/database-availability-architecture.html

https://cloud.tencent.com/developer/article/1054465

https://www.zhihu.com/question/53617036/answer/135776740

https://juejin.cn/post/6844903785848897543

https://www.talkwithtrend.com/Question/416891-2877659

https://my.oschina.net/Declan/blog/3114672

https://blog.csdn.net/du18020126395/article/details/115288524

https://www.cnblogs.com/GO-NO-1/p/14032679.html

标签:MHA,MMM,MGR,复制,https,MySQL,节点
From: https://www.cnblogs.com/cheyunhua/p/17462657.html

相关文章

  • mmm手动切换IP,切换角色
    //mmm手动切换IP,切换角色//mmm切换IP[root@home-db4~]#mmm_controlset_passive [root@home-db4~]#mmm_controlset_ip10.200.3.119db1//mmm切换角色[root@home-db4~]#mmm_controlset_active[root@home-db4~]#mmm_controlmove_rolewriterdb1[root@home-db4~]......
  • MHA(MySQL High Availability)高可用性工具补数据功能
    目录背景MHA补数据功能关于补数据的补充说明参考背景在介绍MHA补数据功能之前先介绍一些关于MHA的基础知识。MHA(MySQLHighAvailability)是一个用于实现MySQL数据库高可用性(HighAvailability)的工具集。它可以在主从复制架构中实现故障切换和主库切换,以确保数据库服务的稳定......
  • ceph config get mgr 和 ceph mgr services 显示的内容不一致怎么办
    root@ceph-deploy:~#cephconfiggetmgrWHOMASKLEVELOPTIONVALUEROmgradvancedmgr/dashboard/ceph-mgr1/server_addr10.0.0.104*mgradvancedmgr/dashboard/ceph-mgr1/server_port9019*......
  • PostgreSQL集群运维案例之---构建recpmgr集群管理
    案例说明:在构建流复制集群后,可以通过repmgr实现集群的管理,并通过repmgr实现集群节点状态监控、switchover、failover切换等管理。数据库版本:PostgreSQL14集群节点信息:[root@node101~]#cat/etc/hosts192.168.1.101node101;primary节点192.168.1.102node102......
  • Mysql-MHA集群
    基本概念由来MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案。它由日本DeNA公司youshimaton(现就职于Facebook公司)开发。原理组成由两部分组成:MHAManager(管理节点)和MHANode(数据节点)MHAManager可单独部署在一台独立的机器上管理多个mast......
  • MHA高可用
    MHA高可用一MHA背景介绍MHA是Perl语言写的,开源的MYSQL故障切换方案;全称:MasterHighAvailability,故障切换时间10-30s有人说,我不要MHA行不行啊;可以,没问题,如果主数据库故障了?首先,你需要手动一个一个地登录上所有的SLAVE从库,然后一个个对比,看谁执行的BINLOG比较新,然后将其作......
  • 部署repmgr PG14集群<无autofailover>
    系统环境OS:CentOS7192.168.56.11node1192.168.56.12node2部署操作流程1.系统环境初始化echoredhat|passwdroot--stdinecho-e"192.168.56.11node1">>/etc/hostsecho-e"192.168.56.12node2">>/etc/hostsse......
  • 21、MHA master high availability (主节点高可用)
    MHAmasterhighavailability(主节点高可用)MHA:MasterHighAvailability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台......
  • 恶意软件如何隐藏DLL以及如何识别它?——可以使用vmmmap、procexp、volatility 3
       好了,为了简单表示上述提到的PEB和DLL加载的关系,给一一张图如下:TEB(ThreadEnvironmentBlock,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。PEB(ProcessEnvironmentBlock,进程环境块)存放进程信息,每个进程都有自己的PEB信息。  上图可以看到dll清单类似o......
  • slmgr 命令提示“非核心”错误解决方法
    第一步:regeditHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SoftwareProtectionPlatformSkipRearm的值修改为1,重启。第二步:slmgrslmgr-rearm以管理员身份运行上述命令后,重启。第三步:安装ipkslmgr/ipk[kms密钥] ......