V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AllOfMe
V2EX  ›  程序员

你司有没有过运维事故?

  •  
  •   AllOfMe · 2018-08-08 13:45:44 +08:00 via Android · 18131 次点击
    这是一个创建于 2306 天前的主题,其中的信息可能已经有所发展或是发生改变。
    删库,update 没加 where,rm rf /,误删 glibc 等等运维事故,小至两三人的创业公司,大至如最近的腾讯云磁盘事故,都有可能发生。
    你们公司有没有过类似的事故?这些犯错的员工下场一般是怎么样的?
    154 条回复    2018-10-02 19:34:08 +08:00
    1  2  
    AllOfMe
        101
    AllOfMe  
    OP
       2018-08-08 20:22:03 +08:00 via Android
    @gamexg 是啊,和不要疲劳驾驶一样,服务器操作更要小心
    hikaruchang
        102
    hikaruchang  
       2018-08-08 20:27:19 +08:00
    有啊,但是每次操作服务器之前最好还是做个快照,就连 update 都得做快照以及操作记录,不然哭都没地方
    fiht
        103
    fiht  
       2018-08-08 20:33:30 +08:00   ❤️ 2
    上个月手抖在后台把一个用户的云盘删了,没想到要被索赔一千万。还好公司出面,赔了我一年的年终奖,赔了十好几万!
    farseeraliens
        104
    farseeraliens  
       2018-08-08 20:43:56 +08:00 via iPhone
    @fiht 敢问您在哪儿高就,年终奖十好几万……
    musclepanda
        105
    musclepanda  
       2018-08-08 20:44:28 +08:00
    @farseeraliens 腾讯啊。。哈哈哈哈
    scriptB0y
        106
    scriptB0y  
       2018-08-08 20:44:34 +08:00   ❤️ 1
    pytest 测试,如果你的数据库名字叫 abc,貌似会自动生成一个 test_abc 的库来测试,测试完之后删掉。然后我们测试环境连的数据库有一个名字就叫做 test_abc,跑完测试数据库没了……
    GoLand
        107
    GoLand  
       2018-08-08 20:44:54 +08:00
    scriptB0y
        108
    scriptB0y  
       2018-08-08 20:46:01 +08:00   ❤️ 1
    从网上 Command+C 拷贝了一条命令,去生产上粘贴。Command + V 按下去,满屏哗哗滚动,才发现没复制上,剪切板还是之前拷贝的一段内容。

    碰巧这段内容里面有个 rm -rf
    v2dead
        109
    v2dead  
       2018-08-08 20:55:54 +08:00
    作为后端进一家公司一个礼拜就拿到一台关键业务服务器权限。心比较大的,那台服务器只有 root,也只用 root 登录。我习惯性搭一个虚拟机环境,下班走的时候随手 poweroff 关掉虚拟机。关闭 xshell 发现不对劲,关错了。。。。

    之后打电话去机房开机,再重新开启服务,服务终止半个多小时。
    没想到试用期居然还过了。。自此以后虚拟机再也不管了,直接按电源关机,虚拟机爱关不关。
    helloSpringBoot
        110
    helloSpringBoot  
       2018-08-08 20:59:34 +08:00 via Android
    创业公司 不小心把库删了 还好有当天早上的备份 用户丢了半天数据 业务比较简单 影响还算可控
    f2f2f
        111
    f2f2f  
       2018-08-08 21:24:03 +08:00
    不删库的公司,那还是好公司吗
    junbaor
        112
    junbaor  
       2018-08-08 21:43:02 +08:00
    层层审核下, 在线上执行了一条没加条件的 update 语句, 而且是订单表.
    ytmsdy
        113
    ytmsdy  
       2018-08-08 22:28:57 +08:00 via iPhone
    xshell 同时开着生产管理和测试环境。
    脑抽的把生产环境当测试环境。。
    stefsui
        114
    stefsui  
       2018-08-08 23:53:22 +08:00 via Android
    新配置没生效情况下删除了旧配置,2 千万手机用户八小时打不了电话。我是负责恢复的
    loser
        115
    loser  
       2018-08-09 00:16:04 +08:00
    新游戏上线被我 drop database ……
    备份服被我 rm -rf

    感谢老板不杀之恩
    KasuganoSoras
        116
    KasuganoSoras  
       2018-08-09 00:28:50 +08:00
    不是公司,运营着个几千用户的小网站,机器放家里,结果突然停电导致用户数据丢了大半,后来就养成了随时备份的习惯。
    imaning
        117
    imaning  
       2018-08-09 09:22:31 +08:00
    @neoska 红绿色弱者连运维都不能干啊,因为有些色弱的看绿色像黄色啊。
    imaning
        118
    imaning  
       2018-08-09 09:26:32 +08:00
    @chnhyg 问下当年这个同事为啥离职,亏待了别人赶紧给补回来啊。
    cece0417
        119
    cece0417  
       2018-08-09 09:42:13 +08:00
    去年来了一个运维新伙伴,不知道咋搞的,把 jira,wiki 的库给搞没了。我提的 bug 全没了。过几天,dingding 就搜不到他的信息了
    chnhyg
        120
    chnhyg  
       2018-08-09 09:59:59 +08:00
    @imaning 公司还是比较不错的,谈不上亏待吧,虽然我也不在了。 =。=
    julyclyde
        121
    julyclyde  
       2018-08-09 10:19:39 +08:00
    @AllOfMe 针对同一个大版本(比如 el6、el7 )的 repo,一般都会相互考虑依赖关系的。
    把 glibc 都给冲掉,一般是用了不同大版本的 repo,而且装了依赖 glibc 具体版本的软件,而且这个被依赖的版本和当前大版本发行版里带的 glibc 不同
    换句话说就是用了“野” repo
    skymei
        122
    skymei  
       2018-08-09 10:25:48 +08:00
    @junphe +1 删个小东西 怎么看到执行目录里面有 /etc 还执行半天,脑袋瞬间就炸了
    yulitian888
        123
    yulitian888  
       2018-08-09 10:59:33 +08:00
    做过一次。
    数据迁移,从乌克兰的服务器搬运到国内服务器上。
    因为传输实在是太慢了,还有各种程序需要升级和迁移,所以连续 3 天没合眼,真的是完全没合眼。做到第二天的时候,精神恍惚了,执行了一段 delete 语句,没有加 where。
    因为数据很多,删除需要一段时间才能完成,所以等我点停止的时候,已经丢了两亿多行。
    然后,只能重新搬一次数据,多做了半天时间才搞完全部任务
    xiaowangge
        124
    xiaowangge  
       2018-08-09 11:11:09 +08:00
    游戏行业,说点代码相关的:

    0、经验值存储为 Java Integer 类型,N 年后有玩家经验为负数了。

    1、听公司同事说,创业前期,一个 while 循环,导致隔三差五就宕机,公司差点就关门。后来规定,写 while 循环需要申请 :-)

    2、for 循环写日志,导致隔三差五就宕机。

    3、前端、后端都没有对玩家提交数据做检验,玩家买 N 个 X 元的物品,N 对应的存储越界

    4、策划把 test 目录下的配置,更新到了线上,1000 元的物品卖 1 元。

    =====================================

    帖一篇文章《 5whys 分析法在美团工程师中的实践》

    https://tech.meituan.com/5whys_method.html

    #####Step 1:对事故进行详细描述

    “ If I had an hour to save the world,I would spend 59 minutes defining the problem and one minute finding solutions.”
    – Albert Einstein

    对于事故进行定义和描述比较重要,这一步不可省略。在描述事故时,我们基于 5W2H ( What,Who,Where,When,Why,How,How much )分析法来对事故进行描述,说清楚事故发生的时间,地点,发现人,怎样解决的,解决的时间等等。

    What:描述下发生了什么问题。
    Who:描述下责任人是谁,谁发现的问题,谁解决的问题。
    Where:描述下在哪里发现的事故。
    When:描述下事故的时间因素,什么时候发现的事故,什么时间解决的事故。
    Why:描述下为什么是个事故,强调事故的影响。
    How:描述下事故是怎样被解决的。
    How much:描述下事故的可量化的影响范围和造成的损失,影响了多少用户,造成了多少损失等等。

    #####Step 2:提问:为什么这问题会发生?

    #####Step 3:检验上一步中发现的原因是否是根本原因?

    #####Step 4:找到问题发生的根本原因,制定执行计划并修复

    #案例分析

    请看原文吧:
    https://tech.meituan.com/5whys_method.html
    raptor
        125
    raptor  
       2018-08-09 11:19:16 +08:00
    工作后的第一次大事故是在对 SAP 不熟的情况下,在传输请求时把所有开发机上的变更请求都传到生产系统上,本来只是要传一个的,后来只好找顾问回滚操作,折腾好几天系统才恢复。
    之后有过一次 RAID5 坏了一块硬盘也丢数据的情况(不知道 DELL 是怎么回事,IBM 就不会),从那以后我再也不用 RAID5,生产系统老老实实用 RAID10,不要去省那一点硬盘钱。
    至于自己的 VPS 事故就多了去了,比如删除 libc 之类,还有升级 FreeBSD 的时候误操作。上个月升级 FreeBSD 还出了错,最后只好重装。
    还要配置防火墙失误把自己关了这种事情感觉每个配防火墙的新手都会碰到。
    tomato3
        126
    tomato3  
       2018-08-09 11:39:23 +08:00
    @liuzhedash 10 条里面 第 9 条是最骚的
    FONG2
        127
    FONG2  
       2018-08-09 11:44:19 +08:00
    几乎不可能无意出错 生产都是多重备份的
    倒是开发和测试环境经常被草,不过 copy 一份生产即可
    除非运维想故意搞破坏吧。。。
    rooftop64
        128
    rooftop64  
       2018-08-09 11:56:15 +08:00
    @GoLand 这个 Github Page 的模板叫啥?看起来不错
    tomato3
        129
    tomato3  
       2018-08-09 12:36:58 +08:00 via Android
    @junphe 我的第一次 rm -rf 就是这样的
    imherer
        130
    imherer  
       2018-08-09 13:14:06 +08:00
    以前在页游公司:
    1.招了一个实习生,生产环境执行 sql 没加条件,把后台的 user 表里的所有密码都更新成同一个了,第二天早上一来,全公司人都在说后台怎么等不进去了,提示密码错误。从此以后数据库加了严格的权限管理😂
    2.做一个在一段时间内充值 xxx 送 xxx 金币的活动,在测试服把开始时间和结束时间设的很大,然后下班前更新到了正式服,忘了修改开始时间,本来第二天 0 点才开始的。 结果运营金币池瞬间为 0,半夜 2 点领导给我打电话说出问题了,然后起来把有问题的账号都临时封禁,一直封到第二天中午才封完。后来的处理是回档,然后过了几天就有玩家直接闹到公司来了。。。
    3.还有一次记得那时候网站是用 ASP.NET 做的,有一次直接在服务器上用记事本打开配置文件添加一个配置项,记得它那个配置项里注释好像是这样的 <!-- --> ,然后少打了一个横线直接保存,网站直接挂了。 看到玩家在群里反应说网站上不去了。 查了半天系统 log 才找到问题所在🤣
    qcloud
        131
    qcloud  
       2018-08-09 13:20:43 +08:00 via iPhone
    重装系统,发送了重装命令,发现装错了,把公司一台 dns 生产服务器重装了,幸好有快照。
    还有一次给服务器装系统,数据没备份就重装了,后来一想,数据在数据盘!嗯!
    zeromake
        132
    zeromake  
       2018-08-09 13:34:57 +08:00
    有的我这边就有个刚入职几个月的,一周搞了好几次事,

    周一负载均衡绑了个不存在的服务,然后就随机一些用户访问不了,问了才知道他加了新节点;
    周三把 k8s 的内部 dns 炸了,整个 k8s 里所有服务炸了,和阿里讨论了老半天,他才突然说一句改了安全策略;
    周末把测试用的 redis 释放了,然后竟然有正式服务依赖这个。
    kanyuxia
        133
    kanyuxia  
       2018-08-09 14:08:11 +08:00
    虽然不是运维事故,但是挺...
    前两天,我手残把项目分支给删了,然后 pull 的时候说分支不见了,然后给老大说我们的项目分支不见了,然后高潮到了,后面老大看记录说我把分支给删了,现在回想起来,感觉自己像个智障。
    totland
        134
    totland  
       2018-08-09 14:12:32 +08:00
    个人没遇到过,不过猪队友经常搞出事情来,隔段时间给他们擦次屁股。
    ryd994
        135
    ryd994  
       2018-08-09 14:31:48 +08:00
    不是公司,自己搞的小玩意,一不小心删了配置文件
    还好服务还在跑,从内存 dump 里又抠出来了
    dany813
        136
    dany813  
       2018-08-09 14:39:42 +08:00
    rm -rf 删了代码库,。。。。。
    wr410
        137
    wr410  
       2018-08-09 15:53:21 +08:00
    不用 root 用户就不会发生很多低级事故,就这么简单。

    你跟我说要布 80/443 端口? rinetd,nginx 了解一下?
    iwaifor
        138
    iwaifor  
       2018-08-09 16:01:22 +08:00
    @KasuganoSoras 你这个是下发指令,让机器人执行么
    NoahNye
        139
    NoahNye  
       2018-08-09 16:43:23 +08:00 via iPhone
    交换机上有一根调试网线,路过不知哪位小可爱看吊了个线头不美观,找了个交换机口插了上去。
    loveour
        140
    loveour  
       2018-08-09 18:01:42 +08:00
    @foxni 之前看到有人讨论,说 RAID 不安全,理由就是,挂掉一块硬盘后,重建过程再挂掉一块的概率比想象中高得多。不知道有没有实际生产数据支持这个观点。
    KasuganoSoras
        141
    KasuganoSoras  
       2018-08-09 18:08:22 +08:00
    @iwaifor 对,发送指令给机器人,机器人连接服务器 ssh 执行命令 mysqldump 把数据库数据备份到文件里。
    ghhardy
        142
    ghhardy  
       2018-08-09 18:29:47 +08:00 via Android
    @chnhyg 前同事的灵魂在保佑着你们
    Hardrain
        143
    Hardrain  
       2018-08-09 19:01:12 +08:00
    @AllOfMe 不是我做的,是他们的开发搞的。

    他们的开发好多测试直接在生产环境做(这就是我为什么说他们是垃圾公司)

    要用一个(只)兼容旧版本 libc 的程序(好像是 RHEL 4 时代的),于是开发便不管不顾

    不用容器(虚拟机 /docker)
    不静态编译(libc.a)
    不用 rpath 指定运行时 libc.so 的 path

    就想到换掉系统的 libc.so.6

    最后没重装,恢复模式下把安装介质上的 libc.so.6 拷回去并重建了 symlink,重启就好了
    但生产环境出问题造成业务中断
    mchong
        144
    mchong  
       2018-08-09 20:33:49 +08:00
    目前公司遇到的几次大的事故:
    1、腊月 28,公司邮件服务器上 raid1 的两块盘全挂。还好有磁带备份,最后用了 25 个小时恢复了邮件系统。整个公司 1 天多没有邮件用。。。
    2、某天,突然生产系统无法访问,收到一堆掉电报警。UPS 挂了。生产服务器全掉电。后来改成机房一路 UPS,一路市电。
    3、这个是我干的。vSphere 环境跑在 iSCSI 共享存储上,我把两台存储交换机给搞挂了。。。最后是老板半夜去机房重启搞定。对不起老板。
    foxni
        145
    foxni  
       2018-08-09 20:36:19 +08:00
    @loveour 我们的项目多用 raid 5,系统根盘则直接 raid 1,在新盘的复制过程中校验盘也挂掉这样的事故还真没怎么听过,也许是某些领域的产品对硬盘摧残的太厉害了吧,哈哈。
    vakara
        146
    vakara  
       2018-08-09 21:11:30 +08:00 via Android
    生产业务跑了几个月才发现扣费系统没工作算么……
    Flobit
        147
    Flobit  
       2018-08-09 21:29:40 +08:00 via Android
    朋友删库,然后免费干一年,每个月 1000 块
    yingfengi
        148
    yingfengi  
       2018-08-09 22:04:28 +08:00 via Android
    被自己做的门禁锁在机房外面算不算?
    james2013
        149
    james2013  
       2018-08-10 00:15:10 +08:00
    1.服务器硬盘坏了,备份没有成功运行,带着硬盘连夜赶到华强北进行数据恢复,幸好恢复数据;
    2.某次数据库还原,充值记录重复了一次,余额也翻了一倍.
    cominghome
        150
    cominghome  
       2018-08-10 09:26:58 +08:00
    误删 glibc 的事我干过,不过是测试机器。
    不记得是装个啥玩意来着了,一直装不上,提示说 glibc 版本不够,yum 升级屡次不成功,三番四次失败后居然脑洞大开想着要不先卸了再装,然后就悲剧了
    congqing
        151
    congqing  
       2018-08-10 19:44:56 +08:00 via Android
    @GoLand 不错
    v2014
        152
    v2014  
       2018-08-12 02:23:32 +08:00
    @KasuganoSoras 这个是什么机器人
    KasuganoSoras
        153
    KasuganoSoras  
       2018-08-13 03:14:11 +08:00
    @v2014 酷 Q 机器人,自己写的插件,通过 PHP 执行 exec("mysqldump ......")实现的备份数据库。
    mingyun
        154
    mingyun  
       2018-10-02 19:34:08 +08:00
    看来最多的还是 rm -rf 多打一个空格 还有不要复制命令在生产环境执行
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2775 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 06:00 · PVG 14:00 · LAX 22:00 · JFK 01:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.