【OC】OC与MHA对比

MHA 简介

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

OC 简介

orchestrator不仅是一个 MySQL 高可用,更是一款MySQL集群的复制拓扑管理工具,作为服务运行并提供命令行访问、HTTP API 和 Web 界面。OC具备 发现复制拓扑,重构复制拓扑,恢复主库故障等能力。

MHA与OC 对比

类目

对比项

MHA

Orchestrator

总结

开发语言

Perl

Go

开发组织

DeNA(youshimaton)

Google

开发目的

快速进行主库恢复,以及切换过程中数据补齐

进行拓扑结构管理,以及主库故障恢复

部署

部署架构

只支持单点部署

支持多种架构:

  • 单点

  • 半高可用

  • 基于共享存储的高可用

  • 基于Raft协议高可用

OC部署更为简单

OC服务支持高可用

数据库服务器是否需要开通SSH免密

需要

不需要

数据库服务器是否需要Agent

需要

不需要

安装依赖

需要安装perl模块

不需要,二进制

自身高可用

不支持

支持

后端数据库

不需要

需要

OC 提供多种管理方式,

可管控的集群数量更多

通过Web 界面更容易看清所有集群的状态,

在日常手动切换时可进行拖拽更为方便,

管理

命令行管理

支持

支持

HTTP API接口

不支持

支持

Web 界面

不支持

支持

支持管理集群数量级

150+

1000+

集中式管理

支持

支持

新集群使用高可用

需要安装依赖,agant ,配置文件,启动进程

在数据库集群中创建用户和数据库后进行discovery

新集群使用高可用OC更加方便

复制拓扑发现

复制拓扑发现

只能发现配置文件中指定的实例

通过集群中任何一个实例可以自动发现完整的拓扑

OC支持的拓扑结构更多,

可动态感知拓扑结构的变化,更加灵活

自动感知拓扑结构变化

不支持

支持

支持的复制拓扑结构

  • 一主多从

  • 双主多从

  • 多层级联复制

  • binlogServer

  • 一主多从

  • 双主多从

  • 多层级联复制

  • binlogServer

不支持

多于三个主库的环形复制

多源复制

支持的复制模式

位点模式(file + postion)

GTID模式

基于Row复制(RBR)

半同步复制(Semi-sync)

位点模式(file + postion)

GTID模式(Oracle和MariaDB)

基于statement的复制(SBR)

基于Row复制(RBR)

半同步复制(Semi-sync)

5.7 版本的并行复制

不支持:

5.6版本基于库的并行复制

故障发现

故障探活方式

connect

select

insert

OC节点 以及 配合该实例的从库复制状态是否正常进行检测

OC 探活方式更加快速可靠,

能够识别出了主库故障之外其他的故障与警告,

在管理复制拓扑上更胜一筹

探活间隔

默认4次

默认1秒

探活次数

默认3秒

默认1次

探活节点

支持多节点探活

支持OC节点与从库探活

探活速度

9到12秒发现主库故障

探活理念

多次多个节点探活

配合从副本的主从状态以及OC节点的探活

探活可靠性

较为可靠,无法避免网络抖动带来的影响

可靠,采用“整体”方式探活

故障类型

主库故障

支持接近30多种拓扑结构的故障和警告

根据不同的故障和告警选择不同的处理函数

故障恢复

支持的恢复(切换)方式

自动恢复

手动切换

  • 自动恢复(Automated recovery)

  • 手动恢复(Manual recovery.)

  • 计划内恢复 (Graceful, planned, master promotion)

  • 手动强制恢复(Manual, forced/panic failovers)

OC在故障恢复配置更加灵活,丰富。

OC支持全局开关,特定集群切换开关

多种级别的地域 位置感知

更加丰富即时的实例优先级设置

设置实例优先级

支持设置从库是否可提升为主

  • candidate_master

  • no_master

支持设置多种提升优先级

  • prefer

  • neutral

  • prefer_not

  • must_not

