TiDB安装简介

news2024/11/18 22:58:08

文章目录

    • 一、TiDB概述
      • 1、简介
      • 2、OLAP和OLTP
      • 3、与MySQL兼容性
    • 二、架构
    • 三、安装
      • 1、本地版安装
      • 2、单机版集群安装
        • 2.1 概述
        • 2.2 安装
        • 2.3 访问集群
      • 3、配置文件地址
    • 四、使用方式
      • 1、基础SQL
      • 2、历史数据查询


一、TiDB概述

官网地址

https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb

TiDB可以理解为是MySQL的加强版/分布式MySQL/MySQLPlus

在这里插入图片描述

1、简介

TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB数据库具备「分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活」等核心特性,是大数据时代理想的数据库集群和云数据库解决方案。目前,已被近 1000 家不同行业的领先企业应用在实际生产环境,涉及互联网、游戏、银行、保险、证券、航空、制造业、电信、新零售、政府等多个行业,包括美国、欧洲、日本、东南亚等海外用户。
TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。
TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。

2、OLAP和OLTP

  • OLTP

强调支持短时间内大量并发的事务操作(增删改查)能力,每个操作涉及的数据量都很小(比如几十到几百字节)

强调事务的强一致性(想想银行转账交易,容不得差错)

  • OLAP

偏向于复杂的只读查询,读取海量数据进行分析计算,查询时间往往很长

代表产品:

  • Greenplum

  • TeraData

  • 阿里 AnalyticDB

3、与MySQL兼容性

TiDB 高度兼容 MySQL 5.7 协议、MySQL 5.7 常用的功能及语法。MySQL 5.7 生态中的系统工具(PHPMyAdmin、Navicat、MySQL Workbench、mysqldump、Mydumper/Myloader)、客户端等均适用于 TiDB。

但 TiDB 尚未支持一些 MySQL 功能,可能的原因如下:

  • 有更好的解决方案,例如 JSON 取代 XML 函数。
  • 目前对这些功能的需求度不高,例如存储流程和函数。
  • 一些功能在分布式系统上的实现难度较大。

除此以外,TiDB 不支持 MySQL 复制协议,但提供了专用工具用于与 MySQL 复制数据:

二、架构

TiDB 集群主要包括三个核心组件:TiDB ServerPD ServerTiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。

  • TiDB Server:接受SQL请求,与客户端交互(计算能力)。
  • PD Server:集群管理者。
  • TiKV Server:真正存储数据的(存储能力)。
  • TiSpark:解决复杂OLAP查询。
  • TiDB Operator:云上部署组件。

内部架构

在这里插入图片描述

与外界架构

在这里插入图片描述

三、安装

1、本地版安装

参考地址

https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb

TiDB 是一个分布式系统。最基础的 TiDB 测试集群通常由 2 个 TiDB 实例、3 个 TiKV 实例、3 个 PD 实例和可选的 TiFlash 实例构成。通过 TiUP Playground,可以快速搭建出上述的一套基础测试集群,步骤如下:

  1. 下载并安装 TiUP。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

在这里插入图片描述

  1. 声明全局环境变量。
source ${your_shell_profile}
source /root/.bash_profile
  1. 在当前 session 执行以下命令启动集群

直接运行 tiup playground 命令会运行最新版本的 TiDB 集群,其中 TiDB、TiKV、PD 和 TiFlash 实例各 1 个:

tiup playground

指定 TiDB 版本以及各组件实例个数

tiup playground v6.5.2 --db 2 --pd 3 --kv 3

在这里插入图片描述

这样就安装完成。但是只能本机访问:

  1. 新开启一个 session 以访问 TiDB 数据库。
tiup client

mysql --host 127.0.0.1 --port 4000 -u root
  1. 通过 http://127.0.0.1:9090访问 TiDB 的 Prometheus 管理界面。
  2. 通过 http://127.0.0.1:2379/dashboard 访问 TiDB Dashboard 页面,默认用户名为 root,密码为空。
  3. 通过 http://127.0.0.1:3000访问 TiDB 的 Grafana 界面,默认用户名和密码都为 admin
  4. (可选)将数据加载到 TiFlash 进行分析。
  5. 测试完成之后,可以通过执行以下步骤来清理集群:
tiup clean --all

2、单机版集群安装

2.1 概述

参考地址

https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb
  • 适用场景:希望用单台 Linux 服务器,体验 TiDB 最小的完整拓扑的集群,并模拟生产环境下的部署步骤。
实例个数IP配置
TiKV310.0.1.1 10.0.1.1 10.0.1.1避免端口和目录冲突
TiDB110.0.1.1默认端口 全局目录配置
PD110.0.1.1默认端口 全局目录配置
TiFlash110.0.1.1默认端口 全局目录配置
Monitor110.0.1.1默认端口 全局目录配置

