工作疑难问题解决4例

· 浏览次数 : 0

小编点评

## 工作上疑难问题解决: **1. 页面监控:** * 实时监控报表库是否有大量查询,尤其是针对特定表的查询。 * 每天提醒自己是否有需要关注的查询页面。 * 可以通过设置页面为首页的方式,方便查看。 **2. 数据库备机:** * 考虑购买一些数据库备机,以应对数据库服务器故障时的影响。 * 需要考虑成本、风险和影响用户的影响等因素。 **3. 表重构:** * 在上线前,对代码进行彻底的测试,确保不会出现问题。 * 建立双写方案,同时运行新表和旧表,以确保数据完整性。 * 对修改过程进行严格的测试,确保不会造成数据错误。 **4. 大表拆分:** * 在拆分之前,需要考虑数据安全和性能的影响。 * 建立监控机制,及时发现和处理数据质量问题。 * 选择合适的分片方案,以确保性能和数据完整性。 **5. ELK 分析:** * 使用 ELK 分析每天的 MySQL审计日志,识别并处理数据质量问题。 * 通过日志,可以识别修改的 SQL 语句,并及时进行修复。

正文

   记录一下工作上疑难问题解决:

    一,方便的页面监控  

     前几天早上,负责的kettle抽取数据表的任务又报错了,早上看手机有4个未接报警电话,一看是人员表,原来昨天报表系统有个大的查询一直未查询完成,导致truncate这个人员表,无法活动meta的锁,后续执行抽取和计算的都报错。为解决以前这个很偶发的大查询,特意用datart报表做了一个查询页面,在手机上直接看是否有大的事务查询,有的话kill,保证晚上抽取不会报错,但后面一直天天看,也会放松疏忽。

      不想被短信电话打扰如何解决?不要特别的点开看这个查询页面,又保证能天天看到。

      方法一:报表库购买一个从库,报表读和数据写入计算分离就可解决。  需购买从库,要费用,估计不会批

      方法二:做一个监控工具,如果报表库有大的查询报警或者是发送消息!    也会导致让人烦,入侵性强。不太好

      方法三: 在浏览器里把这个长事务页面设置成首页,每次打开浏览器就可以看到 很友好,每天都会上网,上网就就会看到,非入侵性  

   二、缺少的数据库备机

        几年前,在一家电商公司做DBA,北京仓库有台数据库服务器(线上的数据抽取到本地作业),但一直没有备机,几次和研发领导说这个事情买个备机做实时备份,领导也没说买,估计到CEO老板也不会同意买,公司当时也很缺钱,但这个隐患一直存在,假如某天这个数据库服务器出现故障,无法使用,就很影响到现在的仓库作业,这时再去弄备机,时间很长。

        不给买备机怎么处理?无法做一个实时备份,等出问题再说。跟领导说了几次,估计他也没办法!

        后来有次上海仓库,突然停电,当初配置了一个从库,没什么问题就系统和数据库都起来了。我把这个担忧给领导又说了一遍,担心如果北京仓库断电重启不起来,那就麻烦了,后来领导说买个高配的台式机做一下过度,是否可以,想想有个备机总比没有强,就立刻购买一台高配的兼容机,弄好配置从库。这才解决,后面再新加仓库配置本地数据库服务器,都是按一主一从库来购买。 

   三、表重构高风险

       几年前,公司的线上系统使用的优惠卷表,以前设计存在严重问题,要重新设计表,修改程序。优惠卷就2个表,表重构和程序修改比较容易,但上线,研发出现一个问题,因为代码分布在各个系统,以前维护这块的人都离职了,现在谁都无法了解

     1,不知道程序改完没有   2,即使程序改完了,出现问题,对用户影响很大。 没办法保证100%的修改完成。

      一句话:修改上线风险大,出问题还要背责任。

     和研发,架构还有领导开会讨论时,面临这个问题,怎么处理。讨论下来就是,出一个双写方案,就是新表和旧表同时运行,程序设置开关,可以直接打开双写。上线后,架构开发一个功能,对比2个表的数据差异,一直对比,有异常看程序那些还没改,改得有问题。就这样整个功能运行近1年,对比确认没问题后,这才重构完成,并保证切换系统100%没有问题。

   四、大表拆分

        几年前,去新公司的数据库有个表比较大占用100G+的空间,核心库500G+大小,这个表如果有问题,会影响到核心业务库,最好是迁移出核心库。当时负责这块的研发在广州,我在上海。和负责这块的研发领导沟通,反馈是工作太忙,没有时间,要么排期(排期不知道排到什么时候)。

        而且当时公司研发文化,以结果目的为导向,只看重结果。这个工作又不是他们的核心业绩,即使做了也不一定有好的绩效。但如果不推动这个事情,后面表越来越大,风险也越来越大,必须要做下去,慢慢做,总有做完的那天,如果一直没时间做,就永远不会做。

        只是一个小DBA,没有权利去要求他们做什么,怎么推动这个事情解决?

        后来和广州研发部门的组长和经理沟通,研发的确很忙,和研发组长和经理多次沟通,这拆分还要做,但可以慢慢做,他们最后还把拆分任务分下去,哪个研发人员有空就分配给谁,修改一部分。刚好当时做一个MySQL的审计:

             1,用ELK分析每天4亿多条腾讯云MySQL审计日志(1)--解决过程

       每次程序修改了,可以通过ELK去查是否修改完成,是否还有其他遗漏的地方,一开始给他们开了ELK权限,后来又担心数据安全问题,又给取消了。就这样,每次上线,修改一部分,自己在钉钉群里通告一下是否改完,还有那些没改,监控出没改的SQL,发给他们修改,就这样,整个程序修改都半年多,终于把这个表给拆分出核心库,一句话说的好:真是世上无难事,只怕有心人。

        修改上线后,在例行每次优化报表邮件中,特意写了一份表扬信(写这个表扬邮件费点劲),对广州研发的同事表扬,他们的研发总监还特意点赞回复。邮件如下:

        

         总结:

              这个大表拆分能完成,不是靠一再的施压力和只看结果,而是真正去了解他们的实际情况,给研发提供方便高效的帮助,大家齐心合力去完成一件事。

