MySQL 全球大会summit 2023年度 --- MySQL 高可用和灾备 (音译)

news2024/11/17 3:48:51

5ec9d07a73c5545b43fbf4e2cb1240f0.png

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1350人左右 1 + 2 + 3 + 4) 3群突破 400会关闭自由申请,新人会进4群,另欢迎 OpenGauss 的技术人员加入。

每日感悟

人活在这个世界上,真心为你好的人屈指可数,降低预期,降低期待,严格按照礼尚往来,相敬如宾,可能关系能持久些。

f94399c212a6c903f77adf666b226102.png

相对于其他的数据库厂商大会,MySQL的的确寒酸,连幕头都没有,上来就直接讲,不过也符合MySQL一贯的风格。这次翻译的是 2023年MySQL summit -- MySQL high availability and disaster recovery。开始本次的讲解人是 MySQL的产品经理,明显和我之前听的MongoDB的两期差距较大,一看是不善言辞的人。

——————————————————————————————

65a5902d318b739184aa9e59b9cee4fb.png

大家好,我是MySQL的产品经理,我本期为大家介绍的是 MySQL的高可用和灾难恢复上的一些新的解决方案,这里我们先看这张图,在数据库的故障中,关于产生故障的原因有有很多种,饱含电力,网络,数据服务器中心,制冷等多种故障0c0e28ee30e7e04f13d89a9c658fb35a.png

与此同时灾难恢复的成本却在不断的升高,从这里我们可以看到很多可以换提出灾难恢复的成本问题,对比2019年到2020年成本超过了100万美元。

d7a7605569105c0026c571de47328923.png

包含OVH是欧洲较大的数据服务中心,他们发生火灾给相关的机构产生了很大的损失,估算上亿的经济损失。下面我将开始我对MySQL的高可用方面的介绍方便大家使用更低成本的,让MySQL的高可用更加容易的实现。

ea6d82c061e7ea3ff2086c89de270f5f.png

MySQL 存在很多年了20-25年,这里我找了一个我上学时候的一个图,希望我没有找错,基于MySQL的复制的灵活性,我们可以进行横向的扩展,提供高可用性,或提供功能横向扩展等等。因为他非常的灵活,可以进行异步的复制,保证最终一致性,同时还有一些搞出双主的模式的,虽然我十分不建议这样进行高可用的实现。

ec1c8768d9055dd111002f4db567b38c.png

同时之前的一些问题,导致大量的自动化优化的团队,DBA都在致力于MySQL的自动化平台等相关的设计和部署的工作,在2016年我们就提出了innodb cluster,这是基于组复制同时使用异步数据复制的方式来实现数据库高可用集群,在事务提交中我们以大多数节点提交事务作为事务确认的,当节点加入时,无需进行设置,自动配置所有的部分都是内置并自动完成的,他会处理网络分区,不会出现脑裂,同时我们也提供多节点多住写入,这就是我们在2016年提供的,后来我们提供了一个工具集,mysql shell 是这里面客户访问的工具可以在其中进行集群的配置,我们稍后会提供一些案例。

4488054092d4c324c7dd671787fe2318.png

你可以通过这个部分来进行数据库的集群配置和自动化配置的工作等,这里非常容易得进行节点的添加和删除等等,数据量较少则几分钟就可以组建出一个集群,MySQL shell 提供了他所需要的接口,这些技术中,一个物理快照,有趣的部分是我们在2019年提供的Clone ,这里MySQL提供了一个快照,提供节点并配置复制,所有这些都通过一个命令的形式进行,如果你想要自定义架构,那么这些部分的每一个都可以单独使用,但我们关注如何给大部分企业大多数提供需要的环境,故障转移在5秒内可以发生,数据丢失可能性为0,通常的情况下需要5-10秒,具体取决于工作的负载。他可能需要更长的时间,转移不可能会丢失数据,这是最常用的高可用,当发生故障时,数据中心内的单个服务器发生故障,所以组复制时复制数据库当时的状态,需要注意这不是一种分片的技术,他提供的是一种高可用和节点扩展的技术。