2.2 安装

  1. 下载并安装 TiUP:
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

在这里插入图片描述

  1. 声明全局环境变量:
source ${your_shell_profile}
source /root/.bash_profile
  1. 安装 TiUP 的 cluster 组件:
tiup cluster
  1. 如果机器已经安装 TiUP cluster,需要更新软件版本:
tiup update --self && tiup update cluster
  1. 由于模拟多机部署,需要通过 root 用户调大 sshd 服务的连接数限制:

修改 /etc/ssh/sshd_configMaxSessions 调至 20。

#MaxAuthTries 6
MaxSessions 20

重启 sshd 服务:

service sshd restart
  1. 创建并启动集群

按下面的配置模板,编辑配置文件,命名为 topo.yaml,其中:

  • user: "tidb":表示通过 tidb 系统用户(部署会自动创建)来做集群的内部管理,默认使用 22 端口通过 ssh 登录目标机器
  • replication.enable-placement-rules:设置这个 PD 参数来确保 TiFlash 正常运行
  • host:设置为本部署主机的 IP

global:
 user: "tidb"
 ssh_port: 22
 deploy_dir: "/tidb-deploy"
 data_dir: "/tidb-data"


monitored:
 node_exporter_port: 9100
 blackbox_exporter_port: 9115

server_configs:
 tidb:
   log.slow-threshold: 300
 tikv:
   readpool.storage.use-unified-pool: false
   readpool.coprocessor.use-unified-pool: true
 pd:
   replication.enable-placement-rules: true
   replication.location-labels: ["host"]
 tiflash:
   logger.level: "info"

pd_servers:
 - host: 127.0.0.1

tidb_servers:
 - host: 127.0.0.1

tikv_servers:
 - host: 127.0.0.1
   port: 20160
   status_port: 20180
   config:
     server.labels: { host: "logic-host-1" }

 - host: 127.0.0.1
   port: 20161
   status_port: 20181
   config:
     server.labels: { host: "logic-host-2" }

 - host: 127.0.0.1
   port: 20162
   status_port: 20182
   config:
     server.labels: { host: "logic-host-3" }

tiflash_servers:
 - host: 127.0.0.1

monitoring_servers:
 - host: 127.0.0.1

grafana_servers:
 - host: 127.0.0.1
  1. 执行集群部署命令:
  • 参数 <cluster-name> 表示设置集群名称
  • 参数 <version> 表示设置集群版本,例如 v6.5.2。可以通过 tiup list tidb 命令来查看当前支持部署的 TiDB 版本
  • 参数 -p 表示在连接目标机器时使用密码登录(本机登录密码)
tiup cluster deploy <cluster-name> <version> ./topo.yaml --user root -p
tiup cluster deploy mytidb v6.5.2 ./topo.yaml --user root -p

按照引导,输入”y”及 root 密码,来完成部署:

Do you want to continue? [y/N]:  y
Input SSH password:

在这里插入图片描述

  1. 启动集群:
tiup cluster start <cluster-name>
tiup cluster start mytidb

在这里插入图片描述

2.3 访问集群

安装 MySQL 客户端。

yum -y install mysql
  • 访问 TiDB 数据库,密码为空:
mysql -h 10.0.1.1 -P 4000 -u root
  • 访问 TiDB 的 Grafana 监控

通过 http://{grafana-ip}:3000 访问集群 Grafana 监控页面,默认用户名和密码均为 admin

  • 访问 TiDB 的 Dashboard:

通过 http://{pd-ip}:2379/dashboard 访问集群 TiDB Dashboard 监控页面,默认用户名为 root,密码为空。

  • 查看已部署集群列表
tiup cluster list
  • 执行以下命令查看集群的拓扑结构和状态:
tiup cluster display <cluster-name>

3、配置文件地址

https://download.csdn.net/download/weixin_44624117/87820548

四、使用方式

1、基础SQL

Tidb地址

https://docs.pingcap.com/zh/tidb/stable/basic-sql-operations

SQL 语言通常按照功能划分成以下的 4 个部分:

  • DDL (Data Definition Language):数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。
  • DML (Data Manipulation Language):数据操作语言,用来操作和业务相关的记录。
  • DQL (Data Query Language):数据查询语言,用来查询经过条件筛选的记录。
  • DCL (Data Control Language):数据控制语言,用来定义访问权限和安全级别。

常用的 DDL 功能是对象(如表、索引等)的创建、属性修改和删除,对应的命令分别是 CREATE、ALTER 和 DROP。

2、历史数据查询

