首页 > 其他分享 >TIDB简介及TIDB部署、原理和使用介绍

TIDB简介及TIDB部署、原理和使用介绍

时间:2024-03-06 23:33:18浏览次数:21  
标签:存储 部署 简介 数据库 MySQL 分表 TIDB TiDB NewSQL

从MySQL架构到TiDB

数据库分类
​ 介绍TiDB数据库之前,先引入使用场景。如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(Not Only SQL)、NewSQL,在数据库领域均有一席之地,可谓百家争鸣之势。那么为什么要使用TiDB呢?接下来就从最熟悉的MySQL的使用说起。

MySQL痛点
​ 假设现在有一个高速发展的互联网公司,核心业务库MySQL的数据量已经近亿行,且还在不断增长中,公司对于数据资产较为重视,所有数据要求多副本保存至少5年,且除了有对历史数据进行统计分析的离线报表业务外,还有一些针对用户数据实时查询的需求。

​ 根据以往的MySQL使用经验,MySQL单表在 5000 万行以内时,性能较好,单表超过5000万行后,数据库性能、可维护性都会极剧下降。当然这时候可以做MySQL分库分表,如使用Mycat。

MySQL分库分表

MySQL分库分表的优点非常明显:

  • 将大表拆分成小表,单表数据量可以控制到 5000 万行以内,使MySQL 性能稳定可控。

  • 将单张大表拆分成小表后,能水平扩展,通过部署到多台服务器,提升整个集群的 QPS、TPS、Latency 等数据库服务指标。

缺点也非常明显:

  • 分表跨实例后,产生分布式事务管理难题,一旦数据库服务器宕机,有事务不一致风险。

  • 分表后,对 SQL 语句有一定限制,对业务方功能需求大打折扣。尤其对于实时报表统计类需求,限制非常之大。

  • 分表后,需要维护的对象呈指数增长(MySQL实例数、需要执行的 SQL 变更数量等)

MySQL痛点解决方案

基于以上核心痛点,我们需要探索新的数据库技术方案来应对业务爆发式增长所带来的挑战,为业务提供更好的数据库服务支撑。
调研市场上的各大数据库,可以考虑选用NewSQL技术来解决,因为NewSQL技术有如下显著特点:

  • 无限水平扩展能力
  • 分布式强一致性,确保数据 100% 安全
  • 完整的分布式事务处理能力与 ACID 特性

而TiDB数据库 GitHub的活跃度及社区贡献者方面都可以算得上是国际化的开源项目,是NewSQL技术中的代表性产品,所以可以选择使用TiDB数据库。

四大核心应用场景

1)对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景
​ 众所周知,金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高。传统的解决方案是同城两个机房提供服务、异地一个机房提供数据容灾能力但不提供服务,此解决方案存在以下缺点:资源利用率低、维护成本高、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) 无法真实达到企业所期望的值。TiDB 采用多副本 + Multi-Raft 协议的方式将数据调度到不同的机房、机架、机器,当部分机器出现故障时系统可自动进行切换,确保系统的 RTO <= 30s 及 RPO = 0。

2)对存储容量、可扩展性、并发要求较高的海量数据及高并发的 OLTP 场景
​ 随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据库的容量要求,可行方案是采用分库分表的中间件产品或者 NewSQL 数据库替代、采用高端的存储设备等,其中性价比最大的是 NewSQL 数据库,例如:TiDB。TiDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算最大支持 512 节点,每个节点最大支持 1000 并发,集群容量最大支持 PB 级别。

3)Real-time HTAP 场景
​ 随着 5G、物联网、人工智能的高速发展,企业所生产的数据会越来越多,其规模可能达到数百 TB 甚至 PB 级别,传统的解决方案是通过 OLTP 型数据库处理在线联机交易业务,通过 ETL 工具将数据同步到 OLAP 型数据库进行数据分析,这种处理方案存在存储成本高、实时性差等多方面的问题。TiDB 在 4.0 版本中引入列存储引擎 TiFlash 结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以在同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。

4)数据汇聚、二次加工处理的场景
​ 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况以便及时做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成 T+0 或 T+1 的报表。传统常见的解决方案是采用 ETL + Hadoop 来完成,但 Hadoop 体系太复杂,运维、存储成本太高无法满足用户的需求。与 Hadoop 相比,TiDB 就简单得多,业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接生成报表。

小结

  传统关系型数据库历史比较久,目前RDBMS的代表为Oracle、MySQL、PostgreSQL,在数据库领域也是“辈份”比较高的,其广泛应用在各行各业,RDBMS大多为本地存储或共享存储。但是此类数据库存在着一些问题,如自身容量的限制。随着业务量不断增加,容量渐渐成为瓶颈,此时DBA会通过多次的库表分片,以此来缓解容量问题。大量的分库分表,不仅耗费了大量人力,还使得业务访问数据库的路由逻辑变得复杂。除此之外,RDBMS伸缩性比较差,通常集群扩容缩容成本较高,且不满足分布式的事务。
