TiDB 简介

TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 NewSQL 数据库。

TiDB 具备如下 NewSQL 核心特性:

  • SQL支持(TiDB 是 MySQL 兼容的)
  • 水平弹性扩展(吞吐可线性扩展)
  • 分布式事务
  • 跨数据中心数据强一致性保证
  • 故障自恢复的高可用
  • 海量数据高并发实时写入与实时查询(HTAP 混合负载)

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

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

三篇文章了解 TiDB 技术内幕:

  • 说存储
  • 说计算
  • 谈调度

TiDB 整体架构

要深入了解 TiDB 的水平扩展和高可用特点,首先需要了解 TiDB 的整体架构。

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

TiDB Server

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

PD Server

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

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 为单位进行调度。

核心特性

水平扩展

无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。

高可用

高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。

  • TiDB

    TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。

  • PD

    PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。

  • TiKV

    TiKV 是一个集群,通过 Raft 协议保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 结点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 10 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。

Tidb分布式数据库相关推荐

  1. 安装 TiDB 分布式数据库

    安装 TiDB 分布式数据库 https://www.cnblogs.com/dkx3510/p/14416110.html https://blog.51cto.com/wsw26/2083039? ...

  2. 运维实操——zabbix监控结合tidb分布式数据库

    zabbix监控结合tidb分布式数据库 前言 1.tidb介绍 2.Tidb+Zabbix的简单部署 前言 本文的前提是,zabbix已经和mysql数据库配置好,现在想把mysql替换为分布式数据 ...

  3. Zabbix的mysql到Tidb分布式数据库的替换

    一.mysql的监测 前期准备为zabbix的安装 1.安装mysql数据库服务 yum install mariadb-server.x86_64 -y systemctl start mariad ...

  4. Tidb分布式数据库使用HAproxy实现负载均衡

    TiDB 简介 TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytic ...

  5. Centos7.2离线搭建TiDB分布式数据库

    文章目录 概述 准备机器 一.环境说明 二.准备工作 1.创建tidb用户及sudo免密 2.格式化文件系统为ext4 三.安装TiDB数据库 1.安装pip 2.安装Ansible及其依赖 四.测试 ...

  6. TiDB 分布式数据库(一)

    # # TiDB :A Distributed SQL Database # github :https://github.com/pingcap/tidb # doc : https://githu ...

  7. TiUP在线布署TIDB分布式数据库集群节点删除

    检查当前集群节点状态: tiup cluster display hdcluster Starting component `cluster`: /home/tidb/.tiup/components ...

  8. 分布式数据库——TiDB的介绍和基本原理

    1.TiDB 介绍 1.1 TiDB 介绍 1.1.1 TiDB 是什么? TiDB 是一个分布式 NewSQL 数据库.它支持水平弹性扩展.ACID 事务.标准 SQL.MySQL 语法和 MySQ ...

  9. 分布式数据库TiDB介绍

    TiDB 是一款定位于在线事务处理 / 在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致 ...

最新文章

  1. python数据结构学习笔记(五)
  2. CentOS 6下搭建Apache+MySQL+PHP+SSL
  3. SharePoint项目中新建类库的错误处理及项目建设中遇到的问题总结
  4. python实现栈_Python 栈
  5. python对文件操作实例_Python对文件文件夹的操作实例
  6. 框架基础---动态代理
  7. 关于bmp图片的c语言算法读入,BMP图像直方图均衡算法(C语言大作业)
  8. 广告关闭php,电脑右下角的广告怎么去掉
  9. 收款收据设计html,最新收款收据模板的格式
  10. 安卓Tasker自动转发短信到邮箱
  11. 不谋一时不足以谋一域_“不谋万世者,不足谋一时。不谋全局者,不足谋一隅”出自哪里?是什么意思?...
  12. 这样的跳槽理由,会遭HR嫌弃!
  13. latex如何换页 一页放不下
  14. vue 生成 证书模板 并支持 图片下载和导出PDF的demo
  15. 机器学习:逻辑回归(OvR 与 OvO)
  16. 码农饭碗不保——ChatGPT正在取代Coder
  17. File System | Debug | 如何查看文件挂载的分区以及分区大小
  18. 用Python实现多国文字全文自动翻译
  19. VMware下Ubuntu如何与主机进行文件共享(留作自用)
  20. 再度盈利后提“冷静增长”,爱奇艺守住长视频初心

热门文章

  1. 20170711 通过阿里云与国家气象局合作的api读取历史辐照数据
  2. GitHub 各种开源项目
  3. 这四个微信小技巧,职场人一定要学会
  4. 【Vue element-admin 如何给侧边栏添加 Badge 计数标记 】
  5. 谷歌拼音输入法PinyinIME源码修改----随着Setting中中英文的切换对应改变软键盘中英文输入且字符变换
  6. 无穷级数的简单求解方法——高等数学
  7. mysql查询日期_mysql 查询当前日期
  8. TKIP中MIC值的算法及实现
  9. ROS教程(二):创建工作空间(图文)
  10. Android.mk入门教程