一、传统关系型数据库所面临的问题

根据以往的MySQL使用经验,MySQL单表在 5000 万行以内时,性能较好,单表超过5000万行后,数据库性能、可维护性都会极剧下降。当然这时候可以做MySQL分库分表,比如使用Mycat或Sharding-jdbc。
但是分库后必定产生分布式事务问题,一旦数据库服务器宕机,有事务不一致风险。
分表后,对 SQL 语句有一定限制,对业务方功能需求大打折扣。尤其对于实时报表统计类需求,限制非常之大。并且需要维护的对象呈指数增长(MySQL实例数、需要执行的 SQL 变更数量等)。

二、TIDB的诞生

TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMSNoSQL 的最佳特性。TiDB 兼容 MySQL支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB数据库具备「分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活」等核心特性,是大数据时代理想的数据库集群和云数据库解决方案。目前,已被近 1000 家不同行业的领先企业应用在实际生产环境,涉及互联网、游戏、银行、保险、证券、航空、制造业、电信、新零售、政府等多个行业,包括美国、欧洲、日本、东南亚等海外用户。

TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。

TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。

官方文档:https://docs.pingcap.com/zh/tidb/v4.0/overview

三、TiDB 的核心特性

  1. 高度兼容 MySQL
    大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。
    对于用户使用的时候,可以透明地从MySQL切换到TiDB 中,只是“新MySQL”的后端是存储“无限的”,不再受制于Local的磁盘容量。在运维使用时也可以将TiDB当做一个从库挂到MySQL主从架构中。

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

  3. 一站式 HTAP 解决方案
    HTAP: Hybrid Transactional/Analytical Processing
    TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。

  4. 云原生 SQL 数据库
    TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,配合 TiDB Operator 项目 可实现自动化运维,使部署、配置和维护变得十分简单。

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

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

四、TIDB中的组件

TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。

1. TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

TiDB Server本身是无状态的,意味着当计算能力成为瓶颈的时候,可以直接扩容机器,对用户是透明的。理论上TiDB Server的数量并没有上限限制。

2. PD Server

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

PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

3. TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

TiKV Server通常是3+部署的,TiDB每份数据缺省为3副本,通过Raft协议进行数据复制,TiKV Server上的数据以Region为单位进行,由PD Server集群进行统一调度。

TiKV集群存储的数据格式是KV的,在TiDB中,并不是将数据直接存储在磁盘中,而是通过RocksDB实现了TB级别的本地化存储方案。

RocksDB和HBASE一样,都是通过 LSM树作为存储方案,避免了B+树叶子节点膨胀带来的大量随机读写。从何提升了整体的吞吐量。

4. TiSpark

TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

5. TiDB Operator

TiDB Operator 提供在主流云基础设施(Kubernetes)上部署管理 TiDB 集群的能力。它结合云原生社区的容器编排最佳实践与 TiDB 的专业运维知识,集成一键部署、多集群混部、自动运维、故障自愈等能力,极大地降低了用户使用和管理 TiDB 的门槛与成本。

五、TIDB单机版本安装

  1. 下载安装包
wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
  1. 解压进入目录(注意版本)
tar -zxvf tidb-latest-linux-amd64.tar.gz
cd tidb-v5.0.1-linux-amd64
  1. 启动 pd-server
./bin/pd-server --data-dir=data/pd-data --log-file=log/pd.log &
  1. 启动 tikv-server
./bin/tikv-server --pd="127.0.0.1:2379" --data-dir=data/tikv-data --log-file=log/tikv.log &
  1. 启动 tidb-server
./bin/tidb-server --store=tikv --path="127.0.0.1:2379" --log-file=log/tidb.log &
  1. 使用navicat 连接测试


    喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

