2017 年 1 月 31 日晚上,GitLab.com 运维人员在深夜进行数据库维护时,由于疲劳操作失误,使用 rm -rf 命令错误地删除了约300GB的生产环境数据。在意识到错误并尝试恢复时,只有 4.5GB 的数据得以保留。GitLab.com 官方在 2 月 1 日凌晨 1 点左右完成了数据恢复,网站恢复正常访问。恢复过程中使用的是故障发生前 6 个小时的备份数据,因此在这 6 个小时内的数据丢失。尽管 GitLab.com 声称拥有五重备份机制,包括常规备份、自动同步、LVM 快照、Azure 备份和 S3 备份,但在这次事件中,所有备份均未能有效防止数据丢失。
2023 年 10 月 23 日,语雀服务出现了一次重大故障,中断时间超过 7 小时。具体来说,这次故障的起因是在执行系统升级操作期间,新的运维升级工具出现了 bug,导致华东地区生产环境的存储服务器被误下线。由于存储系统使用的机器类别过于陈旧,无法直接将其上线,这导致了恢复过程时间延长。尽管语雀的工程师们立刻进行了恢复工作,但由于数据量大,恢复方案有限,恢复过程耗时 4 小时,数据检验耗时耗时 2 小时。
在这些个案例中我们看到了什么问题?
备份不可用,恢复方案有限,恢复备份数据长,数据丢失等等,有点平时说起来很强大很完善,真有大事就扛不住了。
所以,今天聊聊备份,不局限于数据备份。
作为一名从业多年的老兵,我们深知备份的重要性,它事关系统的安全、业务的连续性和数据的完整性,可以说是任何系统不可或缺的一部分。
行业内有一句话:「备份不做,日子甭过」
我们为什么需要去做备份呢?主要有以下几点原因:
1.保证数据安全:在信息时代,数据已经成为企业和个人最宝贵的资产之一。而各种硬件故障、人为错误、网络攻击、自然灾害等都可能导致数据丢失或损坏。定期备份数据,可以最大限度地降低数据丢失的风险,即使遇到问题,也可以从备份中恢复数据,将损失降到最低。
2.防范风险,确保业务连续性:对于企业来说,IT 系统的可用性直接关系到业务的正常运转。一旦关键系统发生故障,没有可用的备份,就可能导致业务中断,带来巨大的经济损失和声誉影响。而有了完善的备份和灾备机制,即使发生故障,也可以快速恢复系统,确保业务连续性。
3.满足合规性要求:在某些行业,比如金融、医疗、政府部门等,由于涉及敏感数据和关键业务,往往有严格的合规性要求,需要有完善的备份存档机制。定期备份数据、留存备份一定时间都是合规性的硬性规定。没有备份,可能面临违规处罚的风险。
4.提高竞争力:在当今数字化时代,数据已经成为企业的核心竞争力。拥有完善的备份和容灾能力,意味着企业能够更好地保护和利用数据,从数据中提炼价值,增强市场竞争力。同时,这种能力也能提升客户信任,赢得更多业务机会。比如信息产品安全等级资格认证三级认证需要:本地备份与恢复+异地数据实时备份+本地业务高可用
看到备份这个词,马上能想到的就是数据备份,数据库备份这些,这些固然重要,但如果你作为一个企业的技术负责人所考虑的备份就不仅仅是这些了,以下是常见的需要备份的内容。
业务数据是备份的重中之重。
对企业来说,最需要备份的就是各种业务数据:
系统数据是保证业务连续性的关键
除了业务数据,我们还要备份各种系统层面的数据:
配置数据是还原系统的关键
系统的各种配置也需要备份,主要包括:
代码、文档和日志主要是对研发团队来说的,对于软件企业或开发部门,代码和文档是核心资产,日志是问题定位,监控审计的利器:
我们很多应用会调用第三方提供的服务,如支付、短信、社交登录、地图等。虽然这些服务由第三方负责运维,但作为调用方,我们也需要做一些防范:
除此之外,对于调用第三方服务的 API 密钥、账号密码等敏感信息,要安全备份,防止丢失。
以上就是企业需要备份的主要内容。当然,具体到每个企业,还要根据自身业务特点和 IT 架构来定制备份方案。我们需要全面梳理数据资产,评估数据的重要性和变更频率,搭建分层的备份体系。
在备份领域,有一个著名的 3-2-1 原则,包括:
这个原则看似简单,却涵盖了备份的关键要点:
在实践中,我们要根据数据的重要性和预算,灵活采用 3-2-1 原则。比如增加副本数量、类型,利用多个异地机房,甚至上云备份等。
备份主要可以分为几类:
完全备份与增量备份
物理备份与逻辑备份
冷备份、温备份与热备份:这主要是指备份过程对业务的影响程度。
除了上述分类,备份领域还有很多技术手段,比如:
除了备份技术本身,做好灾备还需要全局的规划。我们要制定完善的灾备预案与流程,主要包含:
灾备需求与目标设定:不同的系统有不同的可用性要求,核心系统当然需要更高的可用性。我们要评估每个系统的重要性,制定恰当的灾备目标,权衡投入产出。常见的指标有 RTO(恢复目标时间)和 RPO(恢复点目标),前者是最大恢复时长,后者是允许丢失的最大数据量。指标设定要务实,太低达不到,太高又成本太大。
编写灾备预案文档:灾备预案文档需要明确定义灾难等级、各种场景下的应急流程、通知上报机制、系统恢复步骤、人员角色分工、联系方式等各个细节。使得整个应急响应有章可循,文档要定期评审和更新。
灾备演练与测试:光有预案还不行,必须落到实处。要定期组织演练,模拟各种场景,让团队熟悉灾备流程。比如模拟机房断电、网络中断等场景,检查应急预案的可行性,评估 RTO、RPO 的达成情况。演练中发现的问题要及时修正预案或改进系统。
灾备监控和验证:除了演练,平时也要做好灾备系统的监控,确保灾备系统是随时可用的。比如监控备份的成功率、备份存储的容量使用率等,一旦发现异常要立即处理。
此外,我们还要定期做数据恢复验证,确保备份的数据确实是可用的。俗话说「备份是无用的,恢复才是关键」,定期做恢复测试是验证备份有效性的重要手段。
随着云计算的兴起,灾备也有了新的手段。很多公有云平台提供了灾备和备份服务,比如 AWS 的 S3、Glacier,阿里云的 HBR、OSS 等。将备份放到云上是个不错的选择,一是降低了本地存储的投入,二是借助了云的地理分布优势,备份天然就是多地域的。
此外,云平台还提供了跨可用区、跨地域的数据复制功能,以及多活架构支持。利用这些服务,可以打造「异地多活」的架构,也就是在多个地理位置部署服务,互为备份,同时对外提供服务。这样即便一个数据中心发生灾难,其他活跃的数据中心也可以无缝接管服务,实现了很高的可用性。当然,异地多活对技术水平要求极高,网络延迟、数据一致性都是不小的挑战。
总结来说,可以分为如下的几个点:
备份灾备是一个复杂的课题,需要持续的投入和改进。做好灾备,并不一定能避免所有灾难,但可以最大限度地降低损失。它不是锦上添花,而是雪中送炭。对个人、对企业而言,灾备都是系统安全、可靠的基石,是我们必须重视、持之以恒去做好的功课。
备份之路,道阻且长。
以上