动态设置实例优先级

不支持,需要修改配置文件重启

支持,通过修改定时任务

全局切换开关

不支持

支持

设置集群维护(downtime)

不支持

支持

设置特定集群切换规则

不支持

支持,通过关键字设别

外挂钩子脚本

  • secondary_check_script

  • master_ip_failover_script

  • master_ip_online_change_script

  • shutdown_script

  • report_script

OnFailureDetectionProcesses // 故障发现阶段 PreGracefulTakeoverProcesses // 计划内切换流程之前执行,在master设置read_only 之前执行 PreFailoverProcesses // 自动切换流程之前执行 PostMasterFailoverProcesses // 主库切换成功之后 PostIntermediateMasterFailoverProcesses PostFailoverProcesses // 自动切换流程之后执行 PostUnsuccessfulFailoverProcesses // 切换不成功事 PostGracefulTakeoverProcesses // 计划内切换流程之后执行

切换发送通知

支持邮件、DC等通知

支持邮件、DC等通知

选主规则

选择最新的主库

选择最合适的主库

位置/地域 感知

不支持

支持感知多个维度的位置或地域

DataCenter 数据中心

Region 地域

PhysicalEnvironment 位置

防止脑裂

配合 shutdown_script

自定义钩子脚本错误处理,出现错误终止切换

配合公司LVS能力

为完成

已完成并测试

数据补齐

数据补齐

配合binlogServer 实现数据无丢失

需要配合半同步复制模式防止切换数据丢失

MHA 对于数据补齐考虑更多,防止在主从切换时数据丢失

服务器资源利用

服务器资源利用

manage节点可部署在从库,数据库实例尽量不在同一个服务器混合部署

可在服务器上进行实例混布,提供资源利用率

总结

目前高可用的方案中,MHA(Master High Availability)是使用比较多、并且比较成熟的方案,上图针对一些关键的功能对MHA(Master HighAvailability)和orchestrator进行对比,

MHA(Master High Availability)有一个很大的缺陷是其自身管理节点存在单点问题,而Orchestratort则通过Raft分布式一致性协议保证其自身管理节点的高可用,并且orchestrator相比于MHA(Master High Availability)来说在宕机判断和选主模式上都有比较大的优势,但不足是Orchestrator在某些场景下可能会出现丢数据的情况,数据补偿机制需要进行优化。

Orchestrator还有一些其他高可用方案不具备的优秀功能:

1. 自动发现MySQL复制拓扑,很方便管理多套集群。

2. 支持修改MySQL拓扑结构,变更复制关系。

3. 支持使用命令行工具、Http API、Web界面管理拓扑,如图1-3所示是其Web管理界面。

4. Go语言编写,方便二次开发。

MHA

OC

部署

⭐️⭐️⭐️

⭐️⭐️⭐️⭐️

OC部署更为简单

OC服务支持高可用

管理

⭐️⭐️

⭐️⭐️⭐️⭐️⭐️

OC 提供多种管理方式,

可管控的集群数量更多

通过Web 界面更容易看清所有集群的状态,

在日常手动切换时可进行拖拽更为方便,

探活

⭐️⭐️⭐️

⭐️⭐️⭐️⭐️

OC 探活理念更加快速可靠

复制拓扑发现管理

⭐️

⭐️⭐️⭐️⭐️

OC 能够识别出了主库故障之外其他的故障与警告,

在管理复制拓扑上更胜一筹

故障发现

⭐️⭐️

⭐️⭐️⭐️⭐️

故障恢复

⭐️⭐️⭐️

⭐️⭐️⭐️⭐️

OC在故障恢复配置更加灵活,丰富。

OC支持全局开关,特定集群切换开关

多种级别的地域 位置感知

更加丰富即时的实例优先级设置

数据补偿

⭐️⭐️⭐️⭐️⭐️

⭐️

MHA 对于数据补齐考虑更多,防止在主从切换时数据丢失

恢复速度

