
在程序员的职业生涯中,总会遇到数据库表被锁的情况,前些天就又撞见一次。由于业务突发需求,各个部门都在批量 *** 作、导出数据,而数据库又未做读写分离,结果就是:数据库的某张表被锁了!
用户反馈系统部分功能无法使用,紧急排查,定位是数据库表被锁,然后进行紧急处理。这篇文章给大家讲讲遇到类似紧急状况的排查及解决过程,建议点赞收藏,以备不时之需。
用户反馈某功能页面报502错误,于是第一时间看服务是否正常,数据库是否正常。在控制台看到数据库CPU飙升,堆积大量未提交事务,部分事务已经阻塞了很长时间,基本定位是数据库层出现问题了。
查看阻塞事务列表,发现其中有锁表现象,本想利用控制台直接结束掉阻塞的事务,但控制台账号权限有限,于是通过客户端登录对应账号将锁表事务kill掉,才避免了情况恶化。
下面就聊聊,如果当突然面对类似的情况,我们该如何紧急响应?
想象一个场景,当然也是软件工程师职业生涯中会遇到的一种场景:原本运行正常的程序,某一天突然数据库的表被锁了,业务无法正常运转,那么我们该如何快速定位是哪个事务锁了表,如何结束对应的事物?
首先最简单粗暴的方式就是:重启MySQL。对的,网管解决问题的神器——“重启”。至于后果如何,你能不能跑了,要你自己三思而后行了!
重启是可以解决表被锁的问题的,但针对线上业务很显然不太具有可行性。
下面来看看不用跑路的解决方案:
遇到数据库阻塞问题,首先要查询一下表是否在使用。
如果查询结果为空,那么说明表没在使用,说明不是锁表的问题。
如果查询结果不为空,比如出现如下结果:
则说明表(test)正在被使用,此时需要进一步排查。
查看数据库当前的进程,看看是否有慢SQL或被阻塞的线程。
执行命令:
该命令只显示当前用户正在运行的线程,当然,如果是root用户是能看到所有的。
在上述实践中,阿里云控制台之所以能够查看到所有的线程,猜测应该使用的就是root用户,而笔者去kill的时候,无法kill掉,是因为登录的用户非root的数据库账号,无法 *** 作另外一个用户的线程。
如果情况紧急,此步骤可以跳过,主要用来查看核对:
如果情况紧急,此步骤可以跳过,主要用来查看核对:
看事务表INNODB_TRX中是否有正在锁定的事务线程,看看ID是否在show processlist的sleep线程中。如果在,说明这个sleep的线程事务一直没有commit或者rollback,而是卡住了,需要手动kill掉。
搜索的结果中,如果在事务表发现了很多任务,最好都kill掉。
执行kill命令:
对应的线程都执行完kill命令之后,后续事务便可正常处理。
针对紧急情况,通常也会直接 *** 作第一、第二、第六步。
这里再补充一些MySQL锁相关的知识点:数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构。
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。MySQL中表级别的锁有两种:一种是表锁,一种是元数据锁(metadata lock,MDL)。
表锁是在Server层实现的,ALTER TABLE之类的语句会使用表锁,忽略存储引擎的锁机制。表锁通过lock tables… read/write来实现,而对于InnoDB来说,一般会采用行级锁。毕竟锁住整张表影响范围太大了。
另外一个表级锁是MDL(metadata lock),用于并发情况下维护数据的一致性,保证读写的正确性,不需要显式的使用,在访问一张表时会被自动加上。
常见的一种锁表场景就是有事务 *** 作处于:Waiting for table metadata lock状态。
MySQL在进行alter table等DDL *** 作时,有时会出现Waiting for table metadata lock的等待场景。
一旦alter table TableA的 *** 作停滞在Waiting for table metadata lock状态,后续对该表的任何 *** 作(包括读)都无法进行,因为它们也会在Opening tables的阶段进入到Waiting for table metadata lock的锁等待队列。如果核心表出现了锁等待队列,就会造成灾难性的后果。
通过show processlist可以看到表上有正在进行的 *** 作(包括读),此时alter table语句无法获取到metadata 独占锁,会进行等待。
通过show processlist看不到表上有任何 *** 作,但实际上存在有未提交的事务,可以在information_schemainnodb_trx中查看到。在事务没有完成之前,表上的锁不会释放,alter table同样获取不到metadata的独占锁。
处理方法:通过 select from information_schemainnodb_trxG, 找到未提交事物的sid,然后kill掉,让其回滚。
通过show processlist看不到表上有任何 *** 作,在information_schemainnodb_trx中也没有任何进行中的事务。很可能是因为在一个显式的事务中,对表进行了一个失败的 *** 作(比如查询了一个不存在的字段),这时事务没有开始,但是失败语句获取到的锁依然有效,没有释放。从performance_schemaevents_statements_current表中可以查到失败的语句。
处理方法:通过performance_schemaevents_statements_current找到其sid,kill 掉该session,也可以kill掉DDL所在的session。
总之,alter table的语句是很危险的(核心是未提交事务或者长事务导致的),在 *** 作之前要确认对要 *** 作的表没有任何进行中的 *** 作、没有未提交事务、也没有显式事务中的报错语句。
如果有alter table的维护任务,在无人监管的时候运行,最好通过lock_wait_timeout设置好超时时间,避免长时间的metedata锁等待。
关于MySQL的锁表其实还有很多其他场景,我们在实践的过程中尽量避免锁表情况的发生,当然这需要一定经验的支撑。但更重要的是,如果发现锁表我们要能够快速的响应,快速的解决问题,避免影响正常业务,避免情况进一步恶化。所以,本文中的解决思路大家一定要收藏或记忆一下,做到有备无患,避免突然状况下抓瞎。
京东到家程序员离职当天删库跑路获刑,法院判决的依据是什么?下面就我们来针对这个问题进行一番探讨,希望这些内容能够帮到有需要的朋友们。
又一程序猿“删库跑路”被判刑,一名29岁的程序猿录某没经公司批准,在辞职当日,擅自将即将来袭的京东到家平台系统软件编码全删,组成毁坏计算机信息系统软件罪,被被判有期徒刑10个月。
上海市杨浦区人民法院的刑事判决书表明,2021年3月,录某新员工入职上海某公司,承担京东到家平台的编码产品研发工作中。同一年6月18日,录某从公司辞职。
就在辞职当天,录某未经同意许可用自己账户登录编码 *** 纵服务平台,将其在职人员的时候所写京东进家平台优惠券、预算系统及其补助标准等编码删掉,造成公司原本定按时发布新项目推迟。
录某删掉编码后,为确保系统运作顺畅,公司又耗费3万余元聘用第三方公司恢复数据库。人民法院觉得,被告录某违背国家规定,对计算机信息系统软件中储存数据信息开展删掉,严重后果,其个人行为已组成毁坏计算机信息系统软件罪,后被判录某有期徒刑十个月。
值得一提的是,程序猿“删库跑路”被定罪的事儿并许多见。2020年2月23日,港股发售公司微盟集团(02013HK)一位IT运维职工贺某因“生活不容易、乏力还款网上贷款”等缘故,在其本人居所根据连接电脑公司虚拟专用网络、登录公司网络服务器后实行删掉每日任务,4分钟便将微盟网络服务器内数据信息全删。
贺某的“删库”个人行为造成300多万客户没法正常的应用微盟SaaS商品,常见故障时间长达8天14个钟头。微盟“删库”事情出现后,隔日新房开盘,公司市值蒸发超6亿港元。
2020年9月,贺某被被判有期徒刑6年,裁决书中表露,贺某称是喝醉酒因生活不容易、乏力还款网上贷款等本人缘故造成做出“删库”个人行为。
除开微盟,链家地产也曾遭受“删库”困境。2018年6月,链家地产公司数据管理员韩某就因删掉公司财务报表及有关应用软件,导致公司财务管理系统无法登录,造成链家地产公司耗费18万余元还原系统。后判刑组成毁坏计算机信息系统软件罪,被判有期徒刑七年。
易控网盾文件加密软件–-企业数据保密系统!防离职删除数据,防员工离职拷贝数据泄密、防外发文件数据泄密,防第三方扩散机密文件泄密!私下将设计图纸、开发代码、财务信息、客户资料等等重要的电子文档在完全不改变用户的习惯下进行自动加密,即使这些文档被非法带离企业也无法解密和应用。
对于外发给客户(第三方)的文件,可控制对方的打开时间和次数等限制!同时可设置对员工电脑文件自动备份,数据防删除功能可以有效防止恶意删除造成企业数据的遗失!从源头防控企业数据安全!
“删库跑路”的段子一直在IT圈里广为流传,是很多程序员小哥发泄压力的口头禅。意思是互联网公司中掌握着重要信息的系统研发人员,在离开公司时由于各种不满情绪等原因,在未经公司许可的情况下,轻轻敲下一段代码,便能删除所有文件,让公司损失惨重,从而达到了自己宣泄情绪的目的。删库一时爽,后果很严重。
上海市杨浦区人民法院消息,一名29岁的程序员录某未经公司许可,在离职当天,私自将即将上线的京东到家平台系统代码全部删除,构成破坏计算机信息系统罪,被判处有期徒刑10个月。
刑事判决书显示,录某1992年出生,2021年3月入职上海某公司,负责京东到家平台的代码研发工作。同年6月18日,录某从公司离职。
就在离职当日,录某未经许可用本人账户登录代码控制平台,将其在职期间所写京东到家平台优惠券、预算系统以及补贴规则等代码删除,导致公司原定按期上线项目延后。
录某删除代码后,公司花费3万元聘请第三方公司恢复数据库。
2021年9月23日,录某因涉嫌犯破坏计算机信息系统罪被刑事拘留,同月30日被逮捕。
法院认为,被告人录某违反国家规定,对计算机信息系统中存储数据进行删除,后果严重,其行为已构成破坏计算机信息系统罪,后判处录某有期徒刑十个月。
对于程序员来说,通过删除数据宣泄情绪是极其错误的行为,不仅对公司经营造成严重影响,更将因触犯法律,受到法律的惩处。
说到删库跑路,这种事情并不少见。
以创建wordpress网站的数据库为例
1、创建数据库
创建可指定字符,或者不指定字符,如果不指定字符,默认为 utf8mb4 和 utf8mb4_0900_ai_ci
2、创建用户
可自行指定用户可访问的IP地址范围。
3、授权用户
4、直接一步到位
或者 这种方法 :创建并授权用户,是二和三的合并。
1、查看数据库
show databases可查询所有存在的数据库
2、查看用户信息
用户信息在系统数据库mysql中的user表中。密码查询不会显示明文密码,而是显示为加密后的密文。
3、查看用户权限
有两种方式查看。
第一种方式 : show grants for 'userwordpress';
第二种方式: select from mysqluser where user='userwordpress'G;
g 相当于’;’
G使每个字段打印到单独的行,也有 ’;' 的作用
只能查出哪个数据库的哪张表的权限,如查userwordpress在mysql数据库的user表的权限,显示都是N(no),没有权限,如果查root用户就都是Y(yes)选择了。
用drop而非delete,简单的区分就是,drop是删除表,truncate与delete则是删除表中记录。
删除用户
同理,删除数据库
用drop删除时,会有确认信息,为了防止误删。(删库跑路,请谨慎 *** 作)
京东到家程序员离职当天删库跑路,对公司会产生什么影响?下面就我们来针对这个问题进行一番探讨,希望这些内容能够帮到有需要的朋友们。
一些人们在工作中情况下,总是会碰到他人的为难,可是当自身遭受欺压以后,有的人不容易挑选委曲求全,反而是还击回家。可是她们还击的方法的确不正确的,到最终后悔莫及的也是自身。京东到家程序员辞职当日删库跑路了,这给公司导致了哪些不良影响?
这名程序员根据面试赶到京东到家这一公司工作中,作为一名见习生,一直十分勤奋的工作中。平时给公司制作一些优惠劵的小程序,给公司写一写编码。可是直到自身见习期到了以后,公司却告知自身不容易录用。由于这名程序员在通常的体现不足好,因此并不录用这名程序员。针对这名程序员而言,自身每日那么勤奋的工作中,则是白色给他人干活儿。最终程序员在辞职的情况下,将京东到家的编码给所有删完后。造成京东到家这一程序流程崩溃了,导致了特别大的损失。
程序员不但将自身写的编码给删除了,还将所有的系统软件都给删除了。最终京东到家,只有去寻找其他公司帮助,将系统软件还原,也为她们公司导致了特别大的损失。最终京东到家提起诉讼了证实程序员,这名程序员也总算了解自已的作法是失误得了。他在与京东到家商议以后,赔付了京东到家的损失。可是针对这名程序员的作法违反规定了,他也需要接纳法律法规上的处罚,对于此事程序员表明十分的后悔莫及。
在此次事情上,双方全是有不正确的,要想白色去利用程序员,而不愿将他转正定级,京东到家那样的行为也是十分令人恼火的。可是程序员可以利用合理合法的利益来保护自身,而不是将全部的编码全删,导致他人的损失,也让自身追悔莫及。
试用期被劝退,男子删库跑路被判刑十个月,判刑的依据是什么?下面就我们来针对这个问题进行一番探讨,希望这些内容能够帮到有需要的朋友们。
张某新员工入职上海某著名互联网技术公司从业计算机软件产品研发工作中,承担公司网络购物平台一部分标准代码产品研发。3个月后,张某因试用期未达标被公司辞退,并于辞职当日,没经公司批准擅自将即将来袭的系统软件代码全删。因此,公司只有推迟发布系统软件,并付款数万元的花费聘用了第三方数据公司开展数据修复、机构员工再次撰写代码。近日,经杨浦区检察院立案侦查,张某涉嫌损坏计算机系统软件罪被人民法院判刑刑期十个月。
这事虽然是张某不对,可是什么样子的人事部门和工程项目经理,必须等3个月试用期完毕才告知他人不适合?这不是直接了当了有欺压人的行为吗?请人来使用,试用完就解雇,段子如愿以偿了,工作能力差点儿的人事部门和工程项目经理,2个月不上应当就能看得出这人是不是适合了,强大点的,从办事设计风格,工作效能,工作方法,价值观就能看得出需不需要再次了,3个月后才解雇,太摧残,也太损了,因此,劝告诸位招聘面试者,第一是不必像张某那麼不理智,第二是维持自身的观点,保持警惕,一般来说,你工作能力强,有信心,可以立即招聘面试的情况下规定试用期减少,随后一个半月上下明确提出转正定级规定的,假如这类有效且平等的需求都不可以达到,表明公司自身内心都有鬼,或是没有布局。
审理结果先慢一点看,“著名互联网技术公司”竟然可以让一个平常的开发者删除所有代码,还必须数据信息公司修复、员工再次编号,意思是一点代码都没留有?这一“著名互联网技术公司”没有接口测试、开发工具?别的开发者全是云开发?没有SVN没有github一个未过试用期的开发者竟然有着删除所有代码的权限?就离大谱。总之我呆过的公司每一个插口的权限都需要独立申请办理,开发工具、接口测试、工作环境相单独,要求工作人员、运维管理工作人员、开发者相单独。要想凭一个人删库跑路,还真不实际。
删代码要删整洁没法修复并不是那麼非常容易的,实际上略微靠谱一点的公司根本就不太可能。GitHub/Gitlab这类要删代码库务必有代码库管理人员权限。一般员工没必要有管理员权限,试用期员工就更别说了。即使GitHub/Gitlab上删掉,或是压根没有用这种,以Git的特性每一个程序员在远程服务器都是会有一个复制,较多略微到期。能造成删代码全公司也没有备份数据还需要找专业的数据信息公司修复,思来想去只有一个很有可能:代码仅有网络服务器上一份,可能是局域网络百度云盘,根本没有代码版本号系统软件,开发设计便是立即改百度云盘上的内容。充分考虑中国公司废弃物没有道德底线,还真可能是那样。
著名互联网技术公司,这下确实知名了,令人哭笑不得,便是不清楚实际哪一家公司。前座回应说的都没问题,公司权限管理方法毫无疑问脏乱,代码版本控制软件更为一比吊糟。但是管理方法做的再多,都没有不通风的墙,有些人的位置就会有系统漏洞,账户使用、你帮我看下或是代码埋雷等,都有可能造成问题发生。有关账户这个问题,许多员工应当都经历过本人台式电脑规定好多个月务必拆换登陆密码的。的确有公司会解雇试用期员工,以前我还在网易游戏时,一个组的一个试用期员工就转正定级不成功,由于试用期间,他搞出了个锅,之后他去拼多多平台了。
有的公司的确会恶心想吐员工,以成本低来获得人力资本,但那样做对公司人才储备也有市场拓展实际上也是非常不利的,代码很有可能特别差或是没有尤其精通业务的专业技术人员。但有的员工的确十分善于招聘面试,具体专业能力不好。或是应用期内搞了个大铁锅,在试用期搞出这样的事情,一般直系亲属领导干部会立即背黑锅的,这并不炸d不立即消除,留到后边发生爆炸吗?但是胜败乃兵家常事,有得必有失。被辞退不会这般骚 *** 作,公司有管理方法系统漏洞,咱不可以钻系统漏洞去违反规定。这样子拥有前科,想成功是不太可能的了,再找个工作,也有许多艰难的。在没有财富自由以前,那样删库跑路,就相当于不给自身留后路,给未来挖好啦墓葬。
试用期的员工都能有清空朋友圈所有代码的权限?一般情况下,产品研发公司会更加重视风险控制,程序猿中间互相配合协作,一般也仅有自身承担版块的一部分权限,新项目中的一部分代码,并不是一个人承担全部代码,也不太可能写完全部的代码。假如真得有误删除代码的员工,一般也会出现备份数据,再或是修复一下删掉的一部分代码,一般情况下也不会危害公司的服务项目。假如公司真的是试用期的员工,都是有清空朋友圈全部代码的权限,只有说公司咎由自取了,不在乎自身公司的风险管理。在或是公司不容易只招试用期的员工吧?(这公司要慎重了在说到这一张某,成人或是要理性。“删库跑路”是业内吐槽的一句嘲笑,大伙儿约定成俗的依然会遵循领域标准,我国也是有明文规定该方式会被判处。
2020年2月,微盟系统软件就发生过程序猿删库跑路的状况,微盟发售一天内挥发超10亿人民币,上百万客户遭受危害,最终这名程序猿被被判6年刑期。2020年4月,山西某高新科技技术工程师因公司未向其兑付开发设计奖赏,故意变更更换程序流程代码,最终被被判拘留5个月,判缓6个月。2018年6月,韩某在坐落于北京市某省链家地产公司,运用职位之便,删掉财务报表及有关应用软件,造成没法开展会计月结,最终判刑刑期7年。
2018年,杭州科技公司的技术主管邱某因不满意公司裁员,远程登陆网络服务器删除了数据库查询上的一些重要数据库索引和一部分报表,导致该公司立即财产损失225万余元,后邱某判刑赔付公司8万余元,判处2年6个月,判缓三年。2017年,北京一软件工程师朱某辞职后因公司无法按期付清薪水,将网址源代码全删。他的个人行为立即造成公司财产损失265万余元,后因毁坏计算机系统软件罪,被判刑期5年。一时冲动的个人行为,只能被怀疑个人修养不高,也只能对公司导致短暂性的危害,可是却赌上自身的工作前途。
返回事情:可能是个小公司,风险控制做得很差了,典型性的开发者权限过问题能了解自主创业期为了更好地提高公司高效率,给到研发人员多一些权限,想减少工作流程,加速上速率,说白了简易的工作中开发设计自身全做了就可以了,他人总之也没他懂但效果和风险性始终共存,那么做是能加速发布速率,但风险性也接踵而来就例如这一标题的风险性,开发者哪些权限都是有,不兼容岗位职责彻底不分离出来,一个试用期员工就能把握全公司各系统软件权限,那并不是想删就删这或是智力比较有限的,仅仅删除了,没动哪些歪脑筋。如果是卖给竞争者呢?公司不就立即废了吗?权限管理方法很重要,工作流程长一点多几个审核也没弊端,风险管理严苛一点也是理所当然日常见着是会感觉不便,但真出了事,全删掉了重新写,难道说并不是更不便吗期待能造成各公司高管高度重视吧,风险管理工作中确实很重要,运营一家公司并不是闷头弄钱那麼容易的事
但是这件事也给一些公司敲醒过来敲警钟,最先一切管理决策应当聆听员工的汇报与建议,不然很容易导致不可避免的损害;次之,公司在选拔任用层面,除开技术性的考虑到,还需要考虑到为人和职业道德规范。在职人员场中尤其是许多业务外包特性的公司,因为在追要余款的历程中发生了不愉快的事儿,会随着被删除数据库等实际 *** 作给公司导致很大的业务流程处于被动,并且由于数据库查询被删掉给公司导致很大损害的事儿几乎在互联网行业每一年都很多的存有,并且每一次发生导致的不良影响全是极为的比较严重,2021年这样的事情也是发生了有几回。
像这类辞职的是泄私愤把代码给删掉的事相对性也是较为罕见,中国人会有句老话和平分手,因此一般我们都是会留些脸面,不会把事儿弄得尤其的肌肉僵硬,自然还真有锈与骨的人宣泄自身的不满意,作出这类偏激的事儿这样的事情的结果是双方都不可以善始善终,乃至危害到高级程序员的全部的职业发展。这样的事情没有最终的大赢家,从公司的方面来研究或是要好好爱自己的员工,公司要做大或是要用恰当的方法来看待员工,一切状况下不必意气用事,最终的效果也只能是同归于尽。
数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:
1删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。
2删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件。
3如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。
京东到家程序员离职删库被判刑10个月,删库会给公司造成什么影响?下面就我们来针对这个问题进行一番探讨,希望这些内容能够帮到有需要的朋友们。
在工作中的情况下,年轻人是不容易委曲求全的,有气就会宣泄出去。可是有一些年轻人的行为表现是很偏激的,早已触及了法律法规。例如上海易程序猿一实习期被辞退,为了更好地发泄情绪,将公司的数据库查询都删除了,随后老板跑路。公司在看到这样的事情以后,马上将这名员工告上了法院,而一审判决也出来,员工要做10个月的牢。绝大多数网民觉得这一结果是很常规的,由于这一员工的删库跑路给公司产生的不仅仅是经济发展上的损害,还会继续缺失消费者的信誉度,让公司有负面影响的危害。
实习期的过程中假如员工专业能力不太好,那公司就会有很有可能开展解雇。因此这一员工就被公司解雇了,而且很有可能没有得到对应的赔付,由于锈与骨,就在不理智下作出了这样的事情。但是最终这一员工也为了自己的个人行为担负了相对的责任,被公司告上了法院。
系统软件的代码是十分巨大的,不太可能由一个员工写出去,因此公司的管理方法是具有一定系统漏洞的,例如钱税层面的问题。在被员工删除数据库查询以后,这一代码也即将来袭了,因此公司只有请第三方应急数据恢复,随后再次撰写代码,是十分繁琐的。而且这一公司真的是管理方法很疏松的,由于有一个网民就共享了自身历经,他所属的公司,每一个插口的管理权限全是要独立申请办理的,开发工具、接口测试、工作环境相对性单独。
在工作中的历程中,员工一定要理智一点,即使遭到到了不合理的看待,也需要保存直接证据,随后申请劳动仲裁,不必把自己的知名度搭进去。终究你或是很年轻的,假如入狱了,也会干扰你的日常生活。
以上就是关于MySQL数据库表被锁、解锁,删除事务全部的内容,包括:MySQL数据库表被锁、解锁,删除事务、京东到家程序员离职当天删库跑路获刑,法院判决的依据是什么、程序员离职后泄露公司代码后果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)