当企业生活在不符合零恢复点目标(RPO)的灾难恢复计划中时,他们接受更高的客户和经济风险。根据Gartner公司2020年的研究,IT停机的平均成本是每分钟5600美元。对于一些公司来说,一两个小时的停机时间可能意味着数十万(如果不是数百万)的收入损失。
这种风险已经没有必要了。由于新的数据库技术提供了规模和弹性,正在发生灾难恢复范式的转变。以前试图围绕他们在灾难中可能失去的东西进行规划的企业,已经开始为完全避免灾难而设计。
为什么RPO和RTO对企业成功如此重要?
企业非常关心确保应用程序的弹性和正常运行时间。任何停机都会直接影响到顶线收入,损害品牌形象,并将宝贵的资源时间转移到故障恢复过程中。因此,首席执行官、首席信息官和最高级别的技术主管都专注于实现应用程序的正常运行时间目标,并尽量减少基础设施层面的故障成本。对于DBA团队来说,这意味着为不同层级的应用程序定义和满足恢复点目标(RPO)和恢复时间目标(RTO)。
什么是RPO?什么是RTO?
RPO(代表恢复点目标)标志着当故障发生时,有多少数据会丢失。一个非零的RPO意味着在RPO和故障时间之间发生的任何承诺事务都可能丢失。恢复时间目标(RTO)定义了从故障中恢复应该花费多少时间。非零的RTO会直接导致应用程序的停机时间。例如,在一个电子商务网站上,这可能意味着失去几分钟(如果不是几小时)的客户交易,导致收入损失。
值得注意的是,RPO和RTO是协同工作的。在RPO为非零的快速恢复情况下,企业必须尝试手动调节他们的账户或忍受数据丢失。另一方面,一个零RPO的解决方案,如果恢复缓慢,将导致大量的应用程序停机。一个最佳的灾难恢复计划需要考虑到特定应用程序所需的RPO和RTO。
对于关键任务的应用程序,企业需要尽可能地接近零RPO和RTO,以尽量减少对企业和客户的整体风险。一个处理金融交易的应用程序,如果RPO不为零,可能会丢失存款或交易。一个预订系统可能会失去客户的预订。更糟糕的是,在实时医疗系统中丢失病人数据可能会直接影响病人的安全。
如何满足零RPO和RTO
满足零RPO和RTO是非常复杂的。几个架构层对RPO和RTO有贡献,包括数据库系统、集群技术、数据复制解决方案和存储复制。每一层都是一个独立的产品,必须由客户进行整合、配置和设置。这意味着,每一层都需要一个专家团队来设置、管理和维护系统。通常,产品的组合和产品的配置方式对客户来说是独一无二的。
这整个讨论假设现有的数据库实际上可以实现零RPO和低RTO,但在许多情况下,这不是真的。主动式设置应该是在数据中心级别的故障情况下继续为流量提供服务而不丢失数据,但在实践中,信息在数据中心之间的传输过程中可能会丢失。此外,它们依赖于对故障的及时检测来触发恢复(见图1)。备用设置也有类似的问题,即在检测故障和恢复期间丢失消息。
与主动-主动和备用设置相比,NoSQL解决方案可以在两个以上的服务器上运行,提供更高的可用性和扩展性。NoSQL有内置的复制功能,这意味着企业不需要一个单独的解决方案来支持复制或集群。然而,NoSQL也有自己的隐藏成本。虽然它可以在故障中幸存下来,但最终的一致性意味着可能会出现陈旧的数据和大脑分裂的情况,给DBA留下不一致的数据,他们不得不进行协调。即使停机时间减少了,数据库中包含的数据要么是陈旧的,要么是不正确的。此外,在NoSQL中从灾难场景中恢复的时间有时需要几天,因为数据需要启动和修复,以确保数据是可用的和最新的。
什么数据库可以提供零RPO?
CockroachDB通过将构建高弹性基础设施的复杂性包裹在一个产品中,实现了零RPO。它通过消除单独的复制、集群和存储解决方案来实现容错,从而将IT弹性的组件复杂性降低了75%。相反,一切都内置于数据库系统软件中,减少了与购买、部署和管理多个供应商的解决方案有关的成本和复杂性。与NoSQL不同的是,它通过基于共识的复制提供了ACID保证,因此数据始终是一致的,并且保证承诺的事务能够持续存在。CockroachDB也可以部署在商品硬件上,因为它在软件层有内置的存储级故障的弹性。更多关于各层的详细描述请见这里。
在这层之下,CockroachDB在集群中智能地复制数据,将副本分散到不同的可用区域,以提供基于可用基础设施的最高水平的容错。这意味着对于任何硬件故障,从磁盘到数据中心级别的灾难,CockroachDB都可以在恢复过程中继续为客户流量提供服务。CockroachDB还被设计成支持平均4.5秒的RTO。值得注意的是,这包括检测故障所需的时间,以及从故障中恢复的时间。没有其他数据库供应商能够提供这些保证,以及CockroachDB的易用性和操作简单性。
企业应该停止接受任何低于零RPO的要求
肩负着在管理成本和风险的同时加快产品出货速度这一艰巨任务的IT领导们,历来不得不在保护数据和成本之间做出权衡。有了像CockroachDB这样的新数据库技术,鉴于数据丢失所带来的高成本和高风险,IT领导者可以将零RPO作为所有核心业务应用的基本要求。最后,IT领导者可以在降低风险的同时减少数据架构的复杂性,使他们能够快速建立可靠的创新产品。
事实是,RPO和RTO只说明了问题的一半。停机的成本超出了收入的损失。还有解决这个问题所花费的时间。这些时间没有用于改善核心服务或产品。此外,还有工程师和开发人员的经验,他们正在研究解决方案并处理停机的焦虑问题。
如果你想为生存而不是失败做打算,现代的分布式SQL数据库是最好的选择。CockroachDB有一个免费的管理数据库产品,如果分布式SQL是一个陌生的领域,那么这个产品对于试验数据库来说是非常好的。