TiDB一个大数据实时计算的存储利器

目录

TiDB概述

TiDB架构详解

TiDB之TiKV

TiDB如何部署

具体安装流程

下载二进制文件

使用Docker镜像

一些配置解析

Server 配置

Performance 配置

Log 配置

PD 配置



TiDB概述

TiDB是由中国PingCAP公司开发的,是一个开源的分布式NewSQL数据库。它最初的设计目标是解决传统关系型数据库的瓶颈和限制,实现高可用、可扩展和高性能的数据存储和处理。

TiDB架构详解

TiDB是一个分布式的NewSQL数据库,其核心架构包括三个组件:TiDB Server、TiKV和PD。

  1. TiDB Server:是TiDB的SQL层,提供MySQL兼容的协议和接口。它的主要功能是接收和处理客户端的SQL请求,并将这些请求转化为对下层存储引擎TiKV的操作。TiDB Server还包括查询优化器、执行引擎、事务管理等模块,以支持更高效和可靠的数据访问。

  2. TiKV:是TiDB的存储引擎,采用分布式、自动分片的方式管理数据。TiKV将数据分散存储在多个节点上,每个节点负责一部分数据的存储和处理。它支持ACID事务、强一致性和高可用性,并提供灵活的配置选项以适应各种工作负载需求。

  3. PD:是TiDB的元数据管理组件,负责存储TiKV集群的拓扑信息、负载均衡、故障恢复等任务。PD通过选举算法来选举集群中的Leader节点,保证系统的高可用性和容错性。

总的来说,TiDB的核心架构采用了分布式的方式来存储和管理数据,通过多个组件协同工作来实现数据的高可靠性和高可用性,支持大规模数据处理和高并发访问。

TiDB之TiKV

TiKV是一个分布式的、高可用的Key-Value存储引擎,主要用于存储和处理TiDB的数据。TiKV的原理如下:

  1. 分布式存储:TiKV采用分布式存储,将数据分散存储在多个节点上。每个节点负责一部分数据的存储和处理。节点之间采用Raft协议进行通信,实现数据的副本同步和容错。同时,TiKV支持水平扩展,可以通过添加新节点来扩展存储能力。

  2. 数据模型:TiKV采用Key-Value模型,每个Key对应一个Value。Key和Value都是二进制数据,没有固定的格式和结构。用户可以根据需要定义自己的Key和Value结构。

  3. 强一致性:TiKV采用Raft协议实现数据的副本同步和容错,保证数据的强一致性。在一个Raft组中,每个节点有三种角色:Leader、Follower和Candidate。Leader负责处理客户端的读写请求,并将请求转发给其他节点。Follower和Candidate负责接收Leader发送的请求,并对请求进行确认和同步。

  4. 事务支持:TiKV支持ACID事务,提供类似于关系数据库的事务语义。TiKV的事务分为两个阶段:预写日志(write-ahead log)和提交。预写日志阶段将事务的写操作记录到日志中,提交阶段将事务的写操作应用到实际数据中。TiKV采用MVCC(多版本并发控制)机制来实现事务的隔离性和一致性。

  5. 高性能:TiKV通过多种优化手段来提高性能。其中,一种重要的优化是数据的分层存储,将热点数据存储在内存中,将冷数据存储在磁盘中。另外,TiKV还支持多种读写优化策略,如批量读写、异步读写、前缀扫描等。

总的来说,TiKV通过分布式存储、强一致性、事务支持和高性能等特性,实现了一个高可用的、可扩展的Key-Value存储引擎,可以满足大规模数据存储和处理的需求。

TiDB如何部署

关于如何部署TiDB,一般可以分为以下几个步骤:

  1. 安装TiDB集群:可以通过官方提供的二进制包或Docker镜像来安装TiDB集群。安装过程中需要配置节点信息、端口号、集群拓扑等参数,以及设置相应的用户名和密码。

  2. 配置TiDB参数:安装完成后,需要对TiDB进行相应的参数配置。其中,包括数据库连接、SQL模式、存储引擎、事务隔离级别等。配置过程中需要根据具体需求进行相应的调整。

  3. 导入数据:TiDB支持从MySQL、CSV、TiKV等数据源中导入数据。可以使用TiDB提供的工具或第三方工具进行数据导入。

  4. 进行数据管理和维护:对于已经部署和运行的TiDB集群,需要进行相应的数据管理和维护工作。其中,包括备份和恢复、性能调优、故障排除等。

