首页 > 其他分享 >TaurusDB库表时间点极速恢复,大幅缩短数据恢复时间

TaurusDB库表时间点极速恢复,大幅缩短数据恢复时间

时间:2024-12-18 16:43:19浏览次数:5  
标签:数据恢复 slice 实例 恢复 库表 tablespace id TaurusDB

经过多组实验对比,对于大实例下仅需恢复几张表数据的情况,有显著优化效果。尤其针对游戏业务等需要频繁回档的场景,将大幅度缩短因数据恢复导致的停服时间。后续我们将逐步在公有云上开放此特性,以惠及更多用户。

 

本文分享自华为云社区《【华为云MySQL技术专栏】TaurusDB库表时间点极速恢复》,作者:GaussDB 数据库。

1.背景介绍

云上客户经常出现误删表、删库等操作。针对这类问题,业界普遍提供库表级恢复方案。首先,在后台将选中时间点的全量数据和增量数据恢复至一个临时实例,然后,自动导出用户需要恢复的表,再将这些表恢复至原实例,以此降低对原实例的影响。

然而,为了确保数据完整性,这一过程通常涉及整个实例的完整恢复,较长的恢复时间导致客户对该方案不甚满意。尤其是当恢复的表数据量远小于整个实例时,如恢复3T实例中仅20M的表,却需先完成整个3T实例的PITR(Point-in-Time Recovery,时间点恢复),再进行表数据的导入导出,不仅效率低下,而且合理性存疑。

针对以上问题,TaurusDB结合自身架构特点,通过优化表级恢复流程,推出表级极速恢复方案,做到恢复时间仅和待恢复表数据量有关,而非整个实例的规模,从而大幅降低RTO,提升服务可用性。

2.原理介绍

2.1多区间分段下载

TaurusDB云原生数据库采用计算与存储分离架构,其备份原理参考官网https://support.huaweicloud.com/usermanual-gaussdbformysql/gaussdbformysql_03_0052.html 

TaurusDB存储的最小管理单元被定义为64MB的plog。在plog上,页面数据以16KB的粒度离散存储。为了实现细粒度的数据恢复,需要基于华为云对象存储服务(OBS)所提供的多RANGE下载能力。

图1 多RANGE仅下载示例

如图1所示,我们将分散在多个plog上的表数据下载下来,再合并成一个新plog,并在log directory中完成位置更新。

2.2 表空间存储映射

TaurusDB在存储侧的管理单元被称为slice,在计算侧由SliceManager模块管理从[tablespace id, pageno]到slice的映射关系,每个slice在逻辑上被分配10G存储空间。

如图2所示,对于tablespace id为8的表,我们仅需要恢复slice1和slice3.

图2 表与slice的映射关系

这组关系会被持久化到文件中,用于重启后的继续查询。当然,备份模块也需要在恢复时更新相关的slice信息,以确保恢复后表映射到新创建的slice上。

2.3 表空间变化记录跟踪

通过上面介绍,我们知道可以根据需要恢复的表tablespace id,识别出需要恢复哪些slice中的对应的plog中的表数据,但实际上客户在使用表级恢复时,通常提供的是表名信息,因此需要了解表名与表tablespace id之间的映射关系。这组映射关系可以通过INNODB_TABLESPACES 表实时查询,但drop , create , rename等DDL操作会更改表的tablespace id,因此,在实际操作中需要注意这一点。

图3 表tablespace id变化过程

如图3所示,当系统恢复到T2时刻,表A的tablespace id就是12,而T3时刻及之后所识别到drop语句,会直接返回错误,因为当前的时间段及之后无该表存在。

TaurusDB在增加备份过程中,通过额外记录涉及表的tablespace id变更的信息,在做库表级时间点极速恢复时,系统会利用这些记录信息,结合全量备份的表空间信息,得到恢复时间点时刻表名对应的tablespace id。

3. 整体流程解析

表级恢复业务整体流程,如图4所示:

图4 表级恢复业务整体流程

  • 管控Agent下发待恢复表名+时间点,获取到恢复表tablespace id;

  • 全量恢复会根据表tablespace id获取要恢复的slice列表,下发恢复任务到存储侧,恢复指定plog;

  • 启动MysqlD,InnoDB层根据表tablespace id,不在列表的显示为DB_CANNOT_OPEN_FILE,回放增量日志时,跳过非恢复表日志;

  • 利用mydumper和myloader导出导入表。

4. 应用

以某公有云上的某用户使用的2T实例恢复为例,对一张大小为12M的表进行测试,优化前后整体耗时对比,如图5所示:

图5 表级恢复优化前后耗时对比

从图中数据对比可以看出,优化后恢复的数据量从TB降低到MB,整体恢复时间仅为优化前所需时间的21%。

此外,创建实例阶段,通过并行化处理各个子步骤,降低了所需时间。在表导入导出阶段,针对开源mydumper和myloader工具,通过调整相应的策略,显著提升了数据恢复性能,详见https://bbs.huaweicloud.com/blogs/433475。

