Skip to content

05 备份和恢复:可靠性的最后一道防线

你好,我是白园。今天我们来讨论可靠性的第五个部分——备份和恢复 。

我们先来看一下几个案例。

  • 2013年7月3日:下厨房在一次误操作中删除了数据,导致长达两个月的数据丢失。
  • 2015年5月28日:携程网官网出现大面积瘫痪,网页版和手机App均不能正常使用,携程的服务器数据在此次故障中全部遭受物理删除,且备份数据也无法使用。
  • 2015年8月20日谷歌的一个数据中心在一天内遭受了四次雷击,导致极其微小部分的数据(0.000001%)永久丢失。
  • 2017年4月14日美国一家知名的云服务提供商DigitalOcean,主数据库因操作失误被删除,服务中断了5小时。
  • 2017年1月31日:GitLab由于操作失误,意外删除了300GB的生产数据,影响了5037个项目。
  • 2017年9月21日:华为的一名员工不慎删除了南宁移动用户的数据,面临高额罚款。
  • 2018年7月20日:腾讯云的一次故障导致客户数据丢失,面临高达千万的索赔。
  • 2023年10月24日,蚂蚁集团旗下文档产品语雀,由于新的运维升级工具Bug,导致语雀App和官网都无法访问, 故障持续7个多小时。

这些案例清楚地表明,数据丢失事件不仅具有很大的破坏性,而且可能持续很长时间,甚至导致永久性的损失。因此,数据备份成为了维护数据安全的最后一道防线。所以我们要对关键服务的数据做好及时的备份。

数据备份的时候需要考虑哪些方面?

要做好数据备份重点需要关注三个方面:成本、可靠性、时效性。

  • 成本:备份策略应在确保数据安全的同时,考虑成本效益。备份的成本不仅包括存储成本,还包括管理和维护备份系统的成本。因此,要选择性价比高的备份解决方案,避免不必要的开支,确保备份策略得到公司的支持。
  • 可靠性:备份数据的可靠性至关重要,必须定期验证备份数据的完整性和可恢复性,确保在真正需要时能够成功恢复数据。这可能包括定期执行恢复测试,以确认备份数据的质量和可靠性。
  • 时效性:备份的频率应根据数据的重要性和变化速度来确定。理想情况下,备份应尽可能实时,以减少数据丢失的风险。然而,实时备份可能会增加成本和系统资源消耗,因此需要根据实际情况平衡备份频率和数据时效性的需求。

针对不同类型的备份数据,需要考虑的点是不一样的,这里我们把数据分为四种。

  • 在线不可再生数据: 对于至关重要的数据,如用户个人信息、文件数据等。这种数据一旦丢失就会直接影响到用户体验和访问。同时无法恢复,影响极大。这种数据的备份需要关注备份数据的可靠性、实效性、成本。
  • 在线的可再生数据: 如搜索的网页库,这种数据一旦丢失会直接影响用户的体验,这种数据可以利用自动化爬虫技术作为数据丢失后的恢复手段,但是时间成本会很高。所以备份数据的时效性和成本是关键。而可靠性可以做些折中退让。
  • 离线的不可再生数据: 比如用户日志,行为日志等等,这种数据一旦丢失不会直接影响到用户体验,但对合规性和安全审计至关重要。这种数据需要重点考虑数据可靠性和成本。时效性就可以做些退让。
  • 离线的可再生数据: 这种数据我们这里就不考虑备份。

图片

如何解决备份需要的成本问题?

成本是做数据备份首先要考虑的因素,因为无论是哪种数据首先要考虑的就是成本。很多公司都是因为成本太高而放弃了备份。接下来我们看一下解决成本问题最常见的手段。

减少备份副本数量

对于访问频率较低或没那么重要的数据,可以适当减少备份副本的数量,以降低存储和维护成本。

  • 在线不可再生数据:对于公司的核心数据,实施“321备份法则”,即至少保留3个副本,存储在2种不同的物理存储介质上,并且至少有1个副本位于异地(offsite)。这种策略可以最大程度地减少数据丢失的风险。当然你也可以不必完全按照这个原则,在成本允许范围下,能保证数据的可靠、实时即可。
  • 在线的可以再生数据:对于需要保证高时效性的数据,也就是在线的可再生数据,比如上面提到的网页库,应该至少保留两个副本。副本应该存储在可以快速访问的存储介质上,确保在需要的时候可以迅速恢复数据。
  • 离线的不可以再生数据:对于不要求即时访问但要求高可靠性的数据,如用户行为日志或历史记录,可以采用更经济的备份方式。利用纠删码(Erasure Coding,EC)技术,可以选择“8+4”的备份模式,即8个数据块和4个校验块,这可以在保证数据完整性的同时,减少存储成本。

选择成本效益高的存储介质

根据数据的访问需求,选择成本更低的存储介质,如从固态驱动器(SSD)转向传统的硬盘驱动器(HDD),或者使用云存储服务,这通常可以提供更具成本效益的解决方案。

  • 在线不可再生数据:对于需要高可靠性和即时访问的核心数据,推荐使用机械硬盘(HDD),因为它们通常提供较高的读写速度和较大的存储容量。实施实时或近实时的备份,确保数据的即时恢复能力。
  • 在线的可以再生数据:对于重要但对时效性要求不高的数据,可以选择高密度磁盘或归档磁盘,虽然这些存储介质的读写速度可能略低于机械硬盘,但提供了更高的存储密度和成本效益。可以采用定时备份策略,如每日或每周备份,以平衡成本和数据保护需求。
  • 离线的不可以再生数据:对于不常用但需要长期保存的数据,可以选择蓝光光盘或磁带存储。这些介质虽然读写速度较慢,但能提供极高的数据稳定性和较低的长期存储成本。由于这些数据的访问频率较低,可以采用周期性更长的备份策略,如每月或每季度备份。

