作为mysql数据的散布式大型集群替代,TiDB越来越多地被选用。对一个超大的数据库集群,对TB调集数据的备份和复原是一个难点和挑战。最近TiDB 4.0 RC中新增加了一个数据备份和复原东西BR,用来完成对超大规模(10TB)数据库备份和还原能够将备份复原速度提高到1GB/s乃至更高。本文就给虫虫我们介绍TiDB高性能备份复原东西BR。
概述
TiDB是一个与MySQL高度兼容的开放源代码的NewSQL数据库,支撑混合业务处理/剖析处理(HTAP)作业负载。对于大型TiDB集群而言,备份和复原长期以来一直是一个具有挑战性的问题。由于数据散布在不同的节点中,因而TiDB没有一致的物理快照。
Mydumper和myloader是MySQL数据中最常用的数据备份和复原东西。和MySQL协议兼容,所以TiDB中也运用他们进行备份和复原。可是对大型的TiDB数据库mydumper存在严重的短板:它无法合理运用群集资源来提高备份速度。因而会严重影响应用程序恳求乃至会导致TiDB的内存不足(OOM)过错。
依据实践测验数据,TiDB Loader康复1 TB的数据大约需求19个小时。很明显,这样地速度不能满足日常数据高效康复的需求。
因而,虽然能够运用mydumper和Loader做数据备份和康复,但他们在对待大规模数据时候,已经彻底不适应出产需求。因而,TiDB新引入了备份和复原东西BR。
首要原理
BR是用于快速散布式备份和复原TiDB群集数据的指令行东西。与mydumper和Loader比较,BR更适合于TB等级的大规模TiDB数据集。
TiDB的经典体系架构如下图
在TiDB渠道内部,首要组件如下:
TiDB Server是无状况SQL层。
TiKV服务器是数据持久化的散布式业务键值存储层。
Placement Driver(PD)是服务器管理群集。
数据备份
BR的首要完成:水平可伸缩性和强一致性。
1、履行数据备份指令时,会按次序履行一下操作:
首先从 PD 获取相关元数据信息:
当前的 TS 作为备份快照的时刻点
集群的 TiKV 节点信息
2、依据这些数据,在内部发动一个新实例,获取对应TS的数据库或表信息,过程中会疏忽系统数据库information_schema,performance_schema和mysql。
3、备份子指令令依据需求履行如下操作:
全量备份:BR 遍历悉数库表,而且依据这些表构建需求备份的 KV Range
单表备份:BR 依据该表构建需求备份的KV Range
4、最终,BR 将需求备份的KV Range搜集后,构造完好的备份恳求分发给集群内的 TiKV 节点。
数据康复
对数据库康复,BR按次序履行以下使命:
1、解析备份途径下的backupMeta文件,依据解析出来的库表信息,新创建一个实例在新集群创建对应的库表。
2、对解析出来的SST文件,进行表聚合。
3、依据Key Range进行预切分 Region,使得各个Region至少对应一个SST文件。
4、遍历要康复的每一张表和其对应的SST文件。
5、找到Region,发送下载文件的恳求到对应的TiKV节点,下载成功后,发送加载恳求。
6、TiKV 收到加载SST文件的恳求后,运用 Raft 机制保证加载 SST 数据的强一致性。
7、在加载成功后,下载下来的 SST 文件会被异步删去。
完成康复操作后,BR会对康复后的数据校验核算,和备份数据进行对比。
BR运用初步
BR指令是由子指令、选项和参数组成的。一个典型的指令如下:
br backup full --pd "${PDIP}:2379" -s "tmp/backup"
子指令不带-和--的字符(如本例中的backup,full)。选项即以-或许--最初的字符(本例中的-s或许等效的—storage,--pd)。参数即子指令或选项字符后紧跟的、并传递给指令和选项的字符,一般要用引号括住(本例中的
常见子指令
BR 指令由多层构成。BR支撑backup、restore 和 version 三个子指令:
backup 用于备份TiDB集群
restore 用于康复TiDB集群
version 用于显示BR版本信息
以上三个子指令可能还包含下面的一些子指令:
full:可用于全库备份或恢。
db:可用于备份或康复集群中的特定的数据库。
table:可用于备份或康复集群中特定的单张表。
常用选项
--pd:用于连接的选项,表明PD服务地址。
-h/--help:获取一切指令和子指令的运用帮助。比方 br backup --help。
--ca:指定 PEM 格局的受信任CA的证书文件途径。
--cert:指定 PEM 格局的SSL证书文件途径。
--key:指定 PEM 格局的SSL证书密钥文件途径。
--status-addr:BR 向Prometheus供给统计数据的监听地址。
基准测验(10TB)
PingCAP供给了BR备份康复的基准测验,其成果如下图所示
对10 TB数据的群集,BR能够以2.7 GB/s的平均速度(五个TiDB实例的平均548 MB/s)。测验期间的最大速度略高于4 GB/s,每个实例的最大备份速度在770 MB/s至866 MB/s之间。
对10 TB数据集群,康复操作平均速度为0.7 GB/s,五个TiDB实例的平均速度为150 MB/s。在测验过程中,BR的最大存储速度约为1.2 GB/s,每个实例的最大康复速度为247 MB/s至268 MB/s。
备份速度
对两个表的备份,数据在下图中,绿色曲线代表一切TiKV实例的总体备份速度,其他曲线代表每个实例的备份速度。
在11:15和11:28,备份索引数据。由于索引条目很短,因而备份速度会下降。
康复速度
备份后,复原了两个表。绿色曲线代表总体复原速度,其他曲线代表每个TiKV实例的复原速度。
BR将复原使命分为多个子使命,然后按次序履行这些子使命。这样我们能够看到图中的毛病。它们可能是需求进一步优化的潜在问题。
在1:00和1:15,将复原索引数据。由于索引条目很短,所以复原速度会下降。