总的来说,TiDB的部署相对比较简单,而且官方提供了详细的文档和工具,帮助用户进行快速部署和维护。同时,TiDB还提供了丰富的API和插件接口,支持用户自定义开发和扩展。

具体安装流程

安装TiDB需要下载二进制文件或使用Docker镜像,下面分别介绍两种安装方式。

下载二进制文件

  1. 从官方网站 https://pingcap.com/zh/download/ 下载适用于您的操作系统和 TiDB 版本的二进制文件。

  2. 解压缩二进制文件,并将其复制到每个节点的 $PATH 目录下。比如:

    $ tar -xzf tidb-v4.0.0-linux-amd64.tar.gz $ sudo cp -r tidb-v4.0.0-linux-amd64/bin/* /usr/local/bin/
  3. 配置TiDB参数。TiDB参数配置文件的位置默认为/etc/tidb/tidb.toml。可以从默认的配置文件/etc/tidb/tidb.toml.example复制并修改成自己需要的配置文件。比如:

    $ sudo cp /etc/tidb/tidb.toml.example /etc/tidb/tidb.toml $ sudo vim /etc/tidb/tidb.toml
  4. 启动TiDB。可以使用systemd启动TiDB。比如:

    $ sudo systemctl enable tidb.service $ sudo systemctl start tidb.service

使用Docker镜像

  1. 安装Docker。Docker的安装可以参考官方文档 https://docs.docker.com/engine/install/。

  2. 下载TiDB镜像。可以在Docker Hub上搜索TiDB并下载。

    $ docker pull pingcap/tidb:latest
  3. 启动TiDB容器。比如:

    $ docker run -d --name tidb-server -p 4000:4000 pingcap/tidb:latest
  4. 配置TiDB参数。可以将TiDB配置文件挂载到容器中。比如:

    $ docker run -d --name tidb-server -p 4000:4000 -v /path/to/tidb.toml:/etc/tidb/tidb.toml pingcap/tidb:latest

更加详细的安装和配置文档可以参考TiDB官方文档 https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb#step-1-下载-tidb。

同时,官方文档也提供了更加详细的参数配置、运维、备份等方面的文档,方便用户使用和维护TiDB。

一些配置解析

当您安装 TiDB 后,需要对 TiDB 进行一些基本的配置,其中最重要的是 tidb.toml 配置文件。tidb.toml 配置文件包含了 TiDB 集群的大多数配置参数。以下是 tidb.toml 文件的一些重要配置项。

Server 配置

[server] 配置项定义了 TiDB 服务器的网络、调度和统计信息等参数。

  • port: TiDB 的监听端口,默认值为 4000。
  • status-port: TiDB 的状态监控端口,默认值为 10080。
  • advertise-address: TiDB 服务器所在主机的 IP 地址,默认为空字符串。当多个 TiDB 实例运行在同一主机上时,需要设置该值以确保它们使用正确的 IP 地址进行通信。
  • socket: TiDB 监听的 Unix 套接字文件路径,如果设置该参数,则会忽略 port 参数。默认值为空字符串。
  • log-level: TiDB 日志输出的级别,默认值为 info。
  • log-file: TiDB 日志输出到的文件名,默认值为标准输出。
  • slow-query-file: 记录 TiDB 慢查询日志的文件名,默认值为 tidb-slow.log。
  • max-index-length: TiDB 索引键的最大长度,默认为 3072 字节。

Performance 配置

[performance] 配置项定义了 TiDB 在处理大量请求时的行为和策略。

  • max-procs: TiDB 使用的最大 CPU 数量,默认值为 0,表示使用所有可用的 CPU。
  • max-memory: TiDB 使用的最大内存数量,默认值为 0,表示使用所有可用的内存。如果设置了该值,当 TiDB 的内存使用超过了该阈值时,将会触发 Out-Of-Memory (OOM) 错误。
  • stats-lease: TiDB 统计信息的租约时长,单位为秒,默认值为 3。
  • stmt-count-limit: TiDB 限制在内存中缓存的语句数,默认值为 5000。当 TiDB 的内存使用超过了该阈值时,将会删除较早的查询计划缓存。

Log 配置

[log] 配置项定义了 TiDB 日志记录的相关参数。

  • level: TiDB 日志输出的级别,默认值为 info。
  • format: TiDB 日志输出的格式,默认值为 text。
  • disable-timestamp: 是否禁用 TiDB 日志输出的时间戳,默认值为 false。
  • file: TiDB 日志输出到的文件名,默认为空字符串。如果设置该值,则会忽略 levelformat 和 disable-timestamp 参数。
  • rotation-time: TiDB 日志轮换的时间间隔,默认值为 86400 秒(1 天)。
  • rotation-size: TiDB 日志轮换的文件大小,默认值为 100 MiB。

PD 配置

[pd] 配置项定义了 TiDB 集群

TiDB 有维度表的概念吗?

TiDB是一种分布式关系型数据库,它支持SQL语言和MySQL协议,并提供了水平扩展和高可用性的特性。

TiDB中没有明确的“维度表”的概念,但是可以通过TiDB支持的分布式表和索引来实现类似维度表的功能。

TiDB支持分布式表,可以通过TiDB的分片机制将表数据水平拆分成多个分片,存储在不同的节点上。这种分布式表的特性可以用于存储维度数据,比如时间维度、地理位置维度等。

TiDB还支持分布式索引,可以将索引数据拆分成多个分片,存储在不同的节点上。分布式索引可以加速查询维度表中的数据,并且可以通过TiDB的分片机制将查询分散到不同的节点上,提高查询性能。

因此,虽然TiDB没有专门的“维度表”概念,但是可以通过TiDB的分布式表和索引来实现类似维度表的功能。

TiDB的分布式表和索引 具体实现

TiDB的分布式表和索引实现类似维度表的功能,可以分为以下几个步骤:

  1. 创建分布式表

TiDB支持通过分片机制将表数据水平拆分成多个分片,存储在不同的节点上。可以通过如下语句创建分布式表:

CREATE TABLE table_name ( col1 datatype1, col2 datatype2, ... ) SHARD_ROW_ID_BITS=3

其中,SHARD_ROW_ID_BITS=3指定了分片键的位数,TiDB会根据分片键将数据拆分为不同的分片。

  1. 插入数据

可以通过如下语句向分布式表中插入数据:

INSERT INTO table_name (col1, col2, ...) VALUES (value1, value2, ...);

TiDB会根据分片键将数据插入到不同的分片中。

  1. 创建分布式索引

TiDB支持将索引数据拆分成多个分片,存储在不同的节点上。可以通过如下语句创建分布式索引:

CREATE INDEX index_name ON table_name (col1, col2, ...) USING HASH WITH BUCKET_COUNT = 16;

其中,USING HASH指定了使用哈希算法来分割索引键,WITH BUCKET_COUNT指定了分片数。

  1. 查询数据

可以通过如下语句查询分布式表中的数据:

SELECT col1, col2, ... FROM table_name WHERE partition_key = value;

其中,partition_key是指定的分片键,可以用来过滤数据并查询特定分片中的数据。

可以通过如下语句查询分布式索引中的数据:

SELECT col1, col2, ... FROM table_name WHERE col1 = value1 AND col2 = value2;

TiDB会根据分布式索引将查询请求分散到不同的节点上,提高查询性能。

综上所述,通过TiDB的分布式表和索引,可以将数据和索引拆分为多个分片,存储在不同的节点上,从而实现水平扩展和高可用性,并提高查询性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云台095

省钱后记得打赏哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值