最近一段时间, 接二连三出现安全和运维事故, 先是支付宝服务因线路被挖,局部服务中断; 接着是携程整站被删,给企业带来了巨大的损失,到目前为止,携程用了10多个小时全部恢复过来。其间,各种消息满天飞,有在讨论为何没有备份,有在讨论双活为何没生效,有在讨论系统被黑,有在讨论内部员工干的,也有说是出打bug了,发布的东西立即被删,最后被官方确定为员工误操作引起等。历史以来的事故背后,总会有一连串的故事, 但归根结底,还是那些烂熟于胸的分类:硬件故障,人为破坏,误操作,软件设计缺陷等。我还是引用微信上说的话,安全是细活,但做得再细,再强大的团队也是无法规避问题的出现。但,如何规避呢?
其实,万变不离其中,任何复杂的问题,无论是内是外,是因漏洞被入侵还是流程机制缺陷,是硬件还是软件,除了必备的基本防御和安全控制流程外,最后到数据保护这里,都可以简单化处理,做好最简单,最容易实施的事情:做好有效备份措施,守好安全最后一道防线!只是,这个最后一道防线,不是一般的企业能真正落实做好的 ,不少企业的负责人和中高层执行团队的意识上其实还没跟上来,所以才导致小概率事情发生。一般来说,对业务的保护,要有防线层次,实施分级的策略来实施 ,我们来仔细看看。
手动实施,基础入门措施,没做的,赶紧做起来
在线类业务/核心业务,特别对于依赖互联网渠道销售的企业来说,是企业重中之中,应当作为第1优先级来保护。首当其冲,是对其核心数据库进行主从部署,如果有银子,另外这些节点应当都具备一定的节点容错能力,也就是说Raid这些技术上去。但主从的问题,实际上,不少企业没有做从啊,好可怕的。这里如果做了,+1分。做了从以后,还要在本地备份,对如果有备份意识的,其实已经做了。但是否就足够了呢? NO,本机备份只是很简单的方案,理论上,出现问题的概率也基本一样,一样被删,硬件故障一样没用。这时候,就需要手动复制一份到其他地方去,进行异地备份。这里做了,再+1分,遗憾的是更少的企业会做这个。
以上是一个简单的对核心数据库进行备份的方案,但这也仅仅是一个基础,数据小,业务简单也不是难事,写几个脚本就可以了。一旦当数据和业务规模发展起来后,数据量,业务种类,节点数目,版本迭代,研发流程等都会全面影响数据管理策略。遗憾的是,从目前了解的信息看,不少企业的负责人或执行团队,并没有与业务一起进步,忽略了数据连续性的价值,才导致看起来很低概率发生,最后变成了下一携程。
总体来说,手动方案靠一个有态度且敬业的团队,否则这个方案出问题的可能性很大。全程自动化,系统化,数据大、业务多、团队大的场景,更鼓励用此方案我们简单想象一样,数十TB级数据,100个节点,10台DB,30个业务,加上互联网敏捷式的按天,按周的迭代,互联网企业运维团队常用的备份小技巧,主从、手动、本地、异地、手动归档等会变成麻烦起来了: 忘记做备份, 空间满备份失败,找不到备份版本, 备份慢,传输异常中断,恢复慢,换人了,甚至备份了,也不敢用来恢复……你说有啥用呢。
实际场景会更复杂,在线系统,内部研发系统,关键业务支撑系统等,加上团队规模一大,基本上这块事情就变复杂了。
对此,比较好的方案就是系统梳理业务类型,数据类型(DB,图片,视频,文档,代码),是抓取的,还是编辑产生的,内部,外部,需要保护的策路,包括频率,以及数据保留的历史周期,选择好容错能力的存储设施,业务数据的敏感程度等,抽象几种行为的结果,统一对数据,应用代码进行本地和异地备份,对比较历史的数据直接归档到离线位置。同时考虑在出现紧急问题后,好能够快速对核心系统恢复,甚至瞬间对部分核心环节的文件,数据库单表进行恢复。结合自动化逻辑,不管规模有多大,按内外,按业务,按部门等视图,集中在一个系统管理起来,一个系统全局掌握企业的核心业务分布,数据保护状态;当出现这类紧急情况后,通过自动化系统,只需要在数十分钟,有序就恢复了;一切尽在掌握。你说,这样该有多好啊?当然实际携程的网络结构会更复杂,对全网实施,需要比较长时间梳理和设计,如5.28这种全网出问题后,恢复的时间会略长。