岁末警示:当你手抖删了线上数据库..

简介:

编辑手记:这是一篇写在2016年初的旧文,岁末再次与你共享,愿你的系统安然无恙。本文转载自高效运维社区。


作者简介:

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

一乐,aka 梁宇鹏

现任环信首席架构师兼IM技术总监,负责即时通讯云平台的整体研发和管理。曾任新浪微博通讯技术专家,负责微博通讯系统的设计与研发。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

2016年1月18日,新年刚过,距离噩梦的圣诞节已经过去三周。已经好多天没有线上报警,群里一片安静,大家都在享受这份宁静与安逸。唯一不一样的是,有集群的迁移工作要做,相关人员干劲十足,已经连续三天通宵。按照惯例,为了保险起见,线上操作都在夜里进行。

如果说这几天最怀念的时光,也许就是这一天了,因为在第二天,我们的一个线上数据库出了问题。

19日上午10点,陆续有用户抱怨,一个接口的数据丢失,而之前删除的数据又出现了。这时候我们的运维同事贴出一个截图,发现有一个数据同步的进程,从凌晨五点开始运行,把线上数据库覆盖,数据一夜回到了解放前!

好在运气好,在这个覆盖发生之前,有一个备份。

修复工作马上展开,先把主从切断,主库利用备份数据重启,从库用来进行比对,恢复增量数据……(部分内容由于当地政策,未予显示)

然而事情并没有结束。这时候内部出现了一个声音高喊,我们一定要惩罚!惩罚这个人,让他知道服务稳定性的重要!

有没有觉得似曾相识?类似的情况其实经常发生。而很多事情就是这样,好像是日常中的一个插曲,却对团队和公司的发展产生着微妙又长远的影响。

是的,我说的是惩罚。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


让我们看看惩罚是做什么的

以儆效尤?如果当事人玩忽职守,故意破坏,也许有一些作用。我这里用了也许,因为真出现这种情况的话,可能不是惩罚就够了的。但如果价值观没有问题,这点却未必有效。因为事故已经可以对当事人造成足够压力,增加罚款并没有什么必要。

解气么?公司变大必然出现分工,而各个团队之间的沟通也会变弱。每出现一个问题,其实都是整个公司的问题,用户需要安抚,市场需要维护。这时候就很容易发出一种声音,你看你总给我们添麻烦。这种指责和随后的处罚除了让发声的人心里痛快,该做的事情并没有减少。

它们并没有创造什么价值,却带来了很多你不想要的东西。

更差的工作表现。因为惩罚带来的畏首畏尾,以及随之而来的挫败感,都会让一个人的工作效率大打折扣。

错误的工作态度。谁都知道疲劳作战效率不高容易出错,既然多做多错,少做少错,为什么要去加班加点赶什么进度呢?多一事肯定不如少一事。

隔阂的团队。出了问题就开始指责,那出问题之前的加班加点为了谁呢?一个彼此间互相信任的团队与一个互相防备的团队,差距也是显而易见。

最重要的是,它让技术团队偏离了对技术的追求,而把目光收回到内部关系上,这自然会放慢前进的步伐,这对创业公司将是致命的。

速度是小公司取胜竞争对手直至打败大公司的关键。


不要惩罚不意味着拒绝进步

我们这么做,是因为我们也相信,促使个人和团队成长的,应该是团队的荣誉感和为之努力的心,而不是对惩罚的恐惧。

但我们也不能停在这个地方。如果连自己的教训都无法总结并长成经验,也注定是悲剧的。所以还是回归本初,看看真正想要的是什么。

我们想要的,不过是避免类似事情的发生。

先看一则旧闻。

2015年10月20日,德意志银行外汇部门的一名初级交易员将一订单中的「净值」错误处理为「总额」,令德意志银行向一家美国的对冲基金客户白白送出了60亿美元。 http://wallstreetcn.com/node/224923

这种输入上的低级错误,金融业里叫胖手指,而避免的最重要的方法就是两人法则,我也更喜欢它第二个名字,四眼原则(four eyes principle)。
https://en.wikipedia.org/wiki/Fat-finger_error

它提醒了我们,在关键业务上需要有人结对。鉴于现在工作的远程状态,我们使用了Tmux的会话共享模式,两个人可以通过相同的会话来共享控制台以及键盘输入。


技术可以做到更多

四眼原则用来做紧急措施是可以的,但毕竟有交互成本。而人在精确性上天生不如机器,因此要确保问题不再发生,还要用一些技术手段才行。

由于命令执行的是一个历史命令,而出错的运维人员进入了一个前人遗留的Tmux会话,或者是按了向上或者是进入时的回车直接执行了CTRL-R留下的命令。于是我们

