首页 > 其他分享 >TiDB基础

TiDB基础

时间:2023-09-10 13:45:00浏览次数:34  
标签:Region 基础 TiKV 实例 PD TiDB 节点

一. TiDb简介

TiDB的使用场景

1、数据量大

2、多复本保存

3、性能问题(分库分表存在业务问题)

 

TiDB 是一个分布式 NewSQL数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP(Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB 具备如下核心特点:

  • 1 高度兼容 MySQL
     大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。
  • 2 水平弹性扩展
     通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
  • 3 分布式事务
     TiDB 100% 支持标准的 ACID 事务。
  • 4 真正金融级高可用
     相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。
  • 5 一站式 HTAP 解决方案
     TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP解决方案,一份存储同时处理OLTP & OLAPOLAP、OLTP的介绍和比较无需传统繁琐的 ETL 过程。
  • 6 云原生 SQL 数据库
     TiDB 是为云而设计的数据库,同 Kubernetes (Kubernetes核心概念 )深度耦合,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。
     TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。 TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力.

二. 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 构成一个 RaftGroup,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

三. 核心特性

  • 1 水平扩展
     无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。
  • 2 高可用
     高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。
    TiDB
     TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。
    PD
     PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。
    TiKV
     TiKV 是一个集群,通过 Raft 协议(raft一致性哈算法以及Raft 为什么是更易理解的分布式一致性算法 )保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 结点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 30 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。






标签:Region,基础,TiKV,实例,PD,TiDB,节点
From: https://www.cnblogs.com/102x/p/17691085.html

相关文章

  • Java基础——变量和关键字
    变量java编程中分为变量和常量,常量是指值不能改变的量,如1,“HelloWorld”等。变量意为变化的量。可以看作是用于存放数据的一个容器。一个代词,指代它里面的那个数。如,inta=0;现在变量a的值为0,我们可以让a的值为1,a=1;通过这种赋值变量a的值变为了1。变量的定义变量类型标识符;......
  • SpringMvc基础知识
    SpringMvc基础知识1、MVC基本概念MVC(ModelViewController)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的......
  • Spring框架基础知识
    Spring框架基础知识1、简介1、Spring框架是一个开源的JAVAEE的应用程序,主要是IOC(控制反转和依赖注入)和AOP(面向切面编程)两大技术。2、SpringIOC(控制反转/依赖注入)SpringAOPSpringJDBC+事务3、Spring是众多开源java项目中的一员,基于分层的javaEE应用一站式轻量级开源框......
  • Java基础知识四
    1.数组和集合的区别数组初始化之后长度就固定了,集合不固定数组中只能存放同一种数据类型。集合中可以存放多种数组中只能存放有序的元素,可以添加重复元素。集合可以无序,不可以出现无序的元素。2.ArrayList1.7版本和1.8版本底层扩容的实现原理通过一个空参的构造器创建对象时1.7底......
  • Python基础学习day08
    常见的数据类型:int,整数类型(整形)bool,布尔类型str,字符串类型list,列表类型tuple,元组类型dict,字典类型set,集合类型float,浮点类型(浮点型)每种数据类型都有自己的特点及应用场景,以后的开发中需要根据实际的开发情况选择合适的数据类型。每种数据类型的讲解,会按照以下4个维度来进行:定义独有......
  • 嵌入式基础知识-DMA
    本篇来介绍DMA的一些基础知识。1DMA简介DMA(DirectMemoryAccess),中文名为直接内存访问,它是一些计算机总线架构提供的功能,能使数据从附加设备(如磁盘驱动器)直接发送到计算机主板的内存上。对应嵌入式处理器来说,DMA可以提供外设和存储器之间,或存储器与存储器之间的高速数据传输,无须C......
  • 【Python基础】字符串常用方法
    replace()方法replace()方法把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过max次。str="ThisisATest"print(str.replace("is","was"))#ThwaswasATest"print(str.replace("is","was",1))#Thwas......
  • 深度学习基础之梯度下降
    1.引言梯度下降是一种用于最小化(或最大化)损失函数的优化算法。它是机器学习和深度学习中的一个关键概念,通常用于调整学习算法中的参数。梯度下降背后的核心思想是迭代调整参数以最小化损失函数。它的工作原理是计算损失函数相对于每个参数的梯度,并在减少损失函数的方向上更新参数......
  • 安装Linux操作系统,学习Linux基础
    1.虚拟机与Linux系统安装1.1VirtualBox安装VirtualBox安装经验:1.光驱可在设置虚拟机时设定(设置虚拟机时即可置入Ubuntu)2.若虚拟磁盘路径包含中文,VirtualBox程序右侧会出现问题弹窗,点击可查看问题详情(无法覆盖所选中文名文件夹),文件夹名称改为英文即可1.2Linux系统安装(Ubuntu......
  • cmake基础示例:如何编译【跨平台】的动态库和应用程序
    示例代码首先看一下测试代码的全貌:mylib:只有一个源文件,编译输出一个动态库;myapp:也只有一个源文件,链接mylib动态库,编译输出一个可执行程序; mylib在mylib目录中,一共有3个文件:mylib.h,mylib.c以及CMakeLists.txt,内容分别如下://mylib/mylib.hw文件#ifndef_M......