盖国强:《炉石传说》大故障,不要以为你也可以幸免
《盖国强:《炉石传说》大故障,不要以为你也可以幸免》要点: 作者简介
正文最近暴雪公司和网易的一则声明刷爆了朋友圈,大意就是由于『供电意外中断的原因而产生故障,导致数据损坏』,这样一则公告引发了一系列的猜想. 我们在围观时仿佛人人都是诸葛亮,而事实上设身处地的想,在一次复杂的故障考验下,也许很少有人能够幸免. 如同阿里云会误删文件、京东会泄露数据、支付宝会被修改密码、携程会大面积瘫痪,在灾难来临之前,谁都会觉得自己是幸运者,而事实上,只是因为令你措手不及的那个灾难还没有来到而已. 先回顾一下《炉石传说》长长的公告,然后我们再基于事实做一下分析吧: 首先,关于暴雪的核心数据库架构,不是网友猜测的MySQL(如果是 MySQL 就必然是分布式,不可能全部回档的),而是Oracle数据库.关键的系统架构如下(部分属于推测):
基于这样一些真实的基础和前提去讨论这次的事故,才更有意义. 以下是前一段时间暴雪招聘DBA Lead的条件要求,系统架构由此一目了然:要求深入理解Oracle内部原理、Oracle RAC和ASM技术,熟悉Golden Gate复制,熟悉Linux脚本编程. 这些要求就深刻揭示了暴雪核心数据库的体系架构.在Linux上运行的基于ASM存储的Oracle RAC集群,使用OGG复制数据. 在招聘中有一个特殊的要求,『Evaluate new releases and features of Oracle DBMS』,评估Oracle新版本和特性的能力,这一独特要求可能和当时要升级核心数据库有关,而升级版本就应该是12c,据此我推测其数据库版本应该已经追到最新版本12.1.0.2,国外的大公司风格基本如此,有了12.1.0.2,肯定不会有人守在12.1.0.1版本上,而且这套中国的系统是部署不久的独立系统. 以下就是暴雪对于这个岗位的详细需求: 之前在互联网上已经披露了很多信息,包括一次故障的处理流程(来自搜索引擎):
当时的数据库运行在HP服务器上(大约2013年),现在已经迁移到Linux服务器上. 此外,暴雪的数据量很大,多年前Oracle 9i 时就是TB级别的数据库了,当然现在中国大陆地区肯定是独立的服务器,但是数据量也绝对会是TB级别的,再加上免费开放的热门程度,我推测两节点的RAC对中国玩家不够尊重,至少应该是4节点的Oracle RAC集群. 所以大家可能想到了2016年的另外一则故障,大约在2016年3月22日,全日航空的故障导致了120个航班取消,据传是4节点RAC集群,由于网络问题导致故障:
我们再回过头来看暴雪的运维,最终看起来似乎没有找到合适的DBA Leader,所以内部晋升了一位,在LinkedIn上,这些信息是公开的: 好了,有了这些事实之后,我们再看公告就会清晰很多了.我们理一下时间轴:
外行看热闹,内行看门道 在了解了系统架构之后,从官方的信息里我们能够看到很多事实:
所以我们大胆推测:是因为存储故障导致了RAC集群写数据丢失,最终选择不完全恢复,放弃了部分数据. DBA第一守则:备份重于一切 (编辑:ASP站长网) |