为支持读取历史版本数据,TiDB 引入了一个新的系统变量 tidb_snapshot

  • 这个变量的作用域为 SESSION
  • 你可以通过标准的 SET 语句修改这个变量的值。
  • 这个变量的数据类型为文本类型,能够存储 TSO 和日期时间。TSO 是从 PD 端获取的全局授时的时间戳,日期时间的格式为:“2016-10-08 16:45:26.999”,一般来说可以只写到秒,比如”2016-10-08 16:45:26”。
  • 当这个变量被设置时,TiDB 会按照设置的时间戳建立 Snapshot(没有开销,只是创建数据结构),随后所有的 SELECT 操作都会从这个 Snapshot 上读取数据。
    当读取历史版本操作结束后,可以结束当前 Session 或者是通过 SET 语句将 tidb_snapshot 变量的值设为 “”,即可读取最新版本的数据。

历史数据保留策略
TiDB 使用 MVCC 管理版本,当更新/删除数据时,不会做真正的数据删除,只会添加一个新版本数据,所以可以保留历史数据。历史数据不会全部保留,超过一定时间的历史数据会被彻底删除,以减小空间占用以及避免历史版本过多引入的性能开销。

  1. 查看表中的数据:
SELECT * from t;
# 2023-05-14 15:18:51
SELECT NOW();
+------+
| c    |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)
  1. 更新数据
UPDATE t SET c=22 WHERE c=2;
# 2023-05-14 15:19:53
SELECT NOW();
SELECT * from t;
+------+
| c    |
+------+
|    1 |
|   22 |
|    3 |
+------+
3 rows in set (0.00 sec)
  1. 查询某一时刻数据
set @@tidb_snapshot="2023-05-14 15:18:51";
# 1,2,3
SELECT * FROM t;
+------+
| c    |
+------+
|    1 |
|   22 |
|    3 |
+------+
3 rows in set (0.00 sec)
  1. 清空这个变量后,即可读取最新版本数据:
set @@tidb_snapshot="";
# 1,22,3
SELECT * FROM t;
+------+
| c    |
+------+
|    1 |
|   22 |
|    3 |
+------+
3 rows in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(浙大陈越版)数据结构 第三章 树(上) 3.2 二叉树及存储结构

目录 3.2.1 二叉树的定义及性质 定义: 二叉树五种基本形态&#xff1a; 特殊二叉树 二叉树的几个重要性质 二叉树的抽象数据类型定义 操作集&#xff1a; 常用遍历&#xff1a; 3.2.2 二叉树的存储结构 顺序存储结构 数组实现 链表实现 3.2.1 二叉树的定义及性质 …

RK3588平台开发系列讲解(项目篇)YOLOv5部署测试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、YOLOv5环境安装二、YOLOv5简单使用2.1、获取预训练权重文2.2、YOLOv5简单测试2.3、转换为rknn模型2.4、部署到 RK 板卡三、airockchip/yolov5简单测试3.1、转换成rknn模型并部署到板卡沉淀、分享、成长,让自己和他…

PyTorch-Transforms

目录 1. 基本知识 2. 常见的Transforms 2.1 ToTensor的使用 2.2 Normalize的使用 2.3 Resize的使用 2.4 Compose的使用 2.5 RandomCrop的使用 1. 基本知识 图片引用来自b站up主&#xff1a;我是土堆 tf.py&#xff08;如何使用transforms里面的工具&#xff09; 具体…

1 echarts与map相遇

echarts与map 版本 "echarts": "^5.1.2","echarts-gl": "^2.0.9",效果 基本方法 echarts中地图大多是以地理坐标为主&#xff0c;数据格式使用geojson数据格式。geojson是GIS数据格式中第二常用格式&#xff0c;使用GIS软件都能实现…

英文论文(sci)解读复现【NO.11】一种先进的基于深度学习模型的植物病害检测:近期研究综述

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

简单个人电话号码查询系统

系列文章 任务19 简单个人电话号码查询系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数 四、小组成员及分工五、 测试文件读取添加联系人删除联系人修改联系人查询联系人退出 六、源代…

(三) PID控制中的噪声过滤

在前面的章节里&#xff0c;我们谈到了积分环节由于执行器的物理限制导致的积分项Wind-up&#xff0c;通过设置饱和限幅器&#xff0c;选择性关闭积分环节来完成Wind-up问题。 今天我们要解决的问题就是微分环节可能存在的问题。通过传感器我们可以观测出一个被控量的大小&…

奇偶校验位

原理 奇偶校验位有两种类型&#xff1a;偶校验位与奇校验位。 以偶校验位来说&#xff0c;如果一组给定数据位中1的个数是奇数&#xff0c;补一个bit为1&#xff0c;使得总的1的个数是偶数。例&#xff1a;0000001, 补一个bit为1, 00000011。 以奇校验位来说&#xff0c;如果给…

