首页 > 其他分享 >TiDB基础概念

TiDB基础概念

时间:2024-04-14 23:11:51浏览次数:27  
标签:数据库 TiDB 基础 概念 TIDB 文档 mysql 数据

TIDB 是什么

官网这么说的,TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性,支持在本地和云上部署。

TiDB是国产的pingCAP公司 2016 年 12 月发布的。

我的理解,TiDB是这样一个数据库

  • 第一,它是一个分布式数据库,所以可以水平拓展。可以动态的拓展TIDB和 TiStorrage

  • 第二,它支持支持传统的ACID的事务事务,据说是100% 支持

  • 第三,能支持大部分OLAP的场景,并且复杂的OLAP场景可以使用 TiSpark(貌似用了新版本已经建议试用Tiflash了,TiFlash 的速度 比TiSpark 快 )

  • 第四,它兼容mysql协议,也可以直接用mysql 客户端接连TiDB,TIDB的用法及mysql用法几乎一致,甚至可用当做一个从库加入mysql主从集群。
    差异详情见差异文档:与 MySQL 兼容性对比 | PingCAP 文档中心

有人实际测试过,在普通PC机上,TIDB单机性能大概是mysql的50%(这句话只供参考,例子中情景很单一,并且硬件限制,还是单机)

TiDB架构图

PD类似一个协调中心,存储这元数据,它需要时高可用的,使用的Raft协议保证数据的一致性。

TiD是一个分布式数据库实例,接受客户端sql,更具PD元数据信息,决定向哪些 Storrage请求数据。
TiKV 是存键值对的工具,提成用的RockedDB,是TiDB存储数据的一种方式,RocksDB是一个可持久化的键值数据库。

TiFlash 是列存存储工具,底层用clickhouse,是TiDB存储数据的一种方式。

架构图的最左边表明它支持mysql协议。

文档地址:TiDB 整体架构 | PingCAP 文档中心

image-20240414185008947

TiDB的水平拓展能力

当storage 动态变化的时候,PD会自动维持 storage里面的数据

当TiDB leader宕机的时候,会自动选举出新的的leader.

TiDB安装

测试环境使用TiUp工具安装:TiDB 数据库快速上手指南 | PingCAP 文档中心

TIDB独有的用法

  • 可以通过 set @@tidb-snapshot="过去的时间点",然后查询到过去的时间
    使用 set @@tidb-snapshot="" 以后查看的是最新版本

数据迁移

详情见TIDB文档:数据迁移概述 | PingCAP 文档中心

  • 全量数据迁移。
    • 数据导入:使用 TiDB Lightning 将 Aurora Snapshot,CSV 文件或 SQL dump 文件的数据全量导入到 TiDB 集群。
    • 数据导出:使用 Dumpling 将 TiDB 集群的数据全量导出为 CSV 文件或 SQL dump 文件,从而更好地配合从 MySQL 数据库或 MariaDB 数据库进行数据迁移。
    • TiDB DM (Data migration) 也提供了适合小规模数据量数据库(例如小于 1 TiB)的全量数据迁移功能。
  • 快速初始化 TiDB 集群:TiDB Lightning 提供的快速导入功能可以实现快速初始化 TiDB 集群的指定表的效果。请注意,使用快速初始化 TiDB 集群的功能对 TiDB 集群的影响极大,在进行初始化的过程中,TiDB 集群不支持对外访问。
  • 增量数据迁移:使用 TiDB DM 从 MySQL,MariaDB 或 Aurora 同步 Binlog 到 TiDB,该功能可以极大降低业务迁移过程中停机窗口时间。

标签:数据库,TiDB,基础,概念,TIDB,文档,mysql,数据
From: https://www.cnblogs.com/cxygg/p/18134891

相关文章

  • 实验2 C语言分支与循环基础应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){ intnumber; inti; srand(time(0)); for(i=0;i<N;++i) { number=rand()%65+1; printf("20238331%04d\n",number); } return0;......
  • 实验2 C语言分支与循环基础应用编程
    任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=rand()%65+1;//生成一个1-65之间的随机数printf("20238331%04d\n&q......
  • 实验2 C语言分支与循环基础应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=rand()%65+1;printf("20238331%04d\n",number);}syste......
  • 实验2C语言分支与循环基础应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=rand()%65+1;printf("20238331%04d\n"......
  • ES6基础
    1.实例代码<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <metaname="viewport"content="width=device-width,initial-scale=1"> <title>DEMO</title></head><body> <......
  • ansible基础--摘抄 超哥
    抄自:https://www.cnblogs.com/sxy-blog/p/17543464.html只为自己记录查看运维自动化Ansible 1、ansible介绍运维神器ansible 一句话,学好ansible,学精ansible,就直接是普通运维、和自动化运维的一个质的飞跃。ansible提供了大量的模块、帮助运维完成服务器批量化部署操作......
  • Moirai:Salesforce的时间序列预测基础模型
    Moirai是Salesforce开发的用于时间序列预测的基础模型。它被设计为一种通用模型,能够预测广泛的时间序列。为了实现这种灵活性,该模型解决了时间序列数据相关的几个挑战,包括:处理各种数据频率(小时、日、周等);适应任何数量和类型的协变量,无论它们在未来是否已知;使用灵活的分布生......
  • HTML&CSS基础(HTML5和CSS3新增内容)
    HTML5一、新增的语义化标签标签名语义单/双标签header整个页面,或者分区域的头部双footer整个页面,或者部分区域的底部双nav导航双article文章、帖子、杂志、新闻、博客、评论双section页面中的某段文字,或者文章中某段文字双aside侧边栏双......
  • JavaScript基础
    JavaScript一、js编写位置位置1:script标签中<scripttype="text/javascript"> vara=1;...</script>位置2:标签中绑定事件<buttononlick="alert(123);">Click</button>位置3:超链接的href属性中<ahref="javascript:alert('......
  • HTML&CSS基础(CSS2)
    1.CSS是什么层叠样式表样式:文字大小、背景颜色、元素宽高层叠:一层层”叠“上去2.样式位置2.1行内样式写在标签的style属性中,又称内联样式<divstyle="color:red;font-size:17px"></div>2.2内部样式<head><style>div{color:red;......