MySQL binlog集市的项目小结

news2024/12/28 18:33:29

这是学习笔记的第 2478篇文章

29a336a48047b84315a341f3eaf2c5f1.gif

 MySQL binlog集市的事情我们做了有一段时间了,最开始的初衷是异常操作的数据恢复,主要的痛点是如果发生了业务误操作,需要紧急恢复数据的时候,通常这些误操作是对于字典配置数据的变更,而要恢复的时候成本则太高了,举个极端的例子,1T数据量的数据库,要恢复的字典数据最有1M,但是很可能需要恢复1T的数据量作为代价,有点得不偿失,所以,我们对于binlog集市是希望尽可能完整的捕获数据库的数据变化,并且能够闪回恢复。

对于数据库异常恢复的主页面如下,提供环境信息和时间戳,基本就能够进行数据恢复了。

7e3ee41d0ff70c84684073f2c2c7e474.png

这个事情往前做一下,那就是通常误操作时提供的信息是有较大偏差的,比如12:10发生的操作,可能研发同学会信誓旦旦的说是12:08,到底那个时间段之内有没有相关的操作,我是把重心放在了定位环节,通过定位让整个数据恢复的代价变得最小,而且时间可控。我们按照时间轴(分钟,秒等维度)可以生成数据变化的明细情况,这样能够更加精准的定位异常问题和范围。

b69d5c590f6fe853642badc4c71bed1a.png

 这个事情再往前做一下,那就是我们获得了某个实例的binlog数据变化明细,那么对于全平台的binlog变化则不在话下,当然这个过程比预想的要复杂一些,也着实解决了一些很细节的处理逻辑。放到全局,则是全平台的数据监测功能。

6f3d66a81bf09fb12fcc645fe71a73a1.png

从全局视角,是可以通过实例维度看到数据变化的明细情况的,如下图所示:

b34f8774c639c187d53a1400ea0d9ade.png

由此下钻,也可以看到具体的实例中的表数据变化明细。

bd107b22f64f90d022a23f9d4d1d89c3.png

以上是整个binlog集市的一些处理逻辑,总结一下,基础的定位是解决异常操作时的数据恢复,再这个基础上衍生出了附加价值,可以实现全局视角从全平台数据监测逐步下钻到某一张具体的表。

但是通过我的感受和大家的反馈,这个项目的成效平平。对此我开始总结和反思。

binlog集市的体系已经构建起来了,但是目前还没有真正发挥效用。

有三种可能:

1)本身binlog集市的服务本身就没有那大的业务价值

2)binlog集市的功能目前对于运维口开放,对于运维侧没有发挥价值

3)binlog集市对于研发来说闻所未闻,压根不知道

好了,我们已经具备这样的能力:可以提供每个数据库包括集群每时每秒发生的数据变化情况,可是这个数据有什么作用呢?这是一个扎心的问题,也是一个需要实际面对的问题。

如果是泛化的需求,很难发挥直接的效用,所以binlog集市需要能够发现并且解决一些问题。

发现什么问题,解决什么问题呢?这不是发难,而是盘点我们目前的状态,首先是定位,我们得对binlog集市有一个初步的定位,它不是万金油,而是解决具体场景的问题,期望需要和实际匹配,二来我们没有深入到研发侧做调研获得需求,三来也没有深入思考,偏执行层面。

首先需要明确,做binlog集市解决最核心的问题是异常操作场景下的数据快速恢复,在这个基础之上再去发挥更大的价值。

那么对于binlog集市恢复异常操作数据的功能,我们需要让这件事情有底,就得做一些辅助和验证:

1)保障binlog集市的稳定,怎么证明它是稳定的,需要有一些功能,性能等维度来说明辅证

2)我们到目前为止,是否做过3次以上的异常恢复演练,是否达到了预期的效果,3次是拍脑袋的说法,也可以是5次,10次

3)binlog集市不能做什么,什么情况需要规避,需要尤其注意,我们得知道这个服务的边界

4)对业务开放,让业务能够真正试用,和重点用户达成数据恢复的流程共识,什么时候需要我们介入,什么时候研发侧就可以自己处理了,当然异常发生时,我们得有知情权。

其次,我结合我的思考,还有一些是之前和研发的简单沟通所做的分析:

1)运维视角的宏观评估和分析:每天数据库中那么多的数据变化,每天的变化情况是如何的,每天产生多少的日志存储?说实话,绝大多数的DBA应该都不大了解,但是不代表这个信息不重要,如果某一天的日志量暴涨或者下跌明显,我如果在报警发生之前就得到这些信息,我认为这个工具是有效的