您可以配置您想要的一致性,您可以在主数据库上写入并同时从从库读取数据,默认情况下您将获得最终的一致性,这意味着您可以读取主数据库上不是最新的数据,但您也可以启用完全一致,并且提出我想读取最新的数据,这样就可以启用全局读,这一切都是使用了MySQL的高可用框架,使用BINLOG , RELAY LOG , 全局事务。

7f45845329f26234114cd7b6b836e384.png

看上去这很棒,但是很多用户都提出如果我没有稳定的网络怎么办,那么就需要接受一些数据的丢失,或者我有更好的写入的吞吐量,因为异步的复制会更快,事务可以在本地提交不需要得到其他成员的确认,但如果这些都没有,那么你可能会丢数据,少量的几秒钟。

在2020年,我们有了innodb clusterSET 在之前的高可用基础行,进行了一个补充,我们将我们的功能添加到MySQL Shell,然后添加一个从库或多个从库我们这里要做的就是灾难恢复,我们在两个区域之间配置异步复制,两个或多个区域,添加的区域数量没有限制,通过这种方式我们可以使用MySQL Shell来简单的切换到布鲁塞尔的集群上,使其成为主集群。他会重新配置所有的内容,所有的这一切都是一个命令就可以解决,当然区域之间可能有数据丢失。

a2fb6cce61c620c1ae9fb81fa8e0a2b6.png

通常来说大多数公司不希望区域之间有任何的数据丢失,这通常是可以接受的,当一个区域发生故障的时候,您需要没有数据丢失,就需要产生3个区域,把innodb 集群中的成员拆分,这样就可以不丢失数据,同时通过MySQL Shell 可以进行快速的节点添加节点删除,在通过MySQL ROUTER 可以快速的掌握你整个的数据库架构,通过设置可以连接到主集群上进行读写。

29fe501e03292fe690bcace5bffdad0b.png

同时我们针对区域中的集群不非要是3台主机,这里一个区域也可以是一台主机。这里我举几个例子,因为时间的原因可能这些例子不是完整的。这里我们通过MySQL Shell进行登录,然后建立一个高可用的模式,并添加节点。在MySQL底层配置一些设置后,这些都不需要SSH的支持,这些都是通过MySQL的connection来进行的,使用这个命令你就可以建立一个Mysql 集群非常非常简单。这里你可以通过他来进行那个是主,配置参数的改变,所有的操作都在 MySQL Shell中。

f4554723c0518bb5d12e15dce59618a1.png

11fae99fa4145fd7666ca35385c8773d.png

通过clusterset.status() 命令可以看到当前的集群的状态,以及那个是主节点等信息。61947d7511c0625e66898930b5a902e2.png

这里还可以通过命令来改变主节点,并且通过myrouter将工作负载发送到新的主节点上。

726d6f158848a02b08bd05e2c7ffd10d.png

这里还可以改变主节点,整个的改变过程不会出现脑裂的问题,我们要做的就是简单的命令,安全的转换副集群转为主集群。

165dc0e2b0d511eecc4db1096bc9a1c0.png

当主节点CRASH 了,我们在复制中添加了相关的的功能,当主节点失效后,会自动选主相关其他的节点会自动重新配置,并指向新的主节点,并对集群的状态进行修改。

a0c83c70806fc47a6c9fd0d869e44f0a.png

下面是一个数据中心的例子,这里有两个数据中心,其中一个Cluster在主数据中心当主数据库中心出现火灾,可以通过手工的方式,强制将备用的数据中心的MySQL 集群进行启用,当网络出现问题的时候,为了防止脑裂,必须通过手工的方式进行隔离,或停掉其中一组区域的MySQL集群,目的就是要防止脑裂,防止在两个区域出现两个主集群。

8f2a5422ce983e59669c5fd0e4798c2d.png