修改了数据恢复的命令,强制进行二次确认;
对危险命令进行了别名处理;
禁止了Tmux的默认session,使用Tmux的人员强制使用别名。

所以你看,人的问题也可以用技术手段来解决。


技术驱动和技术导向

互联网发展仍是日新月异,挑战无处不在。要想变挑战为机遇,只有创新和技术才有可能。只有重视技术的公司,才能充分发挥技术人员的能动性,也将更容易在技术的竞争中胜出。

我们经常开玩笑,很多公司,做不到技术驱动,因为他的每一步都是领导提出领导拍板,它只能叫领导驱动。而如果一个公司在遇到事情之后就总是想到惩罚,不注意保护和发挥技术人员的能动性,技术导向也只能是一个口号。

说到底不过一句话。一个团队或公司,要变成什么样子,跟她迈出的每一步都有关系。

毕竟罗马不是一天建成的。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


文章转自数据和云公众号,原文链接
相关文章
|
9月前
|
SQL 数据可视化 数据库
新司机的致胜法宝,使用ApexSql Log2018快速恢复数据库被删除的数据
新司机的致胜法宝,使用ApexSql Log2018快速恢复数据库被删除的数据
|
10月前
|
SQL 关系型数据库 MySQL
线上数据库锁表?明天就要上线?
线上数据库锁表?明天就要上线?
70 0
|
运维 前端开发 JavaScript
删库跑路后的现场还原
遭遇删库跑路怎么办?可观测性是研发质量和产品的试金石,是企业城墙的基石,这里拿删库跑路举一个栗子,说明可观测性的重要程度,用好可观测性,能更了解系统,扩宽业务。
170 0
|
SQL 数据库连接 数据库
游戏版本要回滚,还好我机智备份了数据库,代码直接拿走
今天有空整了下之前写的数据库备份的代码。
229 0
游戏版本要回滚,还好我机智备份了数据库,代码直接拿走
|
SQL 监控 关系型数据库
线上数据库挂了,你该如何排查?如何防备?
大家好,我是Leo,目前在常州从事Java后端工程师。上篇文章我们介绍了读写分离那些问题,主要从概念,目的,单到多的演变,安全性演变以及六个解决方案为叙述。今天我们聊聊一主多从,如果挂了你会如何快速定位。
线上数据库挂了,你该如何排查?如何防备?
|
数据库
ecshop网站搬家过程中数据库太大不好备份解决方案
ecshop网站搬家过程中数据库太大不好备份解决方案
|
SQL 存储 关系型数据库
【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!
估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉。让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么回事?系统不能访问了!什么情况啊?!很多客户都在投诉了!!
134 0
【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!
|
存储 SQL Oracle
回到过去,找回遗失的珍宝 - TiDB 的历史读功能
数据作为业务的核心,关系着整个业务的生死,所以对于数据库来说,数据的安全性是放在首位的,从宏观角度来看,安全性不仅仅在于的数据库本身足够稳定不会主动的丢失数据,有的时候更是对业务本身甚至人为失误造成损失是否有足够且便捷的应对方案,例如在游戏行业中经常遇到的反作弊(作弊玩家回档)问题,对于金融业务的审计需求等等,如果在数据库层面上提供相关机制,会让业务开发的工作量和复杂度减少很多。 传统的方案会定期备份数据,几天一次,甚至一天一次,把数据全量备份。当意外发生的时候,可以用来还原。但是用备份数据还原,代价还是非常大的,所有备份时间点后的数据都会丢失,你绝对不希望走到这一步。另外全量备份带来的存储
258 0
|
SQL 存储 Oracle
删库跑路?别怕!PolarDB-X 轻松拯救误删数据的你
本文主要围绕数据误删中的行级误删情况,介绍了 PolarDB-X 的 SQL 闪回是如何帮助用户恢复数据的。相对于现有的数据恢复方案,SQL 闪回的 SQL 级的回滚能力以及易于上手的操作界面能够帮助用户更加精准、更加快速地恢复误删数据。
657 0
删库跑路?别怕!PolarDB-X 轻松拯救误删数据的你
|
运维 程序员 安全
如何有效避免“删库跑路”、“误操作”等事件的发生
为什么会频繁出现“删库跑路”、“误操作”等风险?究其原因,主要是因为当前企业内部的IT运维管理现状普遍存在这样的问题:很多时候企业的运维操作过程类似一个“黑盒”,运维人员的操作不受控,运维操作过程缺乏必要的监督和审核,高危甚至违规操作时有发生。
1738 0