顺丰被删库?半个DBA的跑路经验总结

前言

最近顺丰又搞出一个热门:运维误删库事件!

看看有没有什么后路好走啊哥们~

正文

  1. 国内呆不下了,赶紧出国

首先,不要选动车,要选最近的一班飞机,尽快出国,能走高速走高速,不然选人少的路线。

没错,我们 DBA 都是常备护照的。

切记,注意看高德地图实时路况。

我们有个前辈就是删库之后开车就上二环,下午五点钟。警察到的时候他还堵在路上。

  1. 只不过是把数据干掉了


权限问题永远是大问题,做好权限回收,开发数据库和线上数据库分离,线上数据库管理权限(一般指修改表结构权限与删表权限)禁止回收,也不提供给业务直接用。

不然参考 0。

公司管理上,最好有自己的 DB 运维产品,线上数据库只允许查,改的话要有审批流程。

至于查数据要不要脱敏、导入导出流程,就看自己产品的规划和排期了。

至于 DBA 怎么保证不手滑,这个每个人有每个人的习惯。

  1. 删库什么的都是小 case

清理数据库之前一定要检查进程,是否存在数据库进程,如果存在则宁愿不搞也不要深夜搞。

公司清理数据库要有下线流程。下线一定要走流程。宁愿多租几天机房也不要丢掉数据。

不然参考 0。

原则是:

rm 文件之前先检查进程是否存在。

绝不手工 drop 库表,如果非要 drop,则应该写成 rename,truncate 也是类似,写成 rename 和 create table like 两条 sql。

删表之前可以根据表文件的最后修改时间进行再次确认,不确认就找人 review,有下线流程则走下线流程。

  1. 备份,备份,备在何处?

冷备,热备都要有,一定要每天一备。

冷备便是应对这种情况。

公司应该有自己的 DB 备份方案,并且保证执行到位。

4. 人算不如天算

关于这一点,可以单独拉一个大专题出来了,核心内容是 mysql 高可用。

简单起见,推荐这篇文章:避免硬件故障的核心解决方案是冗余。


硬件层面的 raid,软件层面的主从、热备都是为了保证某一个节点宕机,其他节点仍然能继续工作。

所有库都要有主从备份,一方面做读写分离,一方面也是为了备份、高可用。

即便有半同步复制,有些极端情况下可以认为,mysql binlog 没有同步到从库上,仍然可能存在 binlog 丢失(数据丢失)的风险。

所以应对这点,比较好的开源解决方案有 2:TiDB 和 Mysql GR。

  1. 升级也能失败?

说起来很简单,升级无非是:

准备升级

过程原理

手工升级后拓扑:


工具(mha)升级后拓扑:

  1. 操作之前有个流程

一般自己操作的时候,都不会有太多的顾忌。

但是要是拿给别人看,就要考虑一下了。

如果别人不只要看,还要 review,那这样就比较难犯重大的错误了。

如果有些操作需要夜间一个人搞,那么一定要提前列好准备,这个就比较正式了。

包括:

  1. 梳理具体的执行步骤、执行命令和每个步骤的预计结果。
  2. 如果某些步骤出错,是否要求回滚、预先制定回滚方案。
  3. 详细记录执行记录,每一步都要有反馈。
  4. 事先梳理好收尾工作。
  5. 强关联业务要事先通知,考虑到时间段和别的业务高峰,尽量让对方也安排人留守观察。
  6. 一定要严格按照步骤来进行操作。宁愿延期,不要加戏。

7. 留几个问题

  1. 如果你有机会进行 mysql 迁移和升级工作,你认为无法写入数据造成的影响大,还是写入脏数据造成的影响大?
  2. 如果数据库挂了,机器可以启动但是 mysql 进程无法启动,你这里又有昨天的备份可以恢复,你该怎么做?

3.想要删库完全不出问题,那么删库流程该怎么设计?

好了,公司还是要有自己的 DB 产品,再简陋也要有。

原文地址:http://blog.51cto.com/13732225/2178615

时间: 2024-11-14 18:30:08

顺丰被删库?半个DBA的跑路经验总结的相关文章

从删库到恢复到跑不了路-数据恢复工程师解说顺丰删库事件