这里RPO为0说明不会丢失数据,如果我们采用异步的方式,并未网络出现问题可能会丢失几秒的数据,具体还和你网络带宽有关,RTO为我们需要多长时间来进行数据的恢复,我们都希望RPO=0 没有数据丢失,RTO=0我们立即恢复数据,但从高可用的角度来看,但这里实际上我们的需求是不一样,如果你只是单区域,那么你在意的是你数据库的高可用,但如果是灾难恢复,则你需要注意的是你的多区域的设置。当然还有人为的误删除数据,或SQL注入等问题,那么你需要做的是通过备份来恢复,或者通过延迟节点来进行相关的工作。所以我们这里介绍的部分,是不能

a195737060d250edb396b5ec50874bc5.png

  这里如果你需要的是数据不丢失,秒级的数据恢复那么你可以选择innodb cluster,如果你能接受数据丢失,分钟级别的数据恢复和手动的数据节点的切换,那么你可以选择 innodb relicaset (实际上他指的就是我们一直在用的主从复制)

73636abe85191388aebf5d6e8d075d9f.png这里如果要一个稳定的高可用和灾备,达到RPO=0,RTO在秒级,你需要有3个区域的MySQL 集群,同时你的网络必须是稳定的,因为他们之间要互相的发送消息,互联网方式的连接是不可以,你需要通过专线来将各个数据中心进行连接,网络问题或数据包丢失可能导致你的集群的不稳定和问题,这存在着风险问题,并且你要保证带宽足够的高,满足你的数据传输的要求,同时尽量降低些延迟问题的发生,在DC 和 DC 之间。

fbb17fd6e967e579420f8f0782c44d3e.png这就是我们针对MySQL 高可用和灾难恢复的给客户的方案,大部分情况下数据是可以恢复的,但异步的区域之间的手动切换会丢失数据。

2b320ee54c4e4251a4567f64c68ade84.png

这里就是我的所要展示的所有内容。

2002b227829553a58f0e95def6c85469.png

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

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

相关文章

聚观早报 | 中国队拿下亚运会电竞项目首金;B站发布68部国创片单

【聚观365】9月28日消息 中国队拿下亚运会电竞项目首金 B站发布68部国创片单 支付宝持续加大流量开放 起点有声书《宿命之环》等大作陆续上线 方程豹豹5详细配置公开 中国队拿下亚运会电竞项目首金 杭州2022年第19届亚运会官网发布公告称,在昨日的杭州第19届亚…

2014 款金旅牌小型客车 发动机怠速抖动、加速无力

故障现象 一辆2014款金旅牌小型客车,搭载JM491Q-ME发动机,累计行驶里程约为20万km。车主反映,最近该车发动机怠速抖动、加速无力,且经常缺少冷却液。 故障诊断 根据车主描述的故障现象,初步判断该车气缸垫损坏&#…

分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结…

【iOS逆向与安全】插件开发之某音App直播间自动发666

1.目标 由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就花了几分钟做了一个。 2.操作环境 越狱iPhone一台 frida ma…

Java【手撕链表】LeetCode 2. “两数相加“, 图文详解思路分析 + 代码

文章目录 前言一、两数相加1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表, 堆…

五、过拟合问题与正则化

一、过拟合问题 (一)问题的提出 过拟合问题的定义,以线性回归为例,在房价预测的数据集中,假设函数产生的曲线有三种情况,如下图: (1)欠拟合(2)…

保姆级 -- Zookeeper超详解

1. Zookeeper 是什么(了解) Zookeeper 是一个 分布式协调服务 的开源框架, 主要用来解决分布式集群中应用系统的一致性问题, 例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上是 一个分布式的小文件存储系统 . 提供基于类似于文件系统的目录树方式的数据存储, …

【Linux】线程同步和互斥

目录 一、线程互斥1.相关概念2.互斥锁(mutex)3.互斥锁的原理4.自定义封装一个锁 二、可重入和线程安全三、死锁死锁概念死锁四个必要条件如何避免死锁 四、线程同步1.条件变量概念条件变量接口基于阻塞队列实现生产者消费者模型 2.信号量概念信号量操作接…

Databend 源码阅读:配置管理

