一、TiDB介绍

TiDB是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,分布式事务与基于Raft协议保证强一致的多副本数据安全,具有实时OLAP等重要特性。同时兼容MYSQL协议和生态,迁移便捷,运维成本低。

二、TiDB架构

tick 数据分析 tidb数据分析_tick 数据分析

 

TiDB架构分为三部分:

TiDB Server: 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。

PD: 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

TiKV Server: 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。

三、TiDB特性

云原生 SQL 数据库  支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。

水平弹性扩展  通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。

真正金融级高可用  相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。

分布式事务  TiDB 100% 支持标准的 ACID 事务。

高度兼容 MySQL  无需代码侵入即可从 MySQL 轻松迁移至 TiDB。

 

四、TiDB数据迁移

TiDB Data Migration

TiDB提供了Data Migration 工具,帮助用户方便快捷的从MySQL到TiDB进行数据迁移并实时同步。

TiDB Data Migration工具的主要功能:

从MySQL到TiDB的一键数据迁移+实时同步;

支持从MySQL分库分表进行同步,具有Sharding DDL、主键转换合并等特性; 

运维管理工具友好,监控同步进度,异常问题在线处理。

tick 数据分析 tidb数据分析_数据库_02

 

 TiDB Lightning

        TiDB 提供了极速物理加载工具TiDB Lightning ,帮助用户更快速的从第三方数据源加载海量数据进行TiDB分布式数据库,可以实现:

  • 大量新数据的快速导入。
  • 全量数据的备份恢复。

目前,TiDB Ligthning 工具支持Mydumper输出格式的数据源。

 

tick 数据分析 tidb数据分析_分布式事务_03

五、TiDB数据备份

TiDB Binlog

TiDB 除了提供全量备份迁移工具之外,也提供了增量备份工具及异构数据同步方案。通过TiDB Binlog,用户可以便捷的对TiDB的数据进行在线增量热备份,同时借助该工具,也可以实现与其它数据库和处理系统的数据交换。

TiDB Binlog组件用于手机TiDB的binlog,并提供实时备份和同步功能,该组件在功能上类似于MySQL的主从复制,MySQL的主从复制依赖于记录的binlog文件,TiDB Binlog组件也是如此,不同之处在于TiDB是分布式的,因为需要收集各个TiDB实例产生的binlog,并按照事务提交的时间排序后才能同步到下游。

 

tick 数据分析 tidb数据分析_tick 数据分析_04

六、TiDB监控

TiDB 自带完善的系统监控体系,使用开源时序数据库 Prometheus 作为监控和性能指标信息存储及预警方案,使用 Grafana 作为可视化组件进行展示,自带丰富的多维度的图表展示,其架构如下:

tick 数据分析 tidb数据分析_MySQL_05

 

tick 数据分析 tidb数据分析_MySQL_06

tick 数据分析 tidb数据分析_数据库_07

 

七、关于TiDB应用与实践

随着公司业务快速发展,随之而来的是数据量的剧增,为了应对大数量处理、满足业务查询速率要求以及实现分布式事务,综合考虑,选用电e宝统一账户平台作为TiDB探索和实践对象,主要在集群常规使用、数据同步、处理性能和分布式事务处理等几方面做了深入研究和探索。在使用上TiDB完全兼容mysql协议,可实现业务无缝迁移,同时集群模式存储采用分布式存储,采用raft协议保证了数据强一致性;通过TiDB binlog实现了TiDB到Mysql、TiDB到Kafka的数据同步,以解决数据备份等问题;TiDB集群架构由于完全采用分布式架构,可真正实现无业务影响的一键扩缩容,且无需人工干预新增节点数据同步。

在TiBD架构上我们采用了官方推荐的方案,把 TiDB 和 PD 统一部署,都是 3 节点、3节点Tikv、1节点监控系统,架构方案如下:

tick 数据分析 tidb数据分析_分布式事务_08

在业务切换上我们也做了详尽且安全的方案规划:

第一、剖析当前业务架构,分析现有业务模式和相关系统。

第二、通过数据复制技术将线上数据同步至TiDB集群,确保数据一致且安全稳定。

第三、在确保第二步正确的前提下,将TiDB作为读库提供服务。

第四、第四阶段将TiDB作为主库提供服务。

第五、完全将业务切至TiDB集群,原有库进行数据备份。

至此,整个业务线的切换工作就已经完成了。

 

TiDB也有一些不支持的特性:

 

tick 数据分析 tidb数据分析_MySQL_09

 

八、总结

通过实践和应用可知,TiDB在大数据量处理、分布式事务、兼容性、数据一致性以及扩展性上都有较好的表现,但TiDB目前还不是一个SQL功能像传统数据库一样完备的数据库,也不是能解决所有问题。最终要结合实际应用情况,对于新开发的面向互联网业务的应用场景相对比较合适;对于已有应用系统的数据库迁移到TiDB,可能会涉及到应用改造,数据结构改动等不确定因素,还需要综合评估考虑来确定是否可替换。