与工作疑难问题解决4例相似的内容:

工作疑难问题解决4例

记录一下工作上疑难问题解决: 一,方便的页面监控 前几天早上,负责的kettle抽取数据表的任务又报错了,早上看手机有4个未接报警电话,一看是人员表,原来昨天报表系统有个大的查询一直未查询完成,导致truncate这个人员表,无法活动meta的锁,后续执行抽取和计算的都报错。为解决以前这个很偶发的大

巩固系统韧性三个基础策略

众所周知我所在的团队常年解决线上问题,我也以为我们会在解决一个个具体问题的道路上无聊走到黑。但是最近出现的各种疑难杂症似乎让我们的工作有了一点乐趣,甚至有了更高级的意义。

Redis数据存储和读写

今天工作群里,有小伙伴问了一个问题,从Redis获取的数据,一会是0,一会是OK。 这引起了我们对Redis数据存储和读写的疑问。 以下是整理的一些技术研究内容。 在 Redis 中,所有的数据存储都是基于字符串的。无论你插入的是 String、int 还是 DateTime 类型的数据,最终都会以

Redis最常见的5种应用场景

Redis作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一。对于Redis为什么那么快?以及Redis采用单线程,但为什么反而获得更高的性能的疑问,在之前的Redis为什么那么快?一文中,已经有所介绍。 今天通过这篇,我们来了解一下Redis最常见的5种应用场景。您可以通过视频来学习,如

PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践

工作中只要接触过第三方开放平台的都离不开 OpenApi,几乎各大平台都会有自己的 OpenApi 比如微信、淘宝、京东、抖音等。在 OpenApi 对接的过程中最首要的环节就是授权,获取到平台的授权 Token 至关重要。

工作感受月(2024年07月)

224年07月01日 今日工作事项: 1/ 上午处理app service plan的cpu和memory指标数据显示为0,影响了autoscale的正常运行。情况很不乐观。明天是否还是一样问题呢? 2/ 处理手中旧事,跟进全部案例24个中的10+的案例,问是否可以关闭。总关闭量在5个。 3/ 下午

记录工作中常用的 JS 数组相关操作

工作中难免会遇到各种各样的数据结构,较为全面的了解数组操作,对于复杂数据结构的处理会非常有用且节省时间。所以想在这里总结一下工作中常用的数组操作,都是一些非常基础的知识,大家看个乐就好~

工作流Activiti 迁移 Camunda

后端操作 意思就是: ①更改maven②改包名、类名③改bpmn model中语法④检查迁移后有哪些功能缺失了 1、更改maven 改为 2、换包名、类名 意思就是将 org.activiti.* 开头的改为 org.camunda.bpm.* 3、改bpmn model中语法 不改的话会出现语法解

工作卷,是主动选择还是迫于无奈?

这个词是近几年流行起来的网络用语,它是内卷的简化形式,“内卷”本来是一个名不见经传的普通词语,经网络流传,很多人就用其来指代非理性的内部竞争或“被自愿”竞争。在现代职场,有一群人被戏称为"职场卷王"。他们本着累死自己、熬死领导的核心宗旨,总是作为最后一个熄灯人离开公司。我相信你们也肯定都“卷”过,甚...

[转帖]运维工作常用SQL命令大全【收藏版】

运维工作常用SQL命令大全【收藏版】 https://www.modb.pro/db/65429 1、查看表空间使用率 set line 220select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - f