centos7.5离线安装部署TiDB-6.5.0分布式系统

news2025/1/8 6:05:33

centos7.5离线安装部署TiDB-6.5.0分布式系统

一、需求,为什么要部署TiDB-6.5.0分布式系统

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

二、TIDB基本概念

2.1 什么是 TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

2.2 TiDB 整体架构

要深入了解 TiDB 的水平扩展和高可用特点,首先需要了解 TiDB 的整体架构。TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。
在这里插入图片描述

2.3 TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

2.4 PD Server

Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

2.5 TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

2.6 TiSpark

TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

2.7 TiDB Operator

TiDB Operator 提供在主流云基础设施(Kubernetes)上部署管理 TiDB 集群的能力。它结合云原生社区的容器编排最佳实践与 TiDB 的专业运维知识,集成一键部署、多集群混部、自动运维、故障自愈等能力,极大地降低了用户使用和管理 TiDB 的门槛与成本。

2.8 与 MySQL 兼容性对比

TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现有的 MySQL 连接器和客户端都可以继续使用。大多数情况下您现有的应用都可以迁移至 TiDB,无需任何代码修改。
当前 TiDB 服务器官方支持的版本为 MySQL 5.7。大部分 MySQL 运维工具(如 PHPMyAdmin, Navicat, MySQL Workbench 等),以及备份恢复工具(如 mysqldump, Mydumper/myloader)等都可以直接使用。
不过一些特性由于在分布式环境下没法很好的实现,目前暂时不支持或者是表现与 MySQL 有差异。一些 MySQL 语法在 TiDB 中可以解析通过,但是不会做任何后续的处理,例如 Create Table 语句中 Engine,是解析并忽略。
https://pingcap.com/docs-cn/v6.5.0/reference/mysql-compatibility/
等着急了吧,这就开始安装部署了,部署完成后可以再看上面。

三、TiDB-6.5.0分布式系统安装和部署

3.1 下载二进制安装包

进入官方下载地址,选择社区版下载,以及选择对应的版本
https://cn.pingcap.com/product-community/
在这里插入图片描述

3.2 进行基本环境的配置

#创建tidb用户
adduser tidb
passwd tidb
vim /etc/sudoers
tidb ALL=(ALL)  NOPASSWD:ALL
#进行相互之间免密操作
su - tidb
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub tidb@192.168.2.223
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.2.223

以下我都是在tidb用户下操作的,权限不足就加sudo

3.3 部署离线环境 TiUP 组件

将离线包发送到服务器后,执行以下命令安装 TiUP 组件:

#对压缩包的一些处理,其实也无所吊谓,处不处理都可以,想来诸位都是有linux一定基础的
sudo chmod +x tidb-community-server-v6.5.0-linux-amd64.tar.gz
sudo chown tidb:tidb tidb-community-server-v6.5.0-linux-amd64.tar.gz
#创建 tidb-6.5.0文件夹,以后所有关于tidb的数据都放到了这个文件夹里面
mkdir /opt/module/tidb-6.5.0
sudo tar -zxvf tidb-community-server-v6.5.0-linux-amd64.tar.gz -C /opt/module/tidb-6.5.0
sudo chown -R tidb:tidb ./tidb-6.5.0/
sh ./local_install.sh
source /home/tidb/.bash_profile
tiup playground

在这里插入图片描述
local_install.sh 脚本会自动执行 tiup mirror set tidb-community-server- v e r s i o n − l i n u x − a m d 64 命令将当前镜像地址设置为 t i d b − c o m m u n i t y − s e r v e r − {version}-linux-amd64 命令将当前镜像地址设置为 tidb-community-server- versionlinuxamd64命令将当前镜像地址设置为tidbcommunityserver{version}-linux-amd64。

3.4 合并离线包

如果是通过官方下载页面下载的离线软件包,需要将 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包合并到离线镜像中。如果是通过 tiup mirror clone 命令手动打包的离线组件包,不需要执行此步骤。
执行以下命令合并离线组件到 server 目录下。

tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
cd tidb-community-server-${version}-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64

若需将镜像切换到其他目录,可以通过手动执行 tiup mirror set 进行切换。如果需要切换到在线环境,可执行 tiup mirror set https://tiup-mirrors.pingcap.com。

3.5初始化集群拓扑文件

针对两种常用的部署场景,也可以通过以下命令生成建议的拓扑模板:
混合部署场景:单台机器部署多个实例

tiup cluster template --full > topology.yaml

跨机房部署场景:跨机房部署 TiDB 集群

tiup cluster template --multi-dc > topology.yaml

执行 vim topology.yaml,查看配置文件的内容(我的得单节点做测试,单节点会部署,集群应该也会部署吧,不会评论我后面给咱copy别人的教程。):

global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/opt/module/tidb-6.5.0/tidb-deploy"
  data_dir: "/opt/module/tidb-6.5.0/tidb-data"
