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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 未来数据库备份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图形化工具创建数据库表。
相关文章
|
2月前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
203 61
|
8天前
|
SQL 存储 运维
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
21 1
|
12天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
15天前
|
前端开发 JavaScript 数据库
获取数据库中字段的数据作为下拉框选项
获取数据库中字段的数据作为下拉框选项
46 5
|
1月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
29 6
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
33 0
|
2月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
16天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
42 3
|
16天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
45 3