时间回溯 | 如何按需极速查询数据库实例的历史数据?

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 未来数据库备份DBS团队及数据管理团队会进一步挖掘备份数据的使用价值,在闪回,数据变更轨迹,数据订正,历史数据分析等领域为用户提供更多的可能。

01日常数据管理中的痛点


最近用户小明遇到了问题,他在一次发布之后,由于程序bug,导致核心库的数据出错,急需订正,这个时候小明希望能够通过某种方式能够查到这个库在变更之前的数据,来进行变更的溯源。最后小明通过下载备份集并本地导入的方式查到了数据,但是整体耗费的时间很长,耽误了问题发生后的最佳止血时间。


事实上,现在很多用户使用在线库进行日常的自助取数,数据分析,在这个过程中,我们还遇到了很多其他问题:

 线库查询的速度慢,对在线业务稳定性有影响。 业务团队往往有在线去统计数据,做一些简单数据分析的需求,通常来说,基于本身的技术栈以及对数据的了解,业务同学往往会选择在在线库上去查找数据,但是直接在线上库的查询数据会有很多弊端:


进行数据分析的需求往往是OLAP类的数据需求,一个分析类的查询有可能会跨越多张表进行查询,或者无法很好的命中在线库的索引,一个查询有可能会很大,吃掉在线实例过多的资源,甚至有可能影响业务库的稳定性;

进行分析查询SQL往往运行时间较长,有可能会被线上库判定为慢SQL并杀掉,导致无法跑出结果。


 无法分析历史数据。在很多情况下,业务团队往往需要通过去查询在线库的历史数据来对数据进行分析,比如查询历史某一时刻的不同品类下的商品规模,不同时期组织架构下的人数等等,此时如果通过数据库Created字段去区分可能会出现数据有变更,比如可能已经做了组织架构的调整等,导致无法准确获取到数据。


 有数据漂移的问题。在企业有了成熟的数据仓库之后,业务团队需要定时将业务库中的数据抽取到数据仓库中,如果直接从在线库抽取则有可能出现数据漂移的问题。


数据库备份DBS团队深耕备份领域,负责了整个阿里云各种数据库的备份,沉淀了PB级的用户历史时刻的备份数据,备份团队能否提供一种方便可靠的方式,让用户能够解决上述的问题呢?

02如何解决上述问题


结合上述对需求的分析,我们抽象出了两类用户在使用业务数据库进行业务分析时常见case,并尝试解决。、


在线库的查询需求

在不影响在线库稳定性的情况下快速获得数据


用户对于在线库的查询需求的主要在于查询性能上,用于分析类的需求一般遍历数据较多,无法很好命中索引,所以会有查询慢,甚至还会影响到在线库的稳定性。


那么如果我们通过备份恢复的能力,快速的从备份中恢复出一个按量付费临时实例来供业务方查询,这样就能完美的将OLAP的需求和OLTP的需求隔离出来,解决分析查询可能会对数据库造成影响或者被慢SQL杀掉的问题。

1.JPG

甚至更进一步,我们能否一次性很快的克隆出来多个临时实例出来,通过大数据的手段来加速查询,解决查询慢的问题,提升用户的查询体验。

2.JPG


历史数据的查询需求

能够快速查询历史某个时间点的数据


上述有提到过,用户在很多情况下,可能需要去查询各个历史时间点的数据,比如如下情况:


▶︎ 某用户由于运营的误操作导致关键业务库表数据的部分字段被改脏,希望能够通过查询这张业务表的历史数据,找回被更改的数据;

▶︎ 某用户最近一段时间各个不同部门下的用户量,不同品类下商品量/素材量的变化,但是由于用户的部门,商品的品类是在不断变化的,所以如果在当前库通过Created的方式去统计,可能结果会和事实有偏差;

▶︎ 由于业务库中数据不断变化,在做年度报告的时候,无法准确捞到年底准确时间点的数据,并且多次查询的结果由于业务库数据变化可能会不一致;

▶︎ 在从业务库抽取到数仓的过程中,可能会出现数据漂移的问题。


综上,我们认为,可以基于当前数据库备份的能力,拉起一个某时刻历史时刻的临时实例,让用户精确获取到历史某指定时间点的数据,进行数据的订正和查询。

3.JPG

甚至,针对用户的分析场景,可以提供AS OF语义,让用户通过单个SQL能拉到历史数据的变化趋势。

4.JPG

综上,我们可以通过当前阿里云的数据库备份的Point-in-time recovery (PITR)以及快速恢复的能力,提供用户可以按需使用,用时创建,用后释放的计算资源,并使用大数据的技术来做数据的merge和分析。来解决用户进行数据分析过程中的在种种问题。

03备份数据查询功能


基于上述的痛点及解决方案,阿里云数据库备份DBS团队联合数据管理DMS团队,共同推出了“备份数据查询”功能,可拉起历史时刻的计算资源,供用户查询和分析。功能有如下特性:


 秒级: 利用云盘秒级挂载以及本地盘CDM的能力可以很快的拉起临时实例。

 按需:仅在有需要时拉起,日常不会有资源的浪费。

 自动释放:DBS会管理所有拉起实例的生命周期,在实例没有40分钟没有查询后自动释放。


基于上述功能,用户可快速低成本地回溯到实例历史时刻,进行对应的查询和分析。(点击文末阅读原文,了解备份数据查询更多内容)如果你是RDS的用户,你可以看到如下的全量备份时间点列表:

5.png

登录DMS数据管理服务,登录实例。

https://dms.aliyun.com/?accounttraceid=4c6302ad77ee4e4a9bd8bdedfc36865dbdef

6.JPG

即可看到左侧备份数据查询tab,点开tab之后可以看到实例所有的全量备份时间点,点击备份时间点均即可在DMS控制台页面上发起查询。后续会支持直接从RDS页面跳转发起查询,目前,备份数据查询功能仅支持MySQL引擎,后续会逐步推广到其他引擎,并支持历史任意时刻的查询能力。


04举个栗子


小明是国内某电商平台的用户,其使用了阿里云的数据库的备份功能,11月8日上午,因为运营动作导致类目标签数据被误改,现在希望找回这些被误修改的数据。

小明通过RDS控制台备份数据页面查看实例备份,发现了在11月7号晚上11点有一个备份集,通过查询这个备份集的数据即可找回数据:

小明通过DMS控制台登录了数据库,并在控制台的左侧找到了备份数据查询,并选择了在修改之前最近的一个备份集(11月7日晚上11点)。

双击展开备份集,成功"穿越"回了昨天,并通过id找到了昨天被误修改的历史数据。

7.png

通过备份查询查找到历史的标签信息。

随后用户在控制台上完成了历史数据的回溯并订正了现在的库。

成功消弭了一场灾难。\^o^/


05未来展望


未来数据库备份DBS团队及数据管理团队会进一步挖掘备份数据的使用价值,在闪回,数据变更轨迹,数据订正,历史数据分析等领域为用户提供更多的可能。


 / End /  

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
19天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
21天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
61 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
18天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
17天前
|
存储 缓存 固态存储
怎么让数据库查询更快
【10月更文挑战第28天】
25 2
|
19天前
|
存储 缓存 关系型数据库
怎么让数据库查询更快
【10月更文挑战第25天】通过以上综合的方法,可以有效地提高数据库查询的速度,提升应用程序的性能和响应速度。但在优化过程中,需要根据具体的数据库系统、应用场景和数据特点进行合理的调整和测试,以找到最适合的优化方案。
|
19天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
89 1
|
20天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
194 2
|
11天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
20天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
10天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
25 1