<select id="Taugj"><hgroup id="Taugj"></hgroup><em id="Taugj"><mark id="Taugj"><object id="Taugj"></object></mark></em></select><aside id="Taugj"><legend id="Taugj"><caption id="Taugj"><bdo id="Taugj"><em id="Taugj"></em><dfn id="Taugj"><small id="Taugj"><output id="Taugj"><abbr id="Taugj"></abbr></output></small></dfn></bdo><dt id="Taugj"></dt><textarea id="Taugj"><kbd id="Taugj"><nav id="Taugj"><ins id="Taugj"></ins></nav><td id="Taugj"><figure id="Taugj"></figure></td></kbd></textarea><keygen id="Taugj"></keygen></aside></legend></caption><dl id="Taugj"><kbd id="Taugj"></kbd></dl>
<figcaption id="Taugj"><aside id="Taugj"><ul id="Taugj"></ul></aside><ruby id="Taugj"><i id="Taugj"><label id="Taugj"></label></i></ruby></figcaption><param id="Taugj"><progress id="Taugj"><code id="Taugj"></code></progress><mark id="Taugj"><aside id="Taugj"><param id="Taugj"><fieldset id="Taugj"><colgroup id="Taugj"><var id="Taugj"><area id="Taugj"></area><tbody id="Taugj"><ul id="Taugj"></ul></tbody><td id="Taugj"></td></var></colgroup><dt id="Taugj"></dt><dt id="Taugj"></dt><form id="Taugj"><ruby id="Taugj"><bdo id="Taugj"><col id="Taugj"><select id="Taugj"></select></col></bdo></ruby></form><video id="Taugj"></video><tfoot id="Taugj"></tfoot></fieldset><label id="Taugj"><noframes id="Taugj"><ruby id="Taugj"><legend id="Taugj"></legend></ruby>
      <embed id="Taugj"><b id="Taugj"><ruby id="Taugj"></ruby></b></embed><th id="Taugj"></th><sup id="Taugj"></sup><rt id="Taugj"></rt>
      <bdo id="Taugj"><dt id="Taugj"></dt></bdo>

          |
          |
          51CTO旗下网站
          |
          |
          移动端

          MySQL误删数据救命指南:开发人员必收藏

          要时刻保持对线上生产环境的敬畏之心。虽说现在大部分操作可以靠平台来完成了,但平台也不是万能的,不也发生过平台本身的缺陷造成数据丢失、代码回滚、部署失误等事故嘛,我就不点名了。做好备份,不管是物理备份还是逻辑备份!

          作者:年底卖茶冲KPI来源:java版web项目|2019-10-18 09:55

          【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

          首先看下mysql误删数据排名最前的几种是:

          1.误删文件

          2.误删库、表

          3.错误全表删除 / 更新

          4.升级操作失误

          都来看看你***过几个,hoho。

          简单说下我亲手造的一个大事故吧。

          那大概是一个春暖花开的季节,我的内心是激动澎湃的,因为已经安排了休假计划。在这前几天,已经把一个新项目的数据库环境都部署好了,包括自动化备份。

          等我美美的出去玩的时候,悲剧发生了,业务要求进行数据回滚,但发现备份文件不可用,原因是 备份时指定的字符集和表字符集不一致。我勒个擦,原来该项目采用新的字符集,但是我没有认真检查确认并修改备份脚本,结果导致备份失效。***,因为这个事,当季度绩效结果被降档,boss也为此背锅~

          好吧,回到正题,先说几点我平时预防误操作导致文件/数据丢失不成熟的建议:

          1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考 Windows / Mac OSX做法,删除文件时先进回收站)。

          删除数据库、表时,不要用drop命令,而是rename到一个专用归档库里;

          2.删除表中数据时,不要直接用delete或truncate命令,尤其是truncate命令,目前不支持事务,无法回滚。

          3.用delete命令删除数据时,应当先显式开启事务,这样误操作时,还有机会进行回滚。

          4.要大批量删除数据时,可以将这些数据insert...select到一个新表,确认无误后再删除;蛘叻雌涞佬兄,把要保留的数据写到新表,然后将表重命名对掉。

          5.执行重要命令之前,先准备好相关命令,再三确认无误才之行,对于新鸟而言,***请你的boss坐你旁边镇场几次,否则极有可能会连累大家~

          以上几条,也是我自己奉行的原则。总之,要时刻保持对线上生产环境的敬畏之心。虽说现在大部分操作可以靠平台来完成了,但平台也不是***的,不也发生过平台本身的缺陷造成数据丢失、代码回滚、部署失误等事故嘛,我就不点名了。

          做好备份,不管是物理备份还是逻辑备份!

          做好备份,不管是物理备份还是逻辑备份!

          做好备份,不管是物理备份还是逻辑备份!

          重要的事情说三遍都不嫌多。

          说完预防措施,我们再说万一发生误操作时,怎么以最快速度进行补救。 我们分别列举几种常见的情况:

          1.执行DROP DATABASE / DROP TABLE命令误删库表,如果碰巧采用共享表空间模式的话,还有恢复的机会。如果没有,请直接从备份文件恢复吧。神马,你连备份文件都没有?那麻烦退出DBA届吧,一个连备份都懒得做的人,不配成为DBA的。

          2.接上,采用共享表空间模式下,误删后立刻杀掉(kill -9)mysql相关进程(mysqld_safe、mysqld),然后尝试从ibdataX文件中恢复数据。

          3.误删除正在运行中的MySQL表ibd或ibdataX文件。请立即申请对该实例进行维护,当然,不是指把实例关闭,而是把业务暂停,或者把该实例从线上环境摘除,不再写入新数据,然后利用linux系统的proc文件特点,把该ibd文件从内存中拷出来,再进行恢复,因为此时mysqld实例在内存中是保持打开该文件的,切记这时不要把mysqld实例关闭了。

          4.接上,把复制出来的ibdataX或ibd文件拷贝回datadir后,重启mysqld进入recovery模式,innodb_force_recovery 选项从 0 - 6 逐级测试,直至能备份出(整个实例或单表的)所有数据后,再重建实例(或单表),恢复数据。

          5.未开启事务模式下,执行delete误删数据。意识到后立即将mysqld(以及mysqld_safe)进程杀掉(kill -9),不要任何犹豫,然后再用工具将表空间数据读取出来。因为执行delete删除后,实际数据并没被物理清除,只是先打上deleted-mark标签,后续再统一清理,因此还有时间差。

          6.执行truncate误清整表。如果没使用共享表空间模式的话,基本别想了,走备份恢复+binlog吧。

          7.执行不带where条件的update,或者update错数据。也别费劲了,走备份恢复+binlog吧。

          【编辑推荐】

          1. 从大神的角度深入理解MySQL,值得收藏~
          2. 监测数据库的健康和行为:有哪些重要指标?
          3. MySQL中一个双引号错位引发的血案
          4. 填坑利器?Redis如何弥补传统MySQL架构的不足
          5. 从Gartner报告看中国数据库:差距虽在,“狼性”凸显
          【责任编辑:庞桂玉 TEL:(010)68476606】

          点赞 0
          分享:
          大家都在看
          猜你喜欢

          订阅专栏+更多

          16招轻松掌握PPT技巧

          16招轻松掌握PPT技巧

          GET职场加薪技能
          共16章 | 晒书包

          289人订阅学习

          20个局域网建设改造案例

          20个局域网建设改造案例

          网络搭建技巧
          共20章 | 捷哥CCIE

          645人订阅学习

          WOT2019全球人工智能技术峰会

          WOT2019全球人工智能技术峰会

          通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
          共50章 | WOT峰会

          0人订阅学习

          读 书 +更多

          Linux环境下C编程指南

          本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,通过列举大量的程序实例,使读者很快掌握在Linux平台下进行C程序开发的方法和技...

          订阅51CTO邮刊

          点击这里查看样刊

          订阅51CTO邮刊

          51CTO服务号

          51CTO播客