2)研发视角的宏观评估和分析:很多研发同事对于数据库的信息有一种无力感,比如这个数据库中有多少表,每个表有多少数据,他们很难得到这些信息,直接查询又担心出性能问题,哪些表数据变化比较多是他们比较关注的事情,毕竟这是他们自己的业务;

3)运维视角数据治理和优化:一个数据库中有几十上百张表,有哪些表是需要重点关注的?全平台有哪些表需要重点识别和关注,对于那些频繁发生数据变化的表,可能会提供优化的思路

4)数据量变化巡检:如果数据库中某张表的数据量暴涨和下跌,我们有没有机制发现,从单一的维度是很难分析出问题的,得有历史数据的支撑,还可以辅助一些预测,那这个问题的解决就高了一个层次

4)字典表变更轨迹追溯:数据表有字典表,状态表和日志表,这个里面研发侧更关注的还是字典表的数据变化,这种数据变化频率不高,但是变化的影响范围比较大。假设我们有了字典表变化的一种跟踪服务,那么发生异常的时候,可以优先排除是否有字典数据的变化

5)表结构变更后的信息订阅和同步:有些数据是需要通过数据流转持续发挥价值的,那么上游的字段发生变化(创建表,删除表,添加字段,删除字段,修改字段类型等),对于下游都是很大的影响,这些信息下游的同事应该是缺少一直机制去了解的

所以结合以上信息:

1)binlog集市的定位和核心功能就是异常场景下的数据快速恢复,那么就应该优先把这块事情做好

2)要让binlog集市发挥更大的作用,就需要提供一些服务化的功能,我建议是不用以binlog集市的视角去建设,而是从业务标签,实例的视角去做,一种是完善已有的运维服务,把binlog集市的一些能力集成进来,二来是规划独立的业务服务,需要业务视角,把binlog集市的一些功能集成起来,让运维和研发感受到实实在在的业务支撑效果。

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记

  • Github:@jeanron100

  • CSDN:@jeanron100

  • 知乎:@jeanron100

  • 头条号:@杨建荣的学习笔记

  • 网易号:@杨建荣的数据库笔记

  • 腾讯云+社区:@杨建荣的学习笔记

热文:

呼伦贝尔游记第二篇

呼伦贝尔游记第一篇

山西大同云冈石窟一日游

新数据库时代,DBA 发展之路该如何选择

我们为什么在MySQL中几乎不使用分区表

《大江大河2》最触动我的一段经典对话

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

换个角度看人生

442148f27fa72004c915809b7bd8b966.gif

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

在看,让更多人看到

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

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

相关文章

有哪些适用于 Windows 的PDF 阅读器?免费 PDF 阅读器清单

探索适用于 Windows 10 和 11 的最佳 PDF 阅读器 适用于 Windows 10 和 Windows 11 的最佳 PDF 阅读器让您可以在台式计算机上查看和共享文档。 最好的PDF 编辑器和免费的 PDF 编辑器配备了先进的工具,可以跨不同的操作系统工作。但是,当您只需要查看和…

Docker搭建Plex流媒体服务并播放自己本地视频

Docker搭建Plex流媒体服务 安装Docker创建存储配置文件的目录创建Plex容器配置Plex设置媒体库访问Plex 1 介绍 Plex是一个流媒体服务器,可以轻松地将你的媒体文件库(如电影、电视节目和音乐)通过网络流式传输到各种设备上。 Plex 是一套媒体…

信号量、互斥锁、计数信号量

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 信号量(semaphores)一个多进程共享的非负整型全局变量。信号量常用于多进程的进程同步。 介绍 …

零基础学python:错误与异常

嗨喽,大家好呀~这里是爱看美女的茜茜呐 语法错误 异常:大多数的异常都不会被程序处理,都以错误信息的形式展现在这里 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ pyth…

【STM32】GPIO控制LED(寄存器版)

在开始之前记得先准备好环境: STM32F103核心板下载教程.pdf 林何/STM32F103C8 - 码云 - 开源中国 (gitee.com) 一、STM32的GPIO模块数据手册详解 每个GPIO端口对应16个引脚,例GPIOA(PA0~PA15)内核cpu就可以通过APB2总线对寄存器…

电路电子技术3 电位的计算受控源在电路分析中的作用