server_configs: {}
pd_servers:
  - host: 192.168.2.223
tidb_servers:
  - host: 192.168.2.223
tikv_servers:
  - host: 192.168.2.223
monitoring_servers:
  - host: 192.168.2.223
grafana_servers:
  - host: 192.168.2.223
alertmanager_servers:
  - host: 192.168.2.223

3.6 执行部署命令

注意
通过 TiUP 进行集群部署可以使用密钥或者交互密码方式来进行安全认证:
如果是密钥方式,可以通过 -i 或者 --identity_file 来指定密钥的路径。
如果是密码方式,可以通过 -p 进入密码交互窗口。
如果已经配置免密登录目标机,则不需填写认证。
一般情况下 TiUP 会在目标机器上创建 topology.yaml 中约定的用户和组,以下情况例外:
topology.yaml 中设置的用户名在目标机器上已存在。
在命令行上使用了参数 --skip-create-user 明确指定跳过创建用户的步骤。

执行部署命令前,先使用 check 及 check --apply 命令检查和自动修复集群存在的潜在风险:
1.检查集群存在的潜在风险:

tiup cluster check ./topology.yaml --user root 

2.自动修复集群存在的潜在风险:

tiup cluster check ./topology.yaml --apply --user root 

3.6.1.1 以下是检查集群存在的潜在风险出现问题的解决方法

检查集群命令

tiup cluster check ./topology.yaml --user tidb

在这里插入图片描述

问题一:CPU frequency governor is conservative, should use performance, auto fixing not supported

为调整 CPU 频率的 cpufreq 模块选用 performance 模式。将 CPU 频率固定在其支持的最高运行频率上,不进行动态调节,可获取最佳的性能。
解决方法;即看即用
Linux 内部共有五种对频率的管理策略 userspace , conservative , ondemand , powersave(省电模式) 和 performance(性能模式)。
查看当前CPU模式:
查看cpu0

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

查看所有cpu

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

查看所有CPU频率:

cpupower -c all  frequency-info

设置CPU模式:

cpupower frequency-set -g performance #设置成性能模式 
cpupower frequency-set -g powersave     #设置成省电模式

linux报错:-bash: cpupower: command not found

这个错误提示表明系统中没有安装cpupower命令。可以通过以下命令安装cpupower:
在Debian/Ubuntu上:
sudo apt-get update
sudo apt-get install linux-tools-common linux-tools-$(uname -r)
在CentOS/RHEL上:
sudo yum install kernel-tools
安装完成后,再次尝试运行cpupower命令即可。

问题二: service irqbalance not found, should be installed and started

这个错误提示表明系统中没有安装irqbalance服务。可以通过以下命令安装irqbalance:

#在Debian/Ubuntu上:
sudo apt-get update
sudo apt-get install irqbalance

#在CentOS/RHEL上:
sudo yum install irqbalance
#安装完成后,启动irqbalance服务:
sudo service irqbalance start
#或者:
sudo systemctl start irqbalance
如果需要开机自启动irqbalance服务,可以执行以下命令:

#在Debian/Ubuntu上:
sudo update-rc.d irqbalance defaults
#在CentOS/RHEL上:
sudo systemctl enable irqbalance

安装和启动完成后,再次尝试运行irqbalance服务即可。

问题三: Fail numactl not usable, /etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory

/etc/profile.d/lang.sh: line 20: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
/etc/profile.d/lang.sh: line 23: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
/etc/profile.d/lang.sh: line 26: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
/etc/profile.d/lang.sh: line 29: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory
解决方法:

 sudo yum -y install numactl

如果numactl能够使用,那么第一个问题就不存在了。可能只是语言环境设置的问题。在命令行中使用以下命令来安装缺少的语言包:

#安装glibc-common包:
sudo yum install -y glibc-common
#生成en_US.UTF-8 locale:
sudo localedef -c -i en_US -f UTF-8 en_US.UTF-8
#编辑/etc/locale.conf文件,并添加以下内容:
LANG=en_US.utf8
LC_ALL=en_US.utf8
#编辑/etc/profile文件,并添加以下内容:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#重新启动以使更改生效。
source /etc/profile

3.7 重新执行检查命令

tiup cluster check ./topology.yaml --user tidb

在这里插入图片描述
发现全部没有问题,ok

3.8 部署 TiDB 集群:

tiup cluster deploy harbor-tidb1 v6.5.0 ./topology.yaml --user tidb -p

以上部署示例中:
harbor-tidb1 为部署的集群名称。
v6.5.0 为部署的集群版本,可以通过执行 tiup list tidb 来查看 TiUP 支持的最新可用版本。
初始化配置文件为 topology.yaml。
–user root 表示通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。
[-i] 及 [-p] 为可选项,如果已经配置免密登录目标机,则不需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码。
预期日志结尾输出 Deployed cluster harbor-tidb1 successfully 关键词,表示部署成功。

