原文:墨天轮(https://www.modb.pro/db/6930,复制到网页中打开,即可查看)

导读:本文我们盘点了往年发生的一些删库事件,我们该如何做到更好地预防和处理删库实践呢?

本月,多名网友反馈购物推荐网站什么值得买及APP无法访问。晚上10点多官方发表了公告,称服务器遭遇大面积攻击,网站及APP出现异常,目前正在逐步恢复中。针对之前传闻的数据丢失及泄露,什么值得买官方表示否认。但是此次疑似删库事件在网上也是引发了很多热议,下面我们来盘点下往年发生的一些删库事件,思考我们该如何做到更好地预防和处理删库事件。

顺丰事件

2018年9月19 日晚,据微博网友大佬坊间八卦爆料,顺丰的一个高级工程手误把线上系统一个库删除了,导致某项服务无法使用并持续 590 分钟。然后跑路了!

事件详情:

工程师邓某在接到该变更需求后,按照操作流程要求,登陆生产数据库跳转机,通过navicat-mysql客户端管理工具,连入SHIVA-OMCS的RUSS库进行操作。

但在操作过程中,该运维发现选错了RUSS 数据库,打算删除执行的sql。

在选定删除时,因其操作不严谨,光标回跳到RUSS库的实例上,在未看清所选内容的情况下,便通过delete执行删除,同时,他忽略了弹窗提示,直接回车,导致RUSS库被删除。

因工作运维人员工作不严谨的操作,导致OMCS运营监控系统发生故障,该系统上临时车线上发车功能无法使用并持续约590分钟。同比9月5日的929条临时车需求,此次故障对业务产生了严重的负面影响。

Gitlab删库事件

2017年1月底,Gitlab工作人员由于夜间开车时间很长,错误的将 db1.cluster.gilab.com (生产库)的数据库删除,而不是db2的。丢失了 6 小时的数据库数据。

事件详情:

Gitlab的一位系统管理员在给线上数据库做负载均衡工作时,遭受了DDoS攻击。在阻止了攻击之后,运维人员发现了数据库不同步的问题,便开始修复,在修复过程中,错误地在生产环境上执行了数据库目录删除命令,导致300GB数据被删除,Gitlab被迫下线。在恢复的过程中,他们发现只有db1.staging的数据库可以用于恢复,而其它的5种备份机制都不可用。db1.staging 是6小时前的数据,而且传输速率有限,导致恢复进程缓慢,Gitlab 最终丢掉了差不多6个小时的数据。

起因是Gitlab检测到垃圾邮件发送者通过创建片段来攻击数据库,使其不稳定,于是运维block攻击者的IP,并移除用户发送垃圾邮件。之后运维A发现db2.staging复制滞后生产库4GB的数据(据后期2nd Quadrant的CTO – Simon Riggs 建议,PostgreSQL有4GB的同步滞后是正常的),运维A开始尝试修复db2,但复制失败,运维A在尝试了多种方案之后依然如此。

运维A决定删除该db2数据库目录,令其重新复制。由于夜间开车时间很长,运维A错误的将 db1.cluster.gitlab.com (生产库)的数据库删除,而不是db2的。大约 300 GB 左右的数据只剩下约4.5 GB。

随后虽然有号称有五重备份机制(常规备份(24小时做一次)、自动同步、LVM快照(24小时做一次)、Azure备份(只对 NFS 启用,对数据库无效)、S3备份),没有一个可靠地运行或设置,最终只能基于LVM的备份(最近6小时以前),还原了6 小时前的备份。恢复期间Gitlab直播了这次恢复过程。

2017/01/31 18:00开始数据异常,截止2017/02/02 02:14,GitLab.com恢复正常。期间丢失了 6 小时的数据库数据(问题,合并请求,用户,评论,片段等)。Git / wiki 存储库和自托管安装不受影响。根据GitLab从日志里得出的结论,有707位用户丢失数据,5,037项目丢失,受事故影响的用户基数不到1%。

verelox.com删库事件

2017年6月,一家荷兰海牙的云主机商 verelox.com,一名前任管理员删光了该公司所有客户的数据,并且擦除了大多数服务器上面的内容。最终导致 Verelox 暂时将网络下线。

网络剪报服务商 - Instapaper事件

2017年2月9日至2月10日下午7时30分,Instapaper服务突然中断,事故起因是2014年4月之前创建的RDS实例的2TB文件大小限制,造成了不小的损失。

事件详情:

Instapaper 最初的全文检索使用一台 Sphinx 服务器直接和 MySQL 联合提供搜索,这个搜索使用 AWS EC2 大约70GB 内存,4TB 存储的资源:

Instapaper 的索引数据量(数据库的数据量未知),在2016年5月时数据量2.2TB,每月增长约110GB,后来实在慢的不行,最后选择了 AWS 的 elasticsearch cluster来承载这项服务。而最终,还是败在了存储,数据写入失败直接导致数据库宕机。

携程删库事件

2015年5月28日上午11时,携程网突然陷入瘫痪。携程回应称携程部分服务器遭不明攻击,在此次故障中全部遭受物理删除,且备份数据也无法使用。但在5月29日,携程发布官方情况说明称,此次事件是由于员工错误操作,删除了生产服务器上的执行代码导致。

任何程序都会有Bug,任何系统都会有异常,历史发生的删库事件,是提醒我们需要时刻注意风险,积极总结和反思,预防那些可以避免的异常,妥善处理已经发生的异常,让产品更好地服务客户。

说道删库不得不提rm,rm 是 linux 系统下删除文件的命令,-r 代表删除这个下面的一切,一切的一切那种的一切。f 表示不需要用户确认,直接执行。通常这个命令都是指定文件夹用的,比如:

rm -rf /home/test/

就是删除 /home/test/ 这个文件夹下面的所有东西。但是如果后面的文件夹路径没有加对,rm -rf / 在服务器上也就意味着删库了!

所以!严重警告:rm是非常危险的!

面对上面的这些删库事件,我们该如何进行反思?做到更好地预防和处理删库事件呢?

首先,要有完善、有效的备份和容灾机制。诚然很多企业都有了一整套的备份、容灾机制,但是这套备份机制能否真实奏效是需要检验的。我接触过某大型企业,投入巨资兴建的灾备中心,从未正式切换过,这样的灾备在故障来临时也很难有人拍板去进行切换,所以备份的有效、容灾手段的有效是必须确保的。注意,备份的恢复速度必须足够的考虑到,磁带的低效备份关键时刻会害死人。

其次,要有完善的故障处理策略和流程。对于不同系统,在关键时刻要优先确保什么,是要订立规则的,有了规则才能照章办事,不走错方向,不无辜背锅。几年前某国内金融系统出现数据坏块,同样选择了带病修复,最终没能解决问题,同样选择了回档承担了数据损失。

再次,要有端到端融会贯通的应急机制。也就是说不仅仅技术上具备容灾应急的响应方案,从业务端同样要有对应的预案,以便应急时同步处理,区别对待。很多时候,有了业务上的应急、降级服务方案,技术层面的处理就能够从容许多。

最后,要有能够快速协同的团队资源。很多时候严重的故障,需要较大规模的专业团队协作处理,原厂商和第三方在其中都承载着重要的角色,所以关键时刻,要能够获得内外部快速及时的支持,尤其是在绵延数天的高强度工作中。

还有无论是运维、DBA 还是程序员们都应该在日常 Coding 时严加注意操作规范,铭记“一失手成千古恨”的后果。在审查时也要做好自动容灾、数据同步的步骤,最重要的是不要忘记备份!!!

想了解更多关于数据库、云技术的内容吗?

快来关注“数据和云"、"云和恩墨"公众号及"云和恩墨"官方网站,我们期待大家一同学习与进步!

墨天轮小程序”DBASK“在线问答,随时解惑,欢迎了解和关注!

支持delete吗_那些年删过的库,跑过的路,你从中找到解决方法了吗?相关推荐

  1. 那些年删过的库,跑过的路,你从中找到解决方法了吗?

    导读:本文我们盘点了往年发生的一些删库事件,我们该如何做到更好地预防和处理删库实践呢? 本月,多名网友反馈购物推荐网站什么值得买及APP无法访问.晚上10点多官方发表了公告,称服务器遭遇大面积攻击,网 ...

  2. idea修改java和jsp不起作用_使用IDEA编写jsp时EL表达式不起作用的问题及解决方法...

    在使用IDEA开发maven+springMVC项目时遇到不加载EL表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧 加载如下JSP代码: Title ${lists.usernam ...

  3. 电脑应用程序错误怎么办_遇到电脑桌面应用程序无法正常启动(0xc0000142)怎么办?0xc0000142解决方法...

    遇到电脑桌面应用程序无法正常启动(0xc0000142)怎么办?0xc0000142解决方法 说起电脑这东西让人摸不清头脑:有时对它好呢?电脑也对你好,你对它不好:它就无故给你来点小故障,小弹窗啥的. ...

  4. python 重命名文件出现乱码_下载的文件名总是「乱码」?这里有各平台的解决方法...

    说起「乱码」,没遇到过的电脑用户可能是极少的,尤其在国内中文环境下.暴露年龄的「烫烫烫」系列乱码已经绝迹,现如今遇到的往往是类似「%E9%AB%98%E9%A2%91」和「èªå¨é£è±è½»ä¼¼ ...

  5. 电脑tdr太低是什么意思_电脑帧数变低是什么原因 电脑帧数变低解决方法

    有网友问电脑玩游戏很卡的情况,经过分析可能是网友的帧数很低造成电脑卡也是原因之一.可能在人多的地方就很卡.卡屏的情况,那么关于 电脑帧数变低 怎么办呢? 一般情况电脑配置没有达到要求可能会造成电脑玩哟 ...

  6. 我的世界java老崩溃怎么办_我的世界总是崩溃怎么办 我的世界无法正常启动崩溃解决方法...

    我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现崩溃或者无法启动的情况,玩家在遇到的时候不知道怎么办,一起来看看我的世界无法正常启动以及崩溃的解决方 ...

  7. mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...

    项目使用django+mysql 在linux中使用的是mysql5.7,导入数据提示:Field * doesn't have a default value 想要解决问题就需要知道在mysql5. ...

  8. vue watch 监听不到变化_关于vue中watch检测到不到对象属性的变化的解决方法

    前言 在vue开发的过程中发现一个问题:改变vue.$data中对象的属性,watch是观测不到变化,但其实对象的属性是有变化的.这--,有点难以置信! 正文 update age with 25 e ...

  9. 电脑卡顿不流畅怎么解决_使命召唤17画面卡顿怎么办-使命召唤17画面卡顿解决方法...

    使命召唤17画面卡顿怎么办?使命召唤17是一款备受许多玩家们喜爱的射击游戏,那么这款游戏内遇到卡顿情况要怎么办呢,接下来安卓市场小编为大家带来使命召唤17画面卡顿解决方法. 使命召唤17画面卡顿怎么办 ...

  10. 双系统gazebo闪退_记录Ubuntu16.04下PX4联合Gazebo仿真时遇到的问题与解决方法

    一.arm-none-eabi-gcc版本问题 在Ubuntu16.04中使用sudo apt-get install gcc-arm-none-eabi命令会自动安装默认版本(gcc version ...

最新文章

  1. 初始Java DVD项目
  2. pyspark使用ipython
  3. Android手机使用命令行增加/删除/修改密码(password/pin/pattern)
  4. 网络爬虫:采用“负载均衡”策略来优化网络爬虫
  5. nmon安装为什么重启mysql_Nmon的安装及使用
  6. Ruby入门之零基础如何学ruby以及ruby的应用/快速学习ruby/学习ruby的流程是什么?...
  7. 深度学习之边框回归(Bounding Box Regression)
  8. python的深拷贝和浅拷贝
  9. Java斗地主算法的设计与实现_斗地主算法的设计与实现–洗牌和发牌
  10. 零基础学UI设计,正确的学习方法讲解!
  11. 阿里巴巴荣获年度最佳BCM创新实践奖
  12. WEEK5 周记 作业——差分数组_TT的魔法猫
  13. WINDOWS中hosts文件位置
  14. fail can only be invoked by user TAP gesture.
  15. cocos创建九宫格图片
  16. 泡菜 亚硝酸_不要相信泡菜
  17. JDBC-使用Statement操作数据库的弊端
  18. Ubuntu18.04系统硬盘分区方法
  19. 少儿编程Scratch学习教程4--基本操作(一)特效例子
  20. 蜂鸣器的结构原理及制作

热门文章

  1. hosts文件位置在哪里?(3种打开hosts文件的方法)
  2. C语言预处理指令-单片机必备技能
  3. go语言 调用接口的方法
  4. python计算球体表面积和体积_图解球体表面积和体积正确计算方法及计算公式(原创)...
  5. Android中调用百度翻译Demo
  6. #379 – 将ToolTip当做放大器使用(Using a Tooltip As a Magnifier)
  7. python中的round函数怎么解释_round函数怎么用_python中round函数怎么用
  8. 雅俗共赏——广告词之很美很强大的汉语言
  9. 双系统切换后系统时间错乱问题解决
  10. linux查看xfreedrdp指令,windows和linux的远程桌面