作者:尚卓燃(PsiACE)澳门科技大学在读硕士,Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer https://github.com/PsiACE 对于 Databend 这样复杂的数据库服务端程序,往往需要支持大量的可配置选项&am…

探索Lighthouse性能分数计算背后的奥秘

本文作者为 360 奇舞团前端开发工程师 作为开发我们都知道,页面性能很重要,一个性能良好的页面可以给用户带来非常好的用户体验。那么,怎么能知道自己写的页面性能是好是坏呢? Lighthouse 是Chrome提供给开发者用来测量页面性能的…

原生js之变量、作用域与内存

原生js之变量、作用域与内存 变量变量类型原始值引用值 复制值传递参数判断类型typeofinstanceof不常用的判断方法constructor构造方法判断Object.getPrototypeOf() 最好用的判断数据类型的方法!toString.call小总结 作用域链垃圾回收标记清理引用计数v8回收v8对GC的优化新生代…

对标8155体验,降本20%以上!这家企业用“量产”证明

智能座舱逐渐成为智能汽车标配。 根据高工智能汽车研究院监测的数据显示,2022年中国市场(不含进出口)乘用车搭载智能数字座舱(大屏语音车联网OTA)前装标配交付795.05万辆,同比增长40.59%,前装搭…

卫星通信链路预算(附程序)

文章目录 简介链路基本概念信息速率与传输速率载波占用带宽载波与噪声功率比 天线参数天线增益波束宽度极化损耗 有效全向辐射功率接收系统品质因数自由空间的传播损耗链路计算程序 简介 卫星通信链路是指从信源开始,通过编码调制及微波上变频、发射机和天线&#…

流量卡不带通话功能,这样的流量卡用着真的安全?

哈喽大家好,很多朋友私信小编,咨询关于纯流量卡的一些问题,可能大家都知道,现在正规的号卡也推出了“纯流量版”,也就是不带通话功能,那么,网上的带手机号的纯流量卡真的用着安全吗?…

企业数字化转型要怎么做?在线报修系统是如何解决维修难题的?

随着科技互联网等新技术的不断发展,企业服务已从信息化迈向数字化阶段。大型企业正迫切地向数字化转型,并需要技术革新和与云的融合,以应对当今市场的挑战。为满足这一需求,广东工程宝科技有限公司推出了一款新一代故障报修产品—…

如何快速搭建一个react项目?如何使用react脚手架快速搭建项目?

如何使用react脚手架快速搭建项目? 一、前提 电脑已经安装了node和npm环境。 react文档中要求Node > 8.10 和 npm > 5.6,查看版本:node -v;npm -v; 二、步骤 1、在合适的文件夹中打开命令行窗口cmd 2、全局安…

前端项目配置 prettier、eslint、lint-stages、husky、commitlint 、style-lint设置代码书写和提交规范

prettier中文网:Options Prettier 中文网 eslint中文网 :ESLint 中文网 github husky : https://github.com/typicode/husky commitlint.js 官网:commitlint - Lint commit messages 、github:GitHub - conventiona…

为什么大力推行国密算法SSL证书

国密算法SSL证书是一种采用我国自主研发的SM2公钥算法体系,支持SM2、SM3、SM4等国产密码算法及国密SSL安全协议的数字证书。相比于普通SSL证书,国密SSL证书具有以下特点: 自主可控:国密SSL证书采用我国自主研发的SM2公钥算法体系&…

十一,从摄像机打印HDR环境贴图

越来越接近真相了。我们很自然地想到,如果把漫游器放在中心打印,是不是就可以打印整个等距柱状投影图了呢?是的,但是,只是要注意的是,立方体贴图的内部和外部尽管一样,但是还是稍微有点模糊&…

Git 学习(2)

Git 学习(2) 版本号 Git 中文件的版本号是 40 位十六进制的数字字符串,采用 SHA-1 加密算法计算获得 这样一方面可避免在合并时的冲突问题 另一方面可以用于文件定位,其中前两位表示文件夹,后 38 位表示文件 指令介…