电子科技大学编译原理复习笔记(二):数据类型

目录 前言 重点一览 引言 内部类型 内部类型的特点 内部类型的优越性 用户定义类型 ⭐超重点&#xff1a;六种数据类型聚合方式 ⭐抽象数据类型&#xff08;重点、考点&#xff09; 类型操作 类型检查 类型转换 类型等价 实现模型 本章小结 前言 本复习笔记基于…

Spark 3:Spark Core RDD持久化

RDD 的数据是过程数据 RDD 的缓存 # coding:utf8 import timefrom pyspark import SparkConf, SparkContext from pyspark.storagelevel import StorageLevelif __name__ __main__:conf SparkConf().setAppName("test").setMaster("local[*]")sc SparkC…

flask实现简易图书管理系统

项目结构 技术选型 flask 做后端, 提供数据和渲染html 暂时没有提供mysql, 后续会更新操作mysql和样式美化的版本 起一个flask服务 flask是python的一个web框架, 下面演示如何提供http接口, 并返回json数据 main.py # flask创建http接口 from flask import Flask, request, jso…

Linux 的软件生态 软件包管理器(yum)编译器 - vim

Linux的软件生态 在 手机 ipad 笔记本等等我们使用的产品当中&#xff0c;会有应用商店等等可以下载软件的 软件包管理器&#xff0c;当我们想要下载某一款软件的时候&#xff0c;就去这个应用商店当中搜索&#xff0c;或者是去寻找&#xff0c;找到之后&#xff0c;进行下载&a…

Linux Kernel源码阅读: x86-64 系统调用实现细节(超详细)

0、前言 本文采用Linux 内核 v3.10 版本 本文不涉及调试、跟踪及异常处理的细节 一、系统调用简介 系统调用是用户空间程序与内核交互的主要机制。系统调用与普通函数调用不同&#xff0c;因为它调用的是内核里的代码。使用系统调用时&#xff0c;需要特殊指令以使处理器权限转…

初识Linux操作系统及常用的Linux命令

Linux是一种自由和开放源码的类UNIX操作系统&#xff0c;也是一种基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随互联网的发展&#xff0c;企业对服务器速度和安全的要求越来越高&#xff0c;Linux系统由于具有性能稳定、防火墙组件性能高效、配置简单等…

Java内存模型的抽象结构 JMM

并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 线程之间如何通信&#xff1a;共享内存&#xff0c;消息传递线程之间如何同步通信是指线程之间以何种机制来 交换信息同步是指程序中用于控制不同线程间 操作发生相对顺序 的机制在共享内存的并发模型里&a…

Maven 详细教程(万字长文)

目录 一、Maven的简介二、Maven安装与配置三、Maven POM四、创建 Maven 项目五、Maven项目的构建与测试六、Maven依赖七、Maven仓库&#xff08;本地仓库远程仓库&#xff09;八、Maven生命周期&#xff08;cleansitedefault&#xff09;九、Maven常用插件十、Maven 版本号约定…

大模型时代的prompt学习(持续更新)

目录 为什么要学prompt基本原则prompt撰写框架Base Prompt FrameworkCRISPE Prompt Framework 场景撰写文案文档竞品分析产品设计数据分析 chain of thoughtzero shotin context learning(few shot)Self-Consistency Program-Aidedprompt tipsTo Do and Not To Doadd examples引…

水下图像0

d_r_1_.jpg 一个拖着电线的水下六足机器人在海水中作业 A robot is exploring the reef on the sea floor A hexapod robot works next to reef at the bottom of the sea A rectangular deep-sea robot swims past a patch of reef An underwater robot is detecting coral …

神经网络视觉AI“后时代”自瞄实现与对抗

通俗一点来说&#xff0c;自瞄是在FPS射击游戏中最为常见的作弊手段之一&#xff0c;当下最火爆的CSGO也深受其扰&#xff0c;在此我说些我自己的看法&#xff0c;欢迎大家在下方留言讨论&#xff1b; &#xff08;1&#xff09;软件层面 在神经网络方面的视觉AI应用流行之前&…

面试官:工作三年,还来面初级软件测试?恐怕你的软件测试工程师的头衔要加双引号...

相信身为测试工程师的你可能经历过这些&#xff1a; 已经工作三年了&#xff0c;每个项目都会加班加点全力以赴去完成&#xff0c;薪资增长幅度却不如人意。 听说年后离职的老同事&#xff0c;金三刚拿下高薪offer&#xff0c;年薪直奔50万了。 由于现在的公司接触不到新技术&…