⭐️⭐️⭐️⭐️

⭐️⭐️⭐️⭐️

MHA 9到12秒故障发现,7-10秒关闭主库服务器防止脑裂,另外需要一些时间去补齐数据,总计10到30秒完成切换。

OC 3-5秒进行故障探测,20秒内进行LVS后端RS切换。30秒内完成故障切换

资源利用率

⭐️⭐️

⭐️⭐️⭐️⭐️

OC结合 LVS可实现数据库实例在服务器上的混布

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

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

相关文章

springboot美食分享平台-计算机毕业设计源码45429

基于Web美食分享平台的系统设计与实现 摘 要 本研究基于Spring Boot框架,设计并实现了一个Web美食分享平台,旨在为用户提供一个交流分享美食体验的社区平台。该平台涵盖了用户注册登录、美食制作方法分享发布、点赞评论互动等功能模块,致力于…

cdr捕捉点怎么设置---模大狮模型网

在 CorelDRAW 中,捕捉点(Snap Points)是一种非常有用的功能,它可以帮助你在绘制和编辑图形时对齐、定位和调整对象。以下是关于如何设置捕捉点的简要步骤: 打开和设置捕捉点: 打开捕捉点控制器: 在 CorelDRAW 的顶部菜…

C# 解析省份、城市、区域 json文件

一、json文件内容如下,(小程序里好像有用到...): 二、读取包含省份城市区域的json文件,并整理成想要的结果: string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…

JVM:SpringBoot TomcatEmbeddedWebappClassLoader

文章目录 一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系 一、介绍 TomcatEmbeddedWebappClassLoader 是 Spring Boot 在其内嵌 Tomcat 容器中使用的一个类加载器(ClassLoader)。在 Spring Boot 应用中&#…

Python图形用户界面的文本文件加密工具

