实战宝典 | 如何让备份数据秒级可用,随时查询历史数据?
1. 备份到二级数据库
从数据的生成和管理角度,企业数据可以分为一级和二级数据两类。其中一级数据是系统直接生成的数据,例如存储在线订单的数据库。二级数据的内容来源于一级数据,可能是一级数据的简单复制(例如订单数据库的一个备份副本),也可能是在一级数据的基础上发生格式或内容的变化(例如基于在线订单数据生成的商业分析数据库)。业界通常认为,从数据量看一级数据仅仅是企业需要维护数据“冰山一角”,Gartner报告指出二级数据的数据量达到一级数据的20倍。
通常企业核心的一级数据都使用数据库存储(本文称为在线库),而数据库的备份则是最常见的二级数据。大部分时候,备份数据量会远大于在线库的数据量。传统的备份系统中,这些备份数据会长期占用存储资源,但仅仅在容灾场景下才会使用,也就意味着为备份数据付出的成本很高,但大部分时候无法获得收益。另一方面,如果备份数据只能通过恢复(覆盖)到在线库才能被使用,那么企业使用备份数据本身就变成了一个具有很高风险的操作。
现代备份系统,通常会给用户将备份数据恢复到非生产数据库的解决方案,我们称之为二级数据库。显然二级数据库也成为了用户的二级数据的一部分。用户可以将二级数据库用于许多场景,举例来说:
- 开发测试:许多企业的集成测试,依赖真实的在线数据内容和数据量。那么使用备份数据产生的新数据库,可以满足这一需求,并且对在线生产库没有影响。
- 应急容灾:与传统的恢复到生产库方案不同,生产新的应急容灾库的使用方法更加灵活。既可以在生产库故障期间作为生产库的临时替代(故障结束后切换回生产库),也可以在生产库出现脏数据时作为数据订正的参照对象。
- 历史分析:如果要分析过去某个时间点的数据,那么查询从历史备份数据产生的新数据库,是最合理的方案。
2. 拷贝和管理数据带来的困难
前面所述盘活二级数据的方案,从解决方案的角度是成立的,但实施起来面临着许多技术困难。
- 数据拷贝的资源成本:
1)同一个备份数据产生可能产生多个二级数据库,这些数据库之间数据完全重复,产生多倍的存储成本,以及数据拷贝产生的带宽成本。
2)不同备份集之间也存在大量重复数据,例如在线订单库的一次备份可能相比前一天的备份,只有1%记录发生变化,剩余大量的记录是不变的,然而新增的存储成本则是生产库的100%。
- 数据拷贝的时间成本:
即使用户不在意存储和带宽成本,拷贝数据本身仍然受限于物理设备的IO吞吐限制。例如当生产库的容量达到1TB,拷贝数据的最大吞吐是100MB每秒,需要3个多小时才能完成一个二级数据库所需的数据拷贝。然而前面提到的几个典型二级数据库应用场景,都希望数据准备时间(类似备份领域的RTO概念)尽可能低。特别是应急容灾场景,高于秒级级别的准备时间,一般是不能接受的。
- 资源管理挑战:
一般企业用户通常不具备云服务弹性资源管理能力,对于二级数据库应用场景,需要提前准备软硬件资源,包括主机、系统、软件和网络等配置,无法按需弹性的付出的硬件和人力资源成本。
- 数据管理挑战:
1)新产生的二级数据库也需要管理,例如权限管理、性能监控、后台运维。然而现有的大部分数据库管理系统和人员(如DBA),并没有准备好管理为二级数据库。
2)在一些特殊情况下,二级数据库还需要对原始数据加工后才能使用,例如生产库中的敏感数据,在提供给测试或分析系统前,需要对数据进行脱敏处理。
以上的各种技术问题,使得备份数据到二级数据库的实际实施难度非常高,大部分企业用户都只能望而却步。阿里云数据库备份产品DBS,运用了业界领先的CDM(Copy Data Management)技术,提供了完全克服以上技术困难的整体解决方案——DBS沙箱,帮助用户全面激活从备份数据到二级数据库业务生态。
3. 阿里云DBS沙箱技术
CDM是备份技术领域近几年备受关注的技术方向。业界对于CDM的定义各有一些不同,在数据库领域,我们认为CDM是多项技术组合而成的解决方案,目的是帮助用户更快速、低成本的保存和使用数据库备份数据,具体来说就是解决前面所述的备份数据到二级数据库各项技术困难。
3.1 物理备份技术
物理备份技术,是DBS沙箱技术的前提。相比逻辑备份技术,物理备份不需要解析数据库中的内容,而是直接拷贝数据库的文件,因此相比逻辑备份,占用的计算、存储、带宽资源更少。物理备份技术的主要难点在于,不干扰在线库的正常读写前提下,实现对数据库文件PIT(Point-in-Time)拷贝。举个例子,如果在不锁表情况下,一遍拷贝MySQL数据文件,一遍对MySQL写入数据,最后拷贝完成的数据文件很有可能是错误的,因为这个文件先拷贝的部分与后拷贝的部分,并不属于同一个时刻。实际上,数据库物理文件的PIT拷贝,是数据库专业备份软件的核心技术门槛之一,不同类型的数据库的具体技术方案完全不同。DBS的物理备份功能,支持对主流的MySQL、Oracle、SQLServer、MongoDB等数据库。
进一步,我们将对数据库物理文件的PIT拷贝称作物理全量备份,另一种称为物理增量备份的技术,仅拷贝从上一次备份时间点到当前备份时间点的增量变化,从而大幅降低产生新的备份集的带宽和存储开销。最理想情况下,仅需要第一次采用物理全量备份,后续每次备份都可以采用物理增量。要实现这个目标,需要克服以下两个技术难点:
- 增量数据不能独立存在,它在恢复时,必须与全量可以合并为新的全量数据。如果选择在用户端实现全量与增量的合并,那么会消耗大量用户资源,以及使得RTO大幅增加。因此更友好的解决方案是,在恢复前,服务端完成全量与增量的合并。
- 如何提取数据库增量变化的数据,业界称为数据库CBT(Changed Block Tracking)技术,这同样是专业数据库备份产品的核心技术门槛之一。DBS同样对主流的MySQL、Oracle、SQLServer数据库都支持了CBT能力。
关于阿里云DBS产品针对各种主流数据库,如何实现物理全量和增量备份,由于技术点十分繁杂,并且不是本文介绍沙箱功能的核心技术点,本文暂不展开论述。另外DBS的物理备份功能,还结合了传输层的源端重删和压缩技术,进一步降低备份带宽开销。
3.2 存储虚拟化技术
存储虚拟化技术,是解决备份数据到二级数据库的拷贝问题的关键技术,也是业界各种CDM解决方案必不可少的技术点。秒级快照和克隆,是存储虚拟化技术的核心能力。将存储虚拟化技术运用到数据库备份,分为2个阶段:
- 生成只读快照:对于同一个生产库产生的不同时间的备份集,使用存储虚拟化技术的备份系统,不再将这些备份集区分在不同文件路径存储,而是按时间覆盖备份数据,每当完成新数据的写入覆盖,则创建一个新的快照。产生新的快照并写入数据,不会触发数据拷贝,因此新旧快照之间的重复数据是共享的。
- 生成可写克隆:当备份系统需要从一个备份集恢复数据时,需要选择一个快照,然后创建基于该快照的克隆。克隆是可写的,对克隆的写入不会影响已创建的快照数据,也不会影响其他克隆的数据。
业界领先的存储系统实现快照和克隆能力,主要的理论基础都是CoW(Copy-on-Write)和RoW(Redirect-on-Write),这两种设计各有利弊,工业界也有不少对这两项技术的改进实现,本文不展开论述。阿里云DBS产品针对不同的场景,综合采用了CoW和RoW两种的存储解决方案。
3.3 云原生沙箱实例
在秒级生成备份数据克隆的基础上,阿里云DBS产品还进一步提供了二级数据库实例托管功能——DBS沙箱实例。目前DBS支持为MySQL数据库(包括阿里云RDS)创建沙箱实例,未来将进一步支持Oracle、SQL Server和MongoDB。对无论数据源来自RDS、ECS自建,还是线下环境,只要通过DBS备份到云端,都可以按用户需要在DBS云端创建沙箱实例。该实例是DBS云服务的一部分,用户不需要操心的资源弹性调度和高可用问题。
除了生成沙箱实例,DBS还为用户考虑了管理数据库的需求
- 数据管理:DBS沙箱功能对接了阿里云数据管理服务DMS。DMS是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。DBS沙箱功能创建的DMS任务,默认使用DMS免费版功能,用户可在DMS控制台自行配置其它付费功能。
- 监控管理:DBS沙箱功能对接了阿里云数据库自治服务DAS。DAS是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。DBS沙箱功能创建的DAS任务,默认使用DAS免费版功能,用户可在DAS控制台自行配置其它付费功能。
4. 定制您的DBS沙箱解决方案
无论您的数据库部署在哪里,DBS的备份和沙箱功能都提供了对应的接入方案:
- ECS上的自建数据库(创建DBS物理备份)
- 线下数据库(创建专线和DBS物理备份)
- RDS数据库(通过DBS控制台导入)
目前已经多个知名企业参与了DBS沙箱功能的内测,覆盖了以上各种接入类型。目前沙箱功能内测已经进行了7个月,我们已经在国内多个地域,包括北京、上海、杭州、深圳等正式发布沙箱功能,未来会发布到包括海外站在内的更多阿里云站点。
DBS沙箱功能提供了非常灵活的售卖模式,包括免费试用、付费商用两种模式。其中免费模式默认有一定的限制,例如存储容量不超过100G,以及单个备份计划的沙箱实例个数不超过1个等。用户完全可以先从免费试用模式开始,探索DBS沙箱功能带来的二级数据各种可能的业务玩法。付费模式的计费项,包含存储计费和实例计费2项(类似阿里云ECS产品的实例,包含按云盘容量计费,以及ECS实例规格计费),这两项计费项都是按照使用时长按量计算,未来也会推出预付费的资源包,具体单价近日将正式公布。
这里我们定义一个典型DBS用户,估算其开启沙箱功能前后的成本。
- 采购DBS medium规格实例(单价224元/月)
- 每天产生全量备份集,每个备份集数据量为100G,保留最近3个月的备份数据(单价0.12元/GB月)
参考DBS的按量付费单价(暂不考虑存储资源包和数据压缩对存储费用的影响),那么该用户的初始成本为
224元/月 + 0.12元/GB月*100GB/份*3月*30份/月 = 1304元/月
回顾本文第一段提到的各种二级数据应用场景:开发测试、应急容灾、历史分析,用户通常不需要为所有的历史备份数据集创建快照。DBS支持为沙箱功能设置独立的生命周期管理策略
- 最近1天的备份数据作为沙箱存储(参考单价1元/GB月)
- 每个月发生一次应急容灾,每次需要创建一个中等规格的沙箱实例,持续12小时(参考单价0.395元/天)
用户开启沙箱功能的新增成本为
1*50GB*1元/月+0.5天/月*0.395元/天 = 50.2元/月
也就是说对于这个典型用户,开启DBS沙箱功能后,付出的额外成本仅相当于原有备份成本的3.8%,而获得的收益则是在原有的备份恢复能力基础上,使得在线数据库具备了秒级容灾能力(成功抵抗每月12小时的生产库的高故障率)。需要注意,截止本文发稿,DBS沙箱实例计费单价还未正式公布,因此以上参考单价仅作为参考,真实价格请以阿里云官网发布的价格为准。
5. 如何快速入门,免费试用沙箱功能?
DBS沙箱功能,可以让您从目标备份集快速创建新的数据库实例,让您的备份数据秒级可用。多个沙箱实例之间的读写不会互相影响,也不会影响原数据库。
如需了解如何快速掌握创建、免费试用DBS沙箱的操作,请点击:
https://help.aliyun.com/document_detail/185577.html
文章转自公众号:阿里云数据库