TiDB

 

一、简介

黄东旭,开源分布式缓存服务 Codis 的作者,PingCAP 联合创始人兼CTO,擅长分布式存储系统的设计与实现,开源技术大佬。在2012年看到Google发布的两篇关于海量关系型数据库的论文,产生了灵感,于是 TiDB 就此诞生。

TiDB,是一个分布式 NewSQL 数据库。支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适 OLAP 场景的混合数据库。

基于Go语言实现。

 

二、特点&优势

1)金融级高可用

基于 Raft 的多数派选举协议,实现故障的自愈,支持跨城多机房容灾,多中心容灾方案,同城两中心异地一中心,或者三地五中心模式,数据零丢失,可满足金融行业6级容灾标准(RPO=0,RTO<=30秒)。

2)线性扩展

透明扩展,自动负载均衡,应用透明的水平扩展,具备接近无限的水平扩展能力。伸缩操作后,数据库还可以自动实现数据再均衡。数据量可达 PB 级,单表记录万亿行。(1PB=1024TB)

3)MySQL兼容性

兼容 MySQL5.7协议 和 MySQL生态。大多数情况下,无需修改代码轻松把数据从MySQL迁移到TiDB。

4)分布式事务

100% 支持标准的 ACID 事务。

5)实时HTAP

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

 

扩展知识:

容灾系统7个级别:0级-无异地备份,1级-实现异地备份,2级-热备份站点备份,3级-在线数据恢复,4级-定时数据备份,5级-实时数据备份,6级-零数据丢失

RPO:(Recovery Point Objective,复原点目标)。企业的损失容限,在对业务造成重大损害之前可能丢失的数据量。这个目标值决定了丢失多少数据。如果定期24小时增量备份,那么最坏情况下,将失去24小时的数据。

RTO:(Recovery Time Objective,复原时间目标)。灾难发生后,从IT系统宕机导致业务停顿之时开始,到IT系统恢复至可以支持各部门运作、恢复运营之时,此两点之间的时间段称为RTO。这个目标值决定了业务中断多长时间。比如说灾难发生后半天内便需要恢复,RTO值就是十二小时

ACID事务:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

HTAP、OLTP、OLAPhttps://blog.csdn.net/ZG_24/article/details/87854982

 

三、、应用场景

1、MySQL遇到单机容量或者性能瓶颈

2、大数据量下,数据增长很快,接近单机处理的极限,不想分库分表或使用数据库中间件等对业务侵入性较大,同时对业务有约束的Sharding方案

3、大数据量下,有高并发实时写入、查询、统计分析的需求

4、有分布式事务、多数据中心的数据 100% 强一致性、auto-failover 的高可用的需求

当然,如果业务量小,单机都能满足,那就没必要使用TiDB了。换个说法,数据量没有达到千万级别,也是没必要的。

 

四、结构

TiDB结构

TiDB Server

TiKV Server

PD Server

Raft

TiDB主要分为三部分:

 

五、兼容性区别

 TiDBMySQL
自增ID可以保证唯一,但不一定连续唯一且连续
Performance schema不支持,使用 Prometheus 和 Grafana 来存储及查询相关的性能监控指标支持
EXPLAIN/EXPLAIN FORTiDB输出格式、内容、权限设置与MySQL差别很大 
内建函数TiDB支持常用的MySQL内建函数,但仍有部分不支持的 
DDL在TiDB中,运行的DDL操作不会影响对表的读取或写入,但DDL操作有限制 
视图不支持增删改支持增删改
存储引擎建表时语法兼容,实际统一落地为InnoDB支持
SQL 模式支持大部分SQL模式支持

参考:https://www.shujukuba.com/tidb/931.html

 

六、安装

一)源码安装

1、下载安装包,并解压到/usr/local

2、启动pd

3、启动tikv

4、启动tidb

5、测试是否可以连接

 

二)单机docker安装

1、部署一个机器上,规划如下:

主机名IP部署服务
node1192.168.1.109pd & tidb & tikv

2、前置条件

3、在docker上拉取 TiDB 的Docker镜像,3个主要服务组件:TiDB、TiKV、PD

4、按顺序启动PD、TiKV、TiDB

参数说明

 

5、测试是否可以连接

 

三)Docker集群部署

1、部署一个多节点集群

部署在3台主机上,规划如下:

主机名IP部署服务
node1192.168.1.109pb1 & tikv1
node2192.168.1.110pb2 & tikv2
node3192.168.1.111pb3 & tikv3 & tidb

2、前置条件

3、分别在机器上拉取 TiDB 的Docker镜像,3个主要服务组件:TiDB、TiKV、PD,按部署规划拉取

4、分别启动 PD(三个节点)

5、分别启动 TiKV(三个节点)

6、启动 TiDB

7、测试是否成功

使用 MySQL 标准客户端连接 TiDB 测试。注意连接host是tidb节点的;如果是多个tidb,那么是集群LoadBalancer的host。

 

七、使用

数据库操作

1、数据库操作

2、数据表操作

3、数据增删改查

4、授权管理

 

八、资源