3.9 查看 TiUP 管理的集群情况

tiup cluster list

TiUP 支持管理多个 TiDB 集群,该命令会输出当前通过 TiUP cluster 管理的所有集群信息,包括集群名称、部署用户、版本、密钥信息等。

3.10 检查部署的 TiDB 集群情况

例如,执行如下命令检查 harbor-tidb1 集群情况:

tiup cluster display harbor-tidb1

预期输出包括 tidb-test 集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。

3.11 启动集群

安全启动是 TiUP cluster 从 v1.9.0 起引入的一种新的启动方式,采用该方式启动数据库可以提高数据库安全性。推荐使用安全启动。
安全启动后,TiUP 会自动生成 TiDB root 用户的密码,并在命令行界面返回密码。

注意
使用安全启动方式后,不能通过无密码的 root 用户登录数据库,你需要记录命令行返回的密码进行后续操作。
该自动生成的密码只会返回一次,如果没有记录或者忘记该密码,请参照忘记 root 密码修改密码。

方式一:安全启动

tiup cluster start harbor-tidb1 --init

预期结果如下,表示启动成功。
在这里插入图片描述
方式二:普通启动

tiup cluster start harbor-tidb1

预期结果输出 Started cluster harbor-tidb1 successfully,表示启动成功。使用普通启动方式后,可通过无密码的 root 用户登录数据库。

3.12 验证集群运行状态

tiup cluster display harbor-tidb1

预期结果输出:各节点 Status 状态信息为 Up 说明集群状态正常。
在这里插入图片描述

3.13 使用navicat连接

可以看到 tidb 的端口号是 4000,pd 运维端口是 2379。我们通过 Navicat 这种工具连接数据库是使用 4000 端口
在这里插入图片描述

3.14 访问general

http://IP:3000/login 账号密码 都为admin
在这里插入图片描述

3.15 Dashboard

Dashboard URL: http://IP:2379/dashboard
在这里插入图片描述

3.16 关键组件

几个关键组件信息:

Pd: 元数据及控制调度组件
Tikv:存储组件
Tidb:数据库实例组件
Tiflash:闪存组件
Tidb 虽然和 mysql 类似,但是它厉害在分布式,如果要使用 mysql,数据库变大后,要思考虑分库分表、使用 mycat 等数据路由工具,Tidb 设计从底层一开始分布式,类似 hdfs 的存储架构,将分布式做成一种原生的架构。

官网部署地址

https://docs.pingcap.com/zh/tidb/stable/production-deployment-using-tiup

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

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

相关文章

抖音seo源码保姆式服务搭建|定制产品开发分享

抖音seo霸屏,是一种专为抖音视频创作者和传播者打造的视频批量剪辑,批量分发产品。使用抖音seo霸屏软件,可以帮助用户快速高效的制作出高质量的优质视频。 使用方法:1. 了解用户的行为习惯 2. 充分利用自身资源进行开发 3. 不…

蓝桥杯第十四届青少年Python组省赛试题--第4题

提示信息: 杨辉三角就是一个用数排列起来的三角形(如下图),杨辉三角规则如下: 1)每行第一个数和最后一个数都为1,其它每个数等于它左上方和右上方的两数之和; 2)第n行有n…

FiftyOne 系列教程(1)FiftyOne简介及跑通官网的demo案例

文章目录 简介demo效果 简介 FiftyOne 是一个数据集管理和模型分析工具,提供灵活的 API 和直观的应用程序,作为开源“数据集的 IDE”。可以非常方便的做出来自己的算法与baseline之间的对比效果图在更多数据集上获得结果,通常是你以前从未使…

logstash同步数据从kafka到es集群

背景:需求是这样的,原始文件是txt文件(每天300个文件),最终想要的结果是每天将txt中的数据加载到es中,开始的想法是通过logstash加载数据到es中,但是对logstash不太熟悉,不知道怎么讲…

数据仓库是什么?什么是列式存储?

事务和分析 在早期的业务数据处理过程中,一次典型的数据库写入通常与一笔 商业交易(commercial transaction) 相对应:卖个货、向供应商下订单、支付员工工资等等。但随着数据库开始应用到那些不涉及到钱的领域,术语 交…

Liunx 套接字编程(2)TCP接口通信程序

