10TB超大数据库每秒GB速度备份和还原

北京能治好白癜风的医院 https://yyk.39.net/bj/zhuanke/89ac7.html

作为mysql数据的分布式大型集群替代,TiDB越来越多地被采用。对一个超大的数据库集群,对TB集合数据的备份和还原是一个难点和挑战。最近TiDB4.0RC中新增加了一个数据备份和还原工具BR,用来实现对超大规模(10TB)数据的高速备份和还原,可以将备份还原速度提高到1GB/s甚至更高。本文就给虫虫大家介绍TiDB高性能备份还原工具BR。

概述

TiDB是一个与MySQL高度兼容的开放源代码的NewSQL数据库,支持混合事务处理/分析处理(HTAP)工作负载。对于大型TiDB集群而言,备份和还原长期以来一直是一个具有挑战性的问题。由于数据分布在不同的节点中,因此TiDB没有一致的物理快照。

Mydumper和myloader是MySQL数据中最常用的数据备份和还原工具。和MySQL协议兼容,所以TiDB中也使用他们进行备份和还原。但是对大型的TiDB数据库mydumper存在严重的短板:它无法合理利用群集资源来提高备份速度。因此会严重影响应用程序请求甚至会导致TiDB的内存不足(OOM)错误。

根据实践测试数据,TiDBLoader恢复1TB的数据大约需要19个小时。很明显,这样地速度不能满足日常数据高效恢复的需求。

因此,尽管可以使用mydumper和Loader做数据备份和恢复,但他们在对待大规模数据时候,已经完全不适应生产需求。因此,TiDB新引入了备份和还原工具BR。

主要原理

BR是用于快速分布式备份和还原TiDB群集数据的命令行工具。与mydumper和Loader相比,BR更适合于TB级别的大规模TiDB数据集。

TiDB的经典体系架构如下图

在TiDB平台内部,主要组件如下:

TiDBServer是无状态SQL层。

TiKV服务器是数据持久化的分布式事务键值存储层。

PlacementDriver(PD)是服务器管理群集。

数据备份

BR的主要实现:水平可伸缩性和强一致性。

1、执行数据备份命令时,会按顺序执行一下操作:

首先从PD获取相关元数据信息:

当前的TS作为备份快照的时间点

集群的TiKV节点信息

2、根据这些数据,在内部启动一个新实例,获取对应TS的数据库或表信息,过程中会忽略系统数据库information_schema,performance_schema和mysql。

3、备份子命令令根据需求执行如下操作:

全量备份:BR遍历全部库表,并且根据这些表构建需要备份的KVRange

单表备份:BR根据该表构建需要备份的KVRange

4、最后,BR将需要备份的KVRange收集后,构造完整的备份请求分发给集群内的TiKV节点。

数据恢复

对数据库恢复,BR按顺序执行以下任务:

1、解析备份路径下的backupMeta文件,根据解析出来的库表信息,新创建一个实例在新集群创建对应的库表。

2、对解析出来的SST文件,进行表聚合。

3、根据KeyRange进行预切分Region,使得各个Region至少对应一个SST文件。

4、遍历要恢复的每一张表和其对应的SST文件。

5、找到Region,发送下载文件的请求到对应的TiKV节点,下载成功后,发送加载请求。

6、TiKV收到加载SST文件的请求后,利用Raft机制保证加载SST数据的强一致性。

7、在加载成功后,下载下来的SST文件会被异步删除。

完成恢复操作后,BR会对恢复后的数据校验计算,和备份数据进行对比。

BR使用初步

BR命令是由子命令、选项和参数组成的。一个典型的命令如下:

brbackupfull--pd${PDIP}:-stmp/backup

子命令不带-和--的字符(如本例中的backup,full)。选项即以-或者--开头的字符(本例中的-s或者等效的—storage,--pd)。参数即子命令或选项字符后紧跟的、并传递给命令和选项的字符,一般要用引号括住(本例中的

常见子命令

BR命令由多层构成。BR支持backup、restore和version三个子命令:

backup用于备份TiDB集群

restore用于恢复TiDB集群

version用于显示BR版本信息

以上三个子命令可能还包含下面的一些子命令:

full:可用于全库备份或恢。

db:可用于备份或恢复集群中的特定的数据库。

table:可用于备份或恢复集群中特定的单张表。

常用选项

--pd:用于连接的选项,表示PD服务地址。

-h/--help:获取所有命令和子命令的使用帮助。比如brbackup--help。

--ca:指定PEM格式的受信任CA的证书文件路径。

--cert:指定PEM格式的SSL证书文件路径。

--key:指定PEM格式的SSL证书密钥文件路径。

--status-addr:BR向Prometheus提供统计数据的监听地址。

基准测试(10TB)

PingCAP提供了BR备份恢复的基准测试,其结果如下图所示

对10TB数据的群集,BR能够以2.7GB/s的平均速度(五个TiDB实例的平均MB/s)。测试期间的最大速度略高于4GB/s,每个实例的最大备份速度在MB/s至MB/s之间。

对10TB数据集群,恢复操作平均速度为0.7GB/s,五个TiDB实例的平均速度为MB/s。在测试过程中,BR的最大存储速度约为1.2GB/s,每个实例的最大恢复速度为MB/s至MB/s。

备份速度

对两个表的备份,数据在下图中,绿色曲线代表所有TiKV实例的总体备份速度,其他曲线代表每个实例的备份速度。

在11:15和11:28,备份索引数据。由于索引条目很短,因此备份速度会降低。

恢复速度

备份后,还原了两个表。绿色曲线代表总体还原速度,其他曲线代表每个TiKV实例的还原速度。

BR将还原任务分为多个子任务,然后按顺序执行这些子任务。这样我们可以看到图中的故障。它们可能是需要进一步优化的潜在问题。

在1:00和1:15,将还原索引数据。因为索引条目很短,所以还原速度会降低。




转载请注明:http://www.aierlanlan.com/rzdk/5250.html