本文由北亚数据恢复中心(http://www.frombyte.com)张宇所写,如有错误,祝愿各位中秋节删库还跑不了路. 事件回顾: 据悉,顺丰科技数据中心的一位邓某因误删生产数据库,导致某项服务无法使用并持续590分钟.事发后,顺丰将邓某辞退,且在顺丰科技全网通报批评.真实地玩了一把"从删库到跑路".毫无疑问地,我们又突然象被打了鸡血般,整了整衣领,挺了挺胸,存在感立马爆棚,拉个小板凳,就着中秋节的月光,絮絮叨叨地讲讲想当年.想当年,我国那啥机构,设备升级改造,生产库在线热迁,脚本

顺丰删库工程师遭开除,难道他不会恢复误删数据?

以下内容仅代表个人观点 顺丰删库事件回顾: 据悉,顺丰科技数据中心的一位邓某因误删生产数据库,导致某项服务无法使用并持续590分钟.事发后,顺丰将邓某辞退,且在顺丰科技全网通报批评.真实地玩了一把"从删库到跑路".毫无疑问地,我们又突然象被打了鸡血般,整了整衣领,挺了挺胸,存在感立马爆棚,拉个小板凳,就着中秋节的月光,絮絮叨叨地讲讲想当年. 好汉要提当年勇,回忆我们的牛X岁月 想当年,我国那啥机构,设备升级改造,生产库在线热迁,脚本写错,rm掉了,然后,我们XXX,全部恢复所有数据(此

DBA:多方式删库不跑路

语法;drop database 'DBname'; 说明:普通mysql用户需要root用户赋特定删除或者创建的权限 温馨提醒:删除数据库请多次确认是否要删除,删除数据库是不可逆的操作. 一.MySQL内置删库 [[email protected] ~]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 2

删库跑路的背后,是企业对数据安全的反思

这几天,一直在关注微盟删库事件的进展,在3月1日晚上,微盟发布最新公告称数据已经全面找回.而此时,距离事故发生的2月23日晚,过了有足足七天七夜,也就是7*24小时. 01  关于“删库跑路"的段子一直都在,而这样的真实事件也不是第一次发生了. 2018年6月,某科技公司总监因为被离职而一气之下删除了公司数据库上的一些关键索引和部分表格.虽然他事后察觉后果严重,进行了恢复,但依然给该公司造成了经济损失,被判处有期徒刑二年六个月,缓刑三年. 2018年9月,顺丰出现过一位高级工程师因手误删除了线上

搭建mysql主从复制和删库数据恢复策略

搭建主从复制 主机: [mysqld] 下增加 vim /etc/my.cnf ## 设置 server_id,一般设置为 IP server_id=8 # # 复制过滤:需要备份的数据库,输出 binlog binlog-do-db=testdb #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步) binlog-ignore-db=mysql # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用 log-bin=master-log-1 binl

“删库跑路”这件事情真的发生了 ,还是技术总监干的!

程序员经常相互开玩笑说,大不了我们"删库跑路",这是一句玩笑话,基本上也没有人这样干,但是这两天我看到了一个新闻,真有人这样干了,还是一名技术总监. 事情的经过大概是这样子的: 邱某是某某科技公司的技术总监,2014年入职到杭州的一家科技公司,这家公司的主业业务是提供 SaaS 服务. 从2014年入职到2018年,公司的主要系统都由他搭建,包括公司的SAAS系统.API系统.电子合同的签署等服务,2018年初公司大概有4万多用户. 不知道由于什么样的原因,2018年4月,老板宓某某找

ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) 删库失败问题的解决

Win8 下,MySQL5.5,root 用户登录 MySQL 5.5 Command Line Client,删除 qpweb 数据,执行命令 drop database qpweb;报错信息:ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41)解决方法如下:1. 先在 MySQL CMD 窗口找到库目录: 2. 再在系统 CMD 切换到库目录: 3. 最后将该库目录 qpweb 删除即可:

记一次差点删库跑路的事故

故事这样发生的,那是一个中午.... 老板:小a呀,咱测试项目部署在百度云服务器上,测试数据库部署在阿里云上,为了节省点流量,你把阿里云上的测试数据库迁移到百度云上吧. 小a : 好的,老板. 小a登陆测试服务器一看,咦?竟然有mysql的服务在跑,试着登陆了一下,密码不对,于是他仔细想了想,好像并没有任何项目用到这个数据库,这...是什么情况,难道是centos自带的吗 于是小a去问了度娘,还真的有centos自带mysql这一说,为了减少数据库版本不一致可能会导致的麻烦,小a果断卸载了原本的

Oracle删库跑路

--10g R2 startup mount exclusive restrict; alter system enable restricted session; drop database; --11g startup mount exclusive; alter system enable restricted session; drop database; --RAC 12.1.0.2.0删库 1.先停止所有节点实例 2.在其中一节点操作,先关闭rac模式 startup nomount