1.TCP通信程序的编写 面向连接、可靠传输、提供字节流传输服务 客户端向服务器发送一个连接建立的请求流程,上图中服务端第三步详细流程 2.TCP接口 socket--创建套接字 int socket(int domain, int type, int protocol); bind---绑定 intbind(int sockfd, struct s…

自动化测试工具 —— selenium介绍及基本使用方法

Selenium是一个开源、免费、简单、灵活,对Web浏览器支持良好的自动化测试工具,在UI自动化、爬虫等场景下是十分实用的,能够熟练掌握并使用Selenium工具可以大大的提高效率。 Selenium简介 Selenium支持多平台、多浏览器、多语言去实现自动化…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——项目复现

文章目录 概述项目复现配置环境下载并配置文件运行代码第一阶段,训练提取DTFR特征的模型资料搜集 train_vqvae.py 第二阶段,使用训练好的模型提取声音的DTFR特征torch.cuda.OutOfMemoryError: CUDA out of memory. 第三阶段,基于特征训练合成…

【软件测试】支付模块测试攻略,这些测试方法和注意事项你掌握了么?

对于大部分人而言,支付模块或许是日常生活中最为关注和使用的功能之一,因此,对于支付模块的质量控制也显得尤为重要。 但考虑到支付涉及到金钱流转等敏感信息,一旦出现问题可能带来非常严重后果。因此,在支付模块测试…

FastAPI 的路由介绍及使用

上一篇文章中,我介绍了 FastAPI 框架的安装和 HelloWorld 项目搭建方式。本文将介绍如何使用 Router 路由处理 FastAPI 中的请求。 什么是路由 路由 Router 就像是一个流水线上的线长,协调生产,下达命令给不同的组长进行分工,然…

Springboot——事物管理

文章目录 事务管理一、 Spring事务管理1.1 事务回顾1.2 案例: 解散部门(未开启事务)1.3 事务管理注解Transactional1.4 事务管理日志开关1.5 rollbackFor 异常回滚属性1.6 propagation 事务传播行为1.7 解散部门并记录操作日志1.7.1 创建数据…

Java 8 腰斩!Java 17 暴涨 430%!!(文末福利)

New Relic 最新发布了一份 “2023 年 Java 生态系统状况报告”,旨在提供有关当今 Java 生态系统状态的背景和见解。该报告基于从数百万个提供性能数据的应用程序中收集的数据,对生产中使用最多的版本、最受欢迎的 JDK 供应商、容器的兴起等多方面进行了调…

AIGC+实时云渲染:开启3D内容生态的黄金时代

AIGC技术革命下,我们的3D内容生态将会迎来怎样的变化格局? 实时云渲染 / Cloud XR技术将在AIGC大潮中扮演什么样的角色? 作为云基础设施厂商,我们有哪些机会可以抓住? 这些问题已在XR产业、3D内容行业以及软件行业内…

人工智能基础部分18-条件随机场CRF模型的应用

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分18-条件随机场CRF模型的应用,本文将详细介绍条件随机场(CRF)模型,包括其原理、应用场景及实际代码实现。我将通过一个生活中的简单数据样例来演示如何输入数据、运行模型以及…

prometheus监控redis集群并显示到granfana面板

prometheus监控redis集群 监控redis1,在redis机器上安装redis_exporter2,配置prometheus配置文件3,设置redis maxmemory4,导入redis监控模板736 监控redis 1,在redis机器上安装redis_exporter 下载,安装r…

什么是边缘服务器?边缘计算的未来如何?

边缘服务器是指驻留在网络逻辑边缘上的任何类型的服务器,通常位于专用网络和互联网之间。边缘服务器的计算能力正在迅速塑造现代工业格局,动态应用程序和现代业务基础设施的出现使得数据的快速处理和共享成为必然。公司现在正在用边缘服务器技术取代传统…

什么是Pinia?以及它的使用方式?以及和Vuex的区别是什么?

文章目录 概要什么是Pinia?Pinia和Vuex的区别?Pinia相比于Vuex的优势?为什么要使用Pinia?Pinia的简单使用安装(仅限于Vue3)使用 概要 提示:下边是Pinia的简单介绍(详解请点击查看官方…

深度解析接口自动化框架封装项目:封装层级,关联调用,极限改进

目录 前言: 一、接口封装与封装层级 二、接口关联和数据准备 三、接口封装极限改进 四、代码示例 五、总结 前言: 接口自动化是软件测试领域中的一个重要环节,它可以自动化执行接口测试用例,快速发现和定位接口问题&#xf…

JAVA的基本数据类型及扩大缩小转换

JAVA的8种基本类型 分为四大类:整形、浮点型、字符型、布尔型 数据类型类别大小(位)范围byte整型8-128 到 127short整型16-32768 到 32767int整型32-2147483648 到 2147483647long整型64-9223372036854775808 到 9223372036854775807float浮点型32约3.40282347e38…

房屋装修选择自装,如何寻找砌墙工人,比价并施工(砌墙阶段)

环境: 地点:杭州 装修类型:自装 面积:建面135平方 进度:砌墙阶段 问题描述: 房屋装修选择自装,如何寻找砌墙工人,比价并施工 解决方案: 一、了解砌墙相关知识 砌…