来源 | 云头条

欧洲中部时间10月17日晚上10点45分左右,Keepthescore的创始人兼程序员在几杯红酒下肚后,无意中删除了生产数据库。超过300.00个记分牌及相关数据顿时人间蒸发。

值得庆幸的是,该公司使用的是DigitalOcean提供的一款托管数据库,这意味着DigitalOcean每天自动执行一次备份。经历了5分钟的紧张和恐慌后,Keepthescore工作人员将网站置于维护模式,竭力恢复备份。欧洲中部时间晚上11点15左右即灾难发生后30分钟,恢复了正常,但是7个小时的记分牌数据永远消失了。

确切地说,2020年10月17日15点47分至23点21分之间创建的任何记分牌或添加的任何分数统统丢失了。

到底发生了什么?

有人忍不住会将这场灾难归咎于几杯红酒。然而,擦除数据库的函数却是在清醒的时候编写的。一个函数删除了本地数据库,并从头开始创建所有必需的表。今天晚上,就在深夜编写一些代码之际,该函数连接到生产数据库,并清除了该数据库。

为什么?目前仍在努力搞明白原因。

以下是造成灾难的代码:

def database_model_create():    """Only works on localhost to prevent catastrophe"""    database = config.DevelopmentConfig.DB_DATABASE    user = config.DevelopmentConfig.DB_USERNAME    password = config.DevelopmentConfig.DB_PASSWORD    port = config.DevelopmentConfig.DB_PORT    local_db = PostgresqlDatabase(database=database, user=user, password=password, host='localhost', port=port)    local_db.drop_tables([Game, Player, Round, Score, Order])    local_db.create_tables([Game, Player, Round, Score, Order])    print('Initialized the local database.')

请注意,host被硬编码成了localhost。这意味着它永远无法连接到除开发者机器之外的任何机器上。另外:当然,Keepthescore为开发和生产环境使用不同的密码和用户。眼下他们太累了,还没有搞清是怎么回事。

学到了什么教训?为什么这种情况不会再次发生?

Keepthescore已明白,拥有删除数据库的函数实在太危险了,不能到处乱用。问题是,您永远无法真正适当地测试安全机制,因为进行测试将意味着对生产数据库下手。

Keepthescore已明白,拥有便于快速恢复的备份绝对必要。他们感谢DigitalOcean,使这项工作可靠又简单。

幸好,没人因这场灾难而丢掉饭碗。创始人不会解雇开发人员,因为他们是同一个人。

此外,这个Web应用程序只是一个附带项目而已,不是运行电厂的那种软件。

颇具讽刺意味的是,就在几天前,他们还刚发布了一条推文,内容正是有关删除生产数据库的可笑的文化基因:

往期推荐

前瞻:在 Java 16 中会带来哪些新特性?

高可用 Prometheus 的常见问题

Fastjson < 1.2.68版本反序列化漏洞分析篇

音效摸鱼还不够爽?试试IDE里打几盘魂斗罗?

一个让你敲代码的同时,找回童年乐趣的 IntelliJ 插件

扫一扫,关注我

一起学习,一起进步

每周赠书,福利不断

深度内容

推荐加入

最近热门内容回顾   #技术人系列

