TiDB基础概念

TIDB 是什么

官网这么说的,TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性,支持在本地和云上部署。

TiDB是国产的pingCAP公司 2016 年 12 月发布的。

我的理解,TiDB是这样一个数据库

  • 第一,它是一个分布式数据库,所以可以水平拓展。可以动态的拓展TIDB和 TiStorrage

  • 第二,它支持支持传统的ACID的事务事务,据说是100% 支持

  • 第三,能支持大部分OLAP的场景,并且复杂的OLAP场景可以使用 TiSpark(貌似用了新版本已经建议试用Tiflash了,TiFlash 的速度 比TiSpark 快 )

  • 第四,它兼容mysql协议,也可以直接用mysql 客户端接连TiDB,TIDB的用法及mysql用法几乎一致,甚至可用当做一个从库加入mysql主从集群。
    差异详情见差异文档:与 MySQL 兼容性对比 | PingCAP 文档中心

有人实际测试过,在普通PC机上,TIDB单机性能大概是mysql的50%(这句话只供参考,例子中情景很单一,并且硬件限制,还是单机)

TiDB架构图

PD类似一个协调中心,存储这元数据,它需要时高可用的,使用的Raft协议保证数据的一致性。

TiD是一个分布式数据库实例,接受客户端sql,更具PD元数据信息,决定向哪些 Storrage请求数据。
TiKV 是存键值对的工具,提成用的RockedDB,是TiDB存储数据的一种方式,RocksDB是一个可持久化的键值数据库。

TiFlash 是列存存储工具,底层用clickhouse,是TiDB存储数据的一种方式。TiDb会智能选着使用哪种储存引擎。

架构图的最左边表明它支持mysql协议。

文档地址:TiDB 整体架构 | PingCAP 文档中心

image-20240414185008947

TiKV架构图

以region为单位来做的数据的管理,数据分片和副本

region里面默认大小是64MB,一定key范围的数据划分到同一个region,PD也记录着这些范围信息
image-20240414231846091

TiFlash架构图

image-20240414231920481

TiDB的水平拓展能力

当storage 动态变化的时候,PD会自动维持 storage里面的数据

当TiDB leader宕机的时候,会自动选举出新的的leader.

TiKV的范围查询原理

虽然它使用KV存储,但是按照key是排序,然后分region存储的。

储存数大概是这样: tableId+rowID 作为key,整行数据作为值,并且是按照rowId排序以后分region存储的。

储存索引大概是这样:tableId+ indexID作为key+索引列Id,索引列的值排序后的数组作为值

TiDB安装

测试环境使用TiUp工具安装:TiDB 数据库快速上手指南 | PingCAP 文档中心

TIDB独有的用法

  • 可以通过 set @@tidb-snapshot="过去的时间点",然后查询到过去的时间
    使用 set @@tidb-snapshot="" 以后查看的是最新版本

TiDB的事务支持

TiDB是支持ACID强事务的,也是使用MVCC并发模型

TiDB使用了percolator事务模型,并做了大量优化,事务使用的乐观锁,适合并发高冲突不高的情况,并发冲突高的情况会大量重试,降低性能。

数据迁移

详情见TIDB文档:数据迁移概述 | PingCAP 文档中心

  • 全量数据迁移。
    • 数据导入:使用 TiDB Lightning 将 Aurora Snapshot,CSV 文件或 SQL dump 文件的数据全量导入到 TiDB 集群。
    • 数据导出:使用 Dumpling 将 TiDB 集群的数据全量导出为 CSV 文件或 SQL dump 文件,从而更好地配合从 MySQL 数据库或 MariaDB 数据库进行数据迁移。
    • TiDB DM (Data migration) 也提供了适合小规模数据量数据库(例如小于 1 TiB)的全量数据迁移功能。
  • 快速初始化 TiDB 集群:TiDB Lightning 提供的快速导入功能可以实现快速初始化 TiDB 集群的指定表的效果。请注意,使用快速初始化 TiDB 集群的功能对 TiDB 集群的影响极大,在进行初始化的过程中,TiDB 集群不支持对外访问。
  • 增量数据迁移:使用 TiDB DM 从 MySQL,MariaDB 或 Aurora 同步 Binlog 到 TiDB,该功能可以极大降低业务迁移过程中停机窗口时间。

posted on 2024-04-14 23:05  zhangyukun  阅读(14)  评论(0编辑  收藏  举报

导航