Python图形用户界面的文本文件加密工具 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x5oEvdLE-1720676762602)(https://i-blog.csdnimg.cn/direct/ddf0cd975b2d48a9a2f3b35c55e00add.png)] 设计方案 DES.py DESAlgorithm 类负责管理密钥并提供…

电焰灶:烹饪性能的深度剖析

在如今众多的厨房炉灶选择中,华火电焰灶以其独特的技术和性能吸引了不少消费者的目光。那么,华火电焰灶的综合烹饪性能究竟如何呢?让我们一起来深入探究。 首先,从火力方面来看,华火电焰灶展现出了强大的优势。其火焰强…

systemctl命令,启动服务,停止服务,查看服务状态,设置开机自启。

systemctl 是用于与 systemd 初始化系统和服务管理器进行交互的命令行工具。systemd 是许多 Linux 发行版默认的系统和服务管理器&#xff0c;它负责启动和管理系统服务。 以下是一些常用的 systemctl 命令&#xff1a; 启动服务: sudo systemctl start <service_name> …

VS2019使用C#写窗体程序技巧(1)

1、打开串口 private void button1_Click(object sender, EventArgs e){myPort cmb1.Text;mybaud Convert.ToInt32(cmb2.Text, 10);databit 8;parity Parity.None;stopBit StopBits.One;textBox9.Text "2";try{sp new SerialPort(myPort, mybaud, parity, dat…

LLMs的基本组成:向量、Tokens和嵌入

编者按&#xff1a;随着人工智能技术的不断发展&#xff0c;大模型&#xff08;语言、视觉&#xff0c;或多模态模型&#xff09;已成为当今AI应用的核心组成部分。这些模型具有处理和理解自然语言等模态输入的能力&#xff0c;推动了诸如聊天机器人、智能助手、自动文本生成等…

私域社群的组织及运营角色定位、分工

私域社群运营是一个涉及多个角色和职能的复杂过程&#xff0c;每个角色都有其特定的职责和目标。以下是一些常见角色及其职能内容的概述&#xff1a; 产品经理&#xff08;Product Manager&#xff09; 负责私域社群产品的规划、设计和迭代。理解用户需求&#xff0c;收集用户反…

开源项目的发展趋势之托管平台

引言 回溯至十五年前的求学时光&#xff0c;当我们初涉编程的浩瀚海洋&#xff0c;面对程序设计这一崭新挑战&#xff0c;曾渴望能有一份现成的源码作为启航的灯塔。然而&#xff0c;在那个时代&#xff0c;除了有限的SDK资源外&#xff0c;寻觅到高质量、可借鉴的源代码并非易…

springboot服装购物商城系统-计算机毕业设计源码35058

摘要 服装购物商城系统小程序&#xff0c;依托Spring Boot框架的强大支持&#xff0c;为用户呈现了一个功能丰富、体验流畅的在线购物平台。该系统不仅涵盖了商品展示、用户注册登录、购物车管理、订单处理、支付集成等核心购物流程&#xff0c;还引入了个性化推荐算法&#xf…

药品稳定性试验箱:确保药物有效期的关键设备

关键词&#xff1a; 药品稳定性试验箱、 药品稳定性试验模拟器、人造太阳 摘要&#xff1a;药品稳定性试验箱是制药行业重要的研究工具&#xff0c;主要用于在模拟气候环境中评估药物稳定性&#xff0c;以确定药物的有效期和影响稳定性的因素。该设备由温湿度控制系统、光照系…

【EasyExcel】根据单元格内容自动调整列宽

1.自定义Excel列宽样式策略类 import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.e…

NodeJS校园点餐系统-计算机毕业设计源码56979

摘 要 近年来&#xff0c;随着移动互联网的迅猛发展&#xff0c;微信小程序作为一种轻量级应用形式逐渐受到人们的关注和喜爱。在此背景下&#xff0c;各行各业开始向微信小程序上线他们的服务&#xff0c;其中包括餐饮行业&#xff0c;在校园内&#xff0c;学生、教职工和访客…

通用代码生成器模板体系,域对象,枚举和动词算子

通用代码生成器模板体系&#xff0c;域对象&#xff0c;枚举和动词算子 通用代码生成器或者叫动词算子式通用目的代码生成器是一组使用Java编写的通用代码生成器。它们的原理基于动词算子和域对象的笛卡尔积。它们没有使用FreeMarker和或者Velocity等现成的文件式模板引擎。而…

OpenResty程序如何连接开启了TLS的Redis?

目录 OpenResty 项目如何连接开启了 TLS 的 Redis Kong 插件如何连接开启了 TLS 的 Redis OpenResty 是一个基于 Nginx 和 Lua 的 Web 应用框架&#xff0c;允许开发者通过 Lua 脚本对 Nginx 的配置和行为进行扩展。当 OpenResty 需要连接到一个开启了 TLS 的 Redis 服务器时…

传统的springboot项目中,如何进行添加自定义静态资源访问路径实现对静态资源的访问?

如何配置可以实现在浏览器中配置路径实现对resource资源路径下的index.html个性化定制访问路径 要在Spring Boot项目中配置使特定前缀访问静态资源&#xff0c;可以在application.yml文件中配置路径映射。以下是一个示例配置&#xff1a; 打开你的application.yml文件&#xf…

Kylin的优缺点

Kylin&#xff08;Apache Kylin&#xff09;是一个开源的分布式分析数据仓库&#xff0c;专为处理大规模数据集和提供快速的多维分析&#xff08;OLAP&#xff09;能力而设计。以下是Kylin的主要优点和缺点&#xff1a; 优点 高性能&#xff1a; 快速查询&#xff1a;Kylin通过…

Vue3响应系统的作用与实现

副作用函数的执行会直接或间接影响其他函数的执行。一个副作用函数中读取了某个对象的属性&#xff0c;当该属性的值发生改变后&#xff0c;副作用函数自动重新执行&#xff0c;这个对象就是响应式数据。 1 响应式系统的实现 拦截对象的读取和设置操作。当读取某个属性值时&a…