醉酒删库:几杯红酒下肚,7小时数据消失...相关推荐

  1. 防止酒后删库!日本人用 3 小时做了个酒精测试软件

    ‍‍ 作者 | Carol 出品 | CSDN(ID:CSDNnews) 说到删库跑路,没发生时是大家挂在嘴边的调侃,真发生时就是一场悲剧. 近年来国内外各种删库新闻频发,有的甚至给企业造成千万级.亿 ...

  2. 从“删库跑路”聊聊开启BinLog防止误删表数据、结构及数据库

    最近网上很多同学都在疯传疫情删库=跑路,工作中误删数据或者数据库我们一定需要跑路吗?我看未必在 MySQL数据库中我们知道 binlog 日志记录了我们对数据库的所有操作接下来就来开启程序员自救之路 ...

  3. 删库跑路大神「后悔」了?我只不过犯了大家都会犯的编程错误!

      视学算法报道   编辑:好困 袁榭 [新智元导读]在开源程序界惹出「删库跑路」大新闻的开发者Marak Squires,最近发声:「人无完人,编程错误而已,GitHub你就不用再封我号了嘛!」 2 ...

  4. 删库跑路大神的一生:曾在家造炸弹被捕,现卖房押宝NFT,原是开源创业之星...

    梦晨 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI "著名开源项目被作者本人删了库"这个瓜,现在是越吃越大了. 「faker.js」和「color.js」的作者Mar ...

  5. 微盟创始人孙涛勇回应员工删库;字节跳动推“头条搜索”独立 App;C++ 20 规范完成| 极客头条...

    整理 | 屠敏 一分钟速览新闻点! 微盟创始人孙涛勇回应员工删库:员工深陷网络贷,曾有过轻生 神舟电脑宣布将自己开发神舟商城,现在开始招聘 微信公众平台正在灰度测试"视频"入口功能 ...

  6. 成天说要删库跑路,这次真的有人干了

    说句玩笑,乍一看到这条新闻时,还以为是微软系统被员工删库了,吓了我一跳. "删库跑路",一直是程序员们的口头禅,但很少有人敢做这样的事情,毕竟容易牢底坐穿了. 之前发生过某科技公司 ...

  7. 试用期被劝退,京东到家某程序员删库跑路,被判刑10个月!

    最近,又有程序员因为"删库跑路"被判刑. 根据上海市杨浦区人民法院的消息,京东到家一名程序员未经公司许可,在离职当天私自删除了京东到家平台系统代码,构成破坏计算机信息系统罪,被判处 ...

  8. 暴力拒绝白嫖,著名开源项目作者删库跑路!神秘Bug影响超2万个项目,亚马逊云也躺枪...

    [文章来源][公众号:新智元] "从GitHub上删除自己的代码是违反他们的服务条款的?WTF? 这是一种绑架行为." 这两天,一些开发者感觉有点懵-- 一觉醒来发现,自己程序跑出 ...

  9. 漫画:如何给女朋友解释什么是删库跑路?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 在DBA圈子有这样一个段子: 最近几年,经常会出现各种删库跑路的事件发生,前几天还有报道说思科离职5个月的程序员,为了报复公司,删虚拟 ...

最新文章

  1. python数据库操作pymysql
  2. stl swap函数_C ++ STL | vector :: swap()函数与示例
  3. Docker 安装 Tomcat
  4. 《Qt 数据库详解》博客系列文章
  5. 极速安装JumpServer - 官方文档版
  6. 剑指offer之青蛙跳台阶
  7. [转载] python中sort()与sorted()
  8. Elasticsearch一些常用操作和一些基础概念
  9. flask nginx+uwsgi超时设置
  10. shell基础:输入输出重定向
  11. CSDN下载频道积分规则2.1
  12. 计算机文献检索试题及答案,文献检索试题及答案.doc
  13. html支持bmp格式,bmp和jpg的区别是什么?
  14. 预加重/去加重/直流滤波
  15. 2016中国APP分类排行榜参选入围产品公示
  16. 集成Fbreader显示空白页
  17. Rust Reqwest 学习
  18. Pygame实战:打扑克嘛?Python教你“经典纸牌游戏21点”玩法
  19. 都说建议新手用3Dmax,那到底学好3Dmax要多久呢?
  20. 使用BeautifulSoup爬网页指定内容

热门文章

  1. java常见问题排查
  2. linux shell 字符串 文件内容 大小写 转换 替换
  3. linux 结构体 struct addrinfo 简介
  4. python3 ipaddress模块 创建 检查 操作ip地址 简介
  5. docker 安装iproute包 包含 ss ip 命令
  6. linux 打开文件错误 too many open files 解决 ulimit 简介
  7. linux 环境变量LD_PRELOAD简介 定义优先加载的动态链接库
  8. python微型web框架flask介绍
  9. linux c 查看 结构体 宏 函数 关键字定义
  10. windbg设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)