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

本文分享自华为云社区《【华为云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、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机

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

TaurusDB库表时间点极速恢复,大幅缩短数据恢复时间的更多相关文章

  1. Oracle之表空间基于时间点的恢复

    记一次优化过程中:一次误操作,在不影响其他表空间的情况下:采用表空间基于时间点的恢复(TSPITR)方法恢复数据的过程. 1.TSPITR恢复原理    TSPITR目前最方便的方法是使用RMAN进行 ...

  2. xtrabackup原理,整库,单表,部分备份恢复

    物理备份xtrabackup原理 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...

  3. 表空间基于时间点的恢复(TSPITR)

    环境:RHEL 6.4 + Oracle 11.2.0.4 准备模拟环境 1. 验证表空间的依赖性 2. 确定执行TSPITR后会丢失的对象 3. 自动执行TSPITR Reference 准备模拟环 ...

  4. PostgreSQL常用操作合辑:时间日期、系统函数、正则表达式、库表导入导出、元数据查询、自定义函数、常用案例

    〇.参考地址 1.pg官方文档 http://www.postgres.cn/docs/9.6/index.html 2.腾讯云仓pg文档 https://cloud.tencent.com/docu ...

  5. mysql库表优化实例

    一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下 ...

  6. 己亥清爽恢复系列之数据文件4篇:DROP表后如何恢复(非闪回技术)

    己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:你不小心Drop掉了一 ...

  7. oracle数据库误操作把表删除了,怎样恢复

    一:表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有:1.从flash back里查询被删除的表 select * from re ...

  8. oracle数据库误删的表以及表中记录的恢复

    oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...

  9. SQL Server 数据恢复到指点时间点(完整恢复)

    SQL Server 数据恢复到指点时间点(完整恢复) 高文龙关注2人评论944人阅读2017-03-20 12:57:12 SQL Server 数据恢复到指点时间点(完整恢复) 说到数据库恢复,其 ...

  10. Hive(五)数据类型与库表操作以及中文乱码

    一.数据类型 1.基本数据类型 Hive 支持关系型数据中大多数基本数据类型 类型 描述 示例 boolean true/false TRUE tinyint 1字节的有符号整数 -128~127 1 ...

随机推荐

  1. C#/.NET/.NET Core开发实战教程集

    DotNetGuide介绍 DotNetGuide是一个专注于C#/.NET/.NET Core学习.工作.面试指南的GitHub知识库,该知识库在GitHub中Star数已突破6.5k+当然这离不开 ...

  2. 八字测算引流seo程序php网页版黄历/排盘/抽签/星座/生肖/解梦整站程序分享

    2演示站: https://s31.yczfcn.com/ 2源码说明: 1.手机端和PC端共两套模板,手机端访问时候自动跳转至手机端模板和域名. 2.本程序包含文章系统,结合自身的免费测算功能,适合 ...

  3. ChatGPT “眼”中的开源数据库

    开源作为数据库发展的未来趋势之一,被冠以"数据库弯道超车的法宝"的称号.中国开源数据库产品正处于蓬勃发展的趋势,根据 墨天轮中国数据库流行度 ,截止2023年2月底已有46款开源数 ...

  4. dotnet 委托delegate的使用 定义和使用

    void Main() { // 委托 - 初级和高级的分水岭 // 1. 委托的初体验 // 委托是一个引用类型,其实是一个类型,保存方法的指针(地址) (变量名字都是地址 都是指针) // 是一个 ...

  5. C++ 第三节课 指针的使用

    #include <iostream> using namespace std; void show(){ cout << "全局函数" << ...

  6. 【异常处理】Assistive Technology not found: com.sun.java.accessibility.AccessBridge

    十一回来之后,工作电脑上的抓包工具Charles突然启动不起来了,双击图标后,一闪而过,就没动静了. 不知道是不是因为之前安装了什么工具.软件引起的. 打开CMD命令行,跳转到目录下启动,提示:Ass ...

  7. Python入门:A+B问题

    1. A + B 问题I 前言 本篇作为课程第一篇,主要是对Python基础语法进行扫盲,本节课会学习到下面知识: 输入 本道题目的工作任务很简单,只是计算两个数的和,但是在计算之前,我们首先要明确的 ...

  8. 开启 Calico eBPF 数据平面实践

    简介 Calico 从 v3.13 开始,集成了 eBPF 数据平面. 关于什么是 eBPF, 以及 Calico 为什么引入了 eBPF , 并不是本篇文章的重点,感兴趣的朋友可以自行阅读相关文档. ...

  9. Seralizable

    class CSer { private String name; private int age; public CSer() { } public CSer(String name, int ag ...

  10. JS 转盘抽奖效果

    阅读原文,微信扫描二维码, 手机关注公共号酒酒酒酒,搜索 JS 转盘抽奖效果 效果图 前置条件: 开发环境:windows 开发框架:js 编辑器:HbuilderX 正文开始 <!DOCTYP ...