1.计算电压 思路:注意到这个串联电路,有两个电压源,所以我们首先可以将两个电压源串联等效为一个电压源。 即: 故可得答案选B. 2.计算点位 思路:题目说明了B点开路,所以没有流过电阻R的电流,…

光学配件简介

光学配件简介 延长管介绍 延长管,是加在镜头和相机之间的一根通心的环状管,但里面没有任何光学部件,也没有放大作用。它不会改变光圈值,但因为延长了镜头,光线会减弱。延长管可以使镜头的对焦距离缩短,也就…

Uniapp 酷炫钱包页面模板 直接引用

使用教程 直接引用Vue页面 即可 <template><view><TCqianbao></TCqianbao></view> </template> <script>import TCqianbao from /uni_modules/TC-qianbao/pages/index.vueexport default {components:{TCqianbao},} </script&…

【斗破年番】彩鳞送老公新挂,薰儿霸气回归,萧炎招揽古河,邀请美杜莎战魂殿

【侵权联系删除】【文/郑尔巴金】 斗破苍穹年番动画已经更新了&#xff0c;萧炎与美杜莎女王一起回娘家&#xff0c;并且也与小医仙制定了同盟计划&#xff0c;准备对金雁宗与慕兰谷斩草除根。从官方公布的第69集预告来看&#xff0c;慕兰三老与雁落天已经陨落&#xff0c;美杜…

Warning: [antd: Switch] `value` is not a valid prop, do you mean `checked`?

解决方案&#xff1a; <Form.Item label"更多设置" name"moreSetting" valuePropName"checked"><Switch onChange{handleMoreSetting} /></Form.Item> 参考链接&#xff1a; https://chat.xutongbao.top/

医药保健品经营小程序商城的作用是什么

互联网经济下&#xff0c;线上线下商家难以生存&#xff0c;自营平台成为各行业商家的选择&#xff0c;摆脱平台限制及线下门店地域的限制&#xff0c;多渠道线上获客引流转化营销、留存复购裂变等&#xff0c;更利于直接触达消费者&#xff0c;无其它商家夺流及坑位费、流量费…

最详细STM32,cubeMX 定时器

这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 文章目录 前言一、定时器基础知识二、cubeMX 配置三、定时时长四、自动生成代码讲解五、实验程序总结 前言 实验开发板&#xff1a;STM32F103C8T6。所需软件&#xff1a;keil5 &#xff0c; cubeMX 。实验目的&#xff…

探索未来的视觉革命:卷积神经网络的崭新时代(二)

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

自主武器系统对伦理和法律的挑战

【第十届北京香山论坛是中国军事科学学会、中国国际战略学会联合主办的论坛&#xff0c;将于2023年10月29日至31日在北京举行。本次论坛的主题是“共同安全、持久和平”&#xff0c;聚焦全球安全倡议重点合作方向&#xff0c;为各方共议安全难题、求解安全之策、促进安全合作提…

Leetcode1971. 寻找图中是否存在路径

Every day a Leetcode 题目来源&#xff1a;1971. 寻找图中是否存在路径 解法1&#xff1a;并查集 并查集介绍&#xff1a;并查集详解 代码&#xff1a; /** lc appleetcode.cn id1971 langcpp** [1971] 寻找图中是否存在路径*/// lc codestart class UnionFind {vector&…

Node-RED系列教程-27node-red操作邮件节点

提前注册好一个163邮箱: 安装以下节点: 演示发送邮件的功能

ESXI6.5安装教程

设置从IPMI Virtual Disk 3000启动&#xff0c;出现如下界面&#xff1a; 默认选择第一项&#xff0c;回车安装 安装程序正在检测服务器硬件信息&#xff0c;如果不满足系统安装条件会跳出错误提示。 检测完成之后会出现下面界面 回车 按F11 这里列出了服务器硬盘信息&#…

【算法|动态规划No.29】leetcode132. 分割回文串 II

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

022-第三代软件开发-QCustomPlot核心迁移

第三代软件开发-QCustomPlot核心迁移 文章目录 第三代软件开发-QCustomPlot核心迁移项目介绍先说点GitHub CopilotQCustomPlot核心迁移QQuickPaintedItemXXX_QCustomChart 关键字&#xff1a; Qt、 Qml、 QCustomPlot、 GitHub Copilo、 关键字5 项目介绍 欢迎来到我们的 …

Leetcode—2331.计算布尔二叉树的值【简单】

2023每日刷题&#xff08;六&#xff09; Leetcode—2331.计算布尔二叉树的值 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool evaluateTree(struct TreeNod…