5. 总结

TaurusDB凭借库表时间点极速恢复特性,大幅减少了恢复所需的数据量。经过多组实验对比,对于大实例下仅需恢复几张表数据的情况,有显著优化效果。尤其针对游戏业务等需要频繁回档的场景,将大幅度缩短因数据恢复导致的停服时间。后续我们将逐步在公有云上开放此特性,以惠及更多用户。

 

华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机

 

点击关注,第一时间了解华为云新鲜技术~

标签:数据恢复,slice,实例,恢复,库表,tablespace,id,TaurusDB
From: https://www.cnblogs.com/huaweiyun/p/18615297

相关文章

  • 使用Flink实现MySQL实时同步数据到StarRocks(库表级)
    这里引用官网的文章+我在使用时遇到的问题。官网已经讲解的很明白了。从MySQL实时同步StarRocks支持多种方式将MySQL的数据实时同步至StarRocks,支撑实时分析和处理海量数据的需求。本文介绍如何将MySQL的数据通过ApacheFlink®实时(秒级)同步至StarRocks。注意导......
  • MySQL基础 数据库表的增删改
    文章目录Mysql一、原理定义概念定义安装Mysql.......二、数据库管理2.1内置客户端操作三、数据表管理3.1内置客户端操作四、SQL-DQL概念scott用例表DQL语句Mysql一、原理定义概念定义数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算......
  • 笔记本电脑蓝屏 硬盘损坏数据恢复
    当笔记本电脑出现蓝屏故障,并且怀疑硬盘已损坏需要恢复数据时,可以参考以下步骤和建议:一、初步处理断开电源:在尝试任何数据恢复操作之前,首先要断开笔记本电脑的电源,以避免进一步的数据损坏或丢失。评估蓝屏原因:蓝屏可能是由驱动程序错误、系统文件损坏、硬件故障等多种原因引起的......
  • 恢复删除的文件:6个免费Windows电脑数据恢复软件
    数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如PNG、RTF、PDF、HTML、JPG、MP3等。经过超过75+小时的研究,我分析了25+最佳免费数据恢复软件并创建了一个值......
  • 硬盘开盘数据恢复是什么意思?硬盘坏了不识别数据能恢复吗?
    硬盘不小心摔坏了或突发故障,插入电脑没反应识别不了,通电后还有咯哒咯哒敲盘异响的声音,咨询电脑维修公司或数据恢复中心基本都会被告知需要开盘恢复数据。什么是硬盘开盘数据恢复?狭义的讲,开盘就是在无尘室把硬盘拆解打开,更换新磁头的过程。广义理解则是在无尘室更换磁头,然后通过PC3......
  • 笔记本电脑蓝屏 硬盘损坏数据恢复
    当笔记本电脑出现蓝屏故障,并且怀疑硬盘已损坏需要恢复数据时,可以参考以下步骤和建议:一、初步处理断开电源:在尝试任何数据恢复操作之前,首先要断开笔记本电脑的电源,以避免进一步的数据损坏或丢失。评估蓝屏原因:蓝屏可能是由驱动程序错误、系统文件损坏、硬件故障等多种原因引起的......
  • 移动硬盘开盘数据恢复
    移动硬盘开盘数据恢复是一种针对移动硬盘物理故障导致的数据丢失问题的解决方案。以下是对移动硬盘开盘数据恢复的详细解释:一、开盘数据恢复的概念开盘数据恢复是指当移动硬盘出现物理故障,如硬盘磁头损坏、电路板故障等,导致电脑无法识别或读取硬盘数据时,通过专业技术和设备打开......
  • 软件测试笔记|数据库基础|通过python,如何导入数据库,并使用数据库表数据?
    VX公众Hao:阳哥整理软件测试笔记 以下是使用Python操作常见数据库(以MySQL为例)的基本步骤:首先,需要安装对应的数据库驱动程序。对于MySQL,通常使用pymysql库。可以通过pipinstallpymysql命令安装。1.连接数据库importpymysql#建立连接conn=pymysql.connect(  ......
  • 笔记本硬盘数据恢复
    一、基础恢复方法撤销恢复:如果刚刚删除了文件,可以尝试使用撤销键【Ctrl+Z】来取消之前的删除操作。回收站恢复:检查回收站,找到已删除的数据,右键单击并选择“还原”。这种方法适用于意外删除且未清空回收站的情况。文件历史记录恢复:如果之前启用了文件历史记录功能,可以进入“......
  • 记录Sql Server 数据库数据库表是够新触发器时当前执行sql
    因为一个表的记录怎么也没有查到是什么原因,表的一个字段全给更新成一样了。看了所有代码也没有找到原因,这就产生了这样一个需求,我需要用一个表来记录当前这个表在更新记录时,就记录下这段SQL。最后通过百度知道dbccinputbuffer(@@spid)能返回当前执行的sql,这下就能监控到具......