单G成本:这个是多年前的成本对比,目前的成本会有些变化,介质成本应该就是SSD>HDD>蓝光。

图片

数据压缩

数据压缩是常见的解决成本的方式之一。我们要根据数据的类型和业务需求,选择最合适的压缩算法。不同的数据类型可能需要不同的压缩技术。此外,在选择压缩算法的时候,需要在压缩比(压缩后数据大小与原始数据大小的比率)和压缩/解压缩时间之间做出权衡。高压缩比可能意味着更长的处理时间,反之亦然。

最后,我们还需要进行实际的数据压缩测试,收集不同压缩算法的压缩比和处理时间等性能指标,以便做出更明智的选择。我利用不同工具做过一些测试,你可以看一下我给出的表格。

图片

Gzip在压缩比和效率上比较均衡,并且所有IDC服务器都有这个工具。pigz是gzip的并发版本,需要消耗大量的CPU进行压缩。Lz4在压缩效率上有很大的优势,但压缩比高,这在一些传输多,并且是热数据的使用场景里比较有优势,但需要额外去安装这个工具包。Lzma是压缩比最低的压缩算法,但压缩时间非常长,适合访问频率低、数据量大的冷备使用。

如何保障备份数据的可靠性?

比如在上面提到的故障中有几个是因为备份数据了但是备份的数据无法恢复导致影响放大。比如在2017年1月31日,GitLab不慎删除了高达300GB的生产数据。2018年7月20日,腾讯云发生的一次故障也引起了客户数据的丢失,都是由于数据校验机制未能正常工作,备份的数据同样无法使用。

为了确保备份的可靠性,通常采用如下策略:

  • 数据恢复: 定期进行备份数据的恢复测试,以验证备份的有效性和完整性。通过实际执行数据恢复操作,将备份数据恢复到测试环境中,验证恢复出的数据是否完整,以及是否能够满足业务需求。这一过程可以模拟真实的故障恢复场景,确保在紧急情况下能够顺利恢复业务。
  • 数据校验:在备份过程中启用数据完整性校验,确保备份数据未被损坏或发生错误。定期进行数据校验,通过比对线上原始数据与备份数据的完整性和一致性,确保备份的准确性。常用的校验方法包括MD5和CRC等哈希算法,这些方法可以有效地检测数据在传输或存储过程中是否发生了变化或损坏。
  • 实时监控:建立监控系统,实时监控备份过程,一旦检测到异常立即报警。实施严格的访问控制和安全措施,防止未授权访问或恶意攻击导致的数据损坏。

如何保障备份的时效性?

这里我们从两个层面来考虑,一个是备份的频率另一个是工具平台的建设。

首先来看下备份的频率,大部分的备份都是采取全量备份和增量备份的混合模式。如果每次都是全量备份的话,会消耗大量的时间。如果一直都是增量备份的话,之前的数据有过更新或者删除就很难跟线上的数据保持一致。所以一般都是采取周或者月级别的全量备份,再加上天级别的增量备份,如果是特别核心的数据,那么可以采用小时级别的增量,或者是实时的增长备份。这个具体的频率可以根据业务的实际情况来自行决策。

第二个就需要使用自动化的备份工具,减少人为错误的可能性,我们需要构建一个高效且可靠的备份系统,这样才能保障数据的时效性。这里我给你一个数据备份系统的架构。系统架构分为四个主要层次,每层承担不同的职责和功能。

  • 备份存储层:这层负责存储备份数据,可以选择多种存储介质,如磁带、传统硬盘、企业级大容量硬盘,或者利用云存储服务,包括私有云和公有云。基于成本效益、数据的重要性和访问频率去选择合适的方式。
  • 备份传输层:这一层负责数据从源到存储层的传输。可以采用点对点(P2P)等先进的数据传输技术,以确保数据在传输过程中的速度和安全性。
  • 备份中间层:这一层是备份系统的核心,负责执行数据校验、压缩、加密等处理任务,并决定数据存储的介质。这层的作用是确保备份数据的可靠性和完整性,同时优化存储效率。
  • 备份管理层:提供用户交互界面和运维工具,允许用户根据自己的需求选择和配置备份策略,包括异地复制、备份调度、资源分配、备份时间设置等功能。

通过这样的分层架构,备份系统可以更加灵活地满足不同用户的需求,同时提供高效、可靠的数据保护。

图片

小结

数据丢失对企业来说是一个严重的挑战,历史上的数据中心故障事件已经证明了这一点。备份是保护数据安全、减少损失和确保业务连续性的最后一道防线。制定备份策略时,需要考虑时效性、成本和可靠性三个关键因素。

我们应根据数据的重要性和变化频率来确定备份频率,同时考虑成本效益和数据的可恢复性。通过数据分层、压缩技术和使用不同类型的存储介质,可以在控制成本的同时确保备份的有效性。这包括对高频、低频和冷数据采取不同的备份策略降低成本。

为了确保备份数据的可靠性,需要定期进行数据校验和恢复演练。此外,一个高效的备份系统应分为存储层、传输层、处理层和管理层四个层次,每层都有其特定的职责和功能,以确保数据的安全性和备份操作的高效性。

通过我给出的这些内容,你可以定制自己所负责业务的备份策略,看看还有哪些可以优化的地方。

图片

思考题

如果你觉得某个数据非常重要需要备份,但是老板出于成本考虑不同意备份,你有什么办法来说服你的老板?欢迎你分享你的小技巧,如果你觉得这节课的内容对你有帮助的话,也欢迎你分享给其他朋友,我们下节课再见!