​  NoSQL类数据库的代表为Hbase、Redis、MongoDB等,这类数据库解决了 RDBMS伸缩性差的问题,集群容量扩容变得方便很多,但是由于存储方式为多个KV存储,所以对SQL的兼容性就大打折扣。对于NoSQL类数据库来说,只能满足部分分布式事务的特点。​

  NewSQL领域的代表是Google的spanner和F1,其号称可以实现全球数据中心容灾,且完全满足分布式事务的ACID,但是只能在Google云上使用。TiDB诞生在大背景下,也弥补了国内在NewSQL领域中的空缺。TiDB自2015年5月写下第一行代码以来,至今已发布大小版本几十次,版本迭代十分迅速。

标签:存储,部署,简介,数据库,MySQL,分表,TIDB,TiDB,NewSQL
From: https://www.cnblogs.com/beatle-go/p/18057903

相关文章

  • .NET Core WebAPI项目部署iis后Swagger 404问题解决
    .NETCoreWebAPI项目部署iis后Swagger404问题解决前言之前做了一个WebAPI的项目,我在文章中写到的是Docker方式部署,然后考虑到很多初学者用的是iis,下面讲解下iis如何部署WebAPI项目。环境准备iisASPNETCoreModuleV2重点.NETCoreRuntimeiis的配置这里就不讲了,主要讲解......
  • ps破解版百度云网盘下载+部署教程+更新补丁
    Photoshop是一款由Adobe公司开发的图像处理软件,它是目前业界最为常用的图像处理软件之一。它拥有丰富的功能和强大的操作性,可以处理各种类型的图像,包括照片、绘画、图表等等。本文将介绍Photoshop的基本功能和应用范围。只要你有最低的系统要求,可以有效和平稳地运行......
  • oscar主从部署
    环境:OS:Centos7DB:V7主库:192.168.1.101备库:192.168.1.103数据库名称(主备保持一致):HXL 1.主库上需要确保在归档模式[root@localhostbin]#./isql-hlocalhost-p2003-dHXLsysdbaSQL>selectlog_modefromv$database;LOG_MODE------------ARCHIVELOG......
  • Dockerfile 部署uwsgi+nginx+django
    背景最近在和组内小伙伴一起写接口测试平台后端,使用的是drf框架,目前已经完成部分工作。在和前端联调试另一个小伙伴使用uwsgi部署起来了,我感觉这样部署很low,因为之前有了解过docker所以想着这一次彻底把docker给学会吧,于是就有了这篇文章。首先先看一下我的目录结构i......
  • kubenetes系列-部署csi-driver-nfs
    1、部署helm#这里要注意因为下周的是二进制直接可用,需要根据系统去下载wgethttps://get.helm.sh/helm-v3.14.2-linux-amd64.tar.gztarxfhelm-v3.14.2-linux-amd64.tar.gz&&cdlinux-arm64&&mvhelm/usr/bin/2、使用helm部署helmpullcsi-driver-nfs/csi-driver-nfs......
  • 【信创低代码】JeecgBoot适配达梦和人大金仓,TiDB配置手册
    项目介绍JeecgBoot是一款专为信创产业设计的企业级低代码开发平台,目前已经实现了对多种国产数据库的默认兼容,提供了丰富的组件和模板,可帮助用户快速搭建信创应用系统。其灵活的定制功能也使用户能够根据具体需求进行个性化定制,满足不同场景的要求。通过JeecgBoot,信创用户可以更高......
  • 19_W25Q64简介
    W25Q64简介介绍硬件电路W25Q64框图Flash操作注意事项最小擦除单元->一个扇区软件SPI读写W25Q64接线图代码MySPI.c#include"stm32f10x.h"//DeviceheadervoidMySPI_W_SS(uint8_tBitValue){ GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)......
  • docker-部署mysql8,并映射数据目录和日志目录
    下载镜像dockerpullmysql:8.0.21在主机上准备目录mkdir-p/mysql8/data/mysql8/log  /mysql8/cnf编写配置文件[root@localhostcnf]#catmy.cnf[mysqld]datadir=/mysql/datalog-error=/mysql/log/mysql-log.logpid-file=/mysql/mysqld/mysqld.pids......
  • vue2项目命令部署服务器
      1、添加命令、依赖  //package.json"deploy":"node./deploy/config.js"   "shelljs":"^0.8.5",   "scp2":"^0.5.0"2、添加环境变量 #自动部署VUE_APP_SERVER_ID=03、添加deploy文件夹 //dep......
  • 离线部署docker-ce
    下载包删除或者备份原来的所有的yum源文件。然后添加阿里的yum源:wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo或者curl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo更新:清除缓存......