Xiaopei's DokuWiki

These are the good times in your life,
so put on a smile and it'll be alright

User Tools

Site Tools


it:tidb

Table of Contents

TiDB

简介

TiDB 是一种新型分布式数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。

详细介绍参考官方网址:https://pingcap.com/docs-cn/overview/

架构

TiDB 集群主要分为三个组件:

  • TiDB Server:负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果
  • PD Server:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
  • TiKV Server:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎

分库分表实现

TiDB 服务器收到 SQL 语句后,根据索引的编号将语句转换为一个或多个键值对(KV),这些键值对被发送到相关联的 TiKV 服务器,这些服务器以 Raft 日志的形式复制保存。最后,Raf 日志被提交,这些键值对会被写入指定的存储引擎。

Region: 表示一个连续的、左闭右开的键值范围 [start_key,end_key]。每个 Region 有多个副本,并且每个副本称为一个peer 。每个 Region 也归属于单独的 Raft 组,以确保所有 peer 之间的数据一致性,Region超过96M时自动分割成两个邻近的2份Region,每份3个副本, 由于TiDB数据最终是以储键值对形式存储,保证其水平扩展能力和高可用性。

Raft log: 多节点之间使用Raft实现强一致性。在将一个键值对写入数据库之前,这个键值对首先要被复制成Raft log格式,同时还要被写入各个节点硬盘中保存。在Raft log被提交后,相关的键值对才能被写入数据库

it/tidb.txt · Last modified: 2018/08/18 15:23 by admin