TIDB-分布式关系型数据库讲解相关推荐

  1. 分布式关系型数据库TiDB

    企业级分布式关系型数据库TiDB 一.TiDB简介 TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式关系型数据库,结合了传统的 RDBMS 和N ...

  2. PingCAP 完成 C 轮 5000 万美元融资,创新型分布式关系型数据库领域最大笔融资

    近日,新型分布式关系型数据库公司 PingCAP 宣布完成 5000 万美元 C 轮融资,这是目前为止新型分布式关系型数据库领域的最大笔融资.本轮融资由复星.晨兴资本领投,华创资本.云启资本.经纬中国 ...

  3. 张雁飞 mysql_张雁飞:新一代分布式关系型数据库RadonDB

    [IT168 评论]各位观众大家好,我们很荣幸地邀请到了青云QingCloud数据库高级技术专家张雁飞老师来接受我们的采访,欢迎张老师的到来,张老师您好. 张雁飞:你好. 2.刚才您的演讲题目是< ...

  4. 深度:阿里云分布式关系型数据库DRDS解析

    4月20日,云栖大会深圳峰会顺利召开.阿里云中间件产品经理凤豪为大家深度介绍了阿里云分布式关系型数据库DRDS的发展历史以及DRDS的优势.下面是演讲主要内容整理. 数据库面临的挑战 单机数据库在数据 ...

  5. 阿里云分布式关系型数据库(DRDS)

    阿里云分布式关系型数据库(DRDS) Distribute Relational Database Service(DRDS)是分布式关系型数据库,它主要是一种水平拆分.可平滑扩容.读写分离的在线分布 ...

  6. OceanBase原生分布式关系型数据库

    OceanBase 社区版是一款开源分布式 HTAP(Hybrid Transactional/Analytical Processing)数据库管理系统,具有原生分布式架构,支持金融级高可用.透明水 ...

  7. 一、分布式关系型数据库 DRDS介绍

    一.DRDS 产品简介 DRDS 是一款基于 MySQL 存储.采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQ ...

  8. TB级别分布式关系型数据库OceanBase理论详解

    OceanBase是阿里开发的分布式关系型(SQL)数据库,其目标是支持数百TB的数据量以及数十万TPS.数百万QPS的访问量,无论是数据量还是访问量,即使采用非常昂贵的小型机甚至是大型机,单台关系数 ...

  9. Cobar分布式关系型数据库中间件的简单应用

    Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务. 产品在阿里巴巴B2B公司已经稳定运行了3年以上. 目前已经接管了3000+个MySQL数据库 ...

最新文章

  1. Angular 文件上传与下载
  2. 作业要求 20181127-1 附加作业 软件工程原则的应用实例分析
  3. python3.7 6如何安装-深度linux安装Python3.7.6
  4. c# spire.xls 设置文字为微软雅黑_Excel工作薄常规样式设置,WorkBook.Styles
  5. 数据库开发——MySQL——数据类型——数值类型
  6. 乐高ev3搭建图_乐高EV3机械爪合集
  7. NeurIPS2021 MBT:多模态数据怎么融合?谷歌提出基于注意力瓶颈的方法,简单高效还省计算量...
  8. Win8 Metro和Windows Phone的Style相关的一些问题
  9. Centos 7 telnet 详解
  10. 相对地址转化为绝对地址
  11. 树莓派-迅雷远程下载
  12. 3dmax如何使用模型快速切片命令
  13. 【海思篇】【Hi3516DV300】二、使用串口烧写映像
  14. 要升级win11吗?电脑变板砖的那种
  15. JS EXCEL表的操作
  16. 新浪云计算平台应用开发
  17. 博客右下角的动态人物(live2d)看板娘
  18. MQ常见问题及解决方案
  19. 安超云入选《鲲鹏精选解决方案》
  20. php redis 分页查询,redis如何解决分页查询

热门文章

  1. Seurat-单细胞文献复现第二弹-01
  2. Oracle账号频繁被锁定
  3. 【LabVIEW懒人系列教程-小白入门】1.15LabVIEW程序结构之跑马灯
  4. 数据库范式5nf_第五范式(5NF)| 数据库管理系统
  5. 数独小项目开篇:DFS解决数独难题
  6. 日本使用ips细胞制作“类器官”的最新进展
  7. 敏感性、特异度、α、β、阳性预测值(PPV)、阴性预测值(NPV)等指标及置信区间计算(附R语言代码)
  8. 英语发音规则---E字母
  9. 前端:JavaScript (五)XML DOM
  10. ArcGIS Desktop、Arcengine、ArcObjects_SDK for NET.Framework安装教程