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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux Network】应用层协议——HTTP

目录 1. 认识URL 2. urlencode和urldecode urlencode例子: urldecode例子: 3. HTTP协议格式 3.1 HTTP请求: 3.2 HTTP响应: 3.3 HTTP的方法: 3.4 GET方法和POST方法的区别 3.5 HTTP的状态码: 3.6 HTTP常见He…

Buf 教程 - 使用 Protobuf 生成 Golang 代码和 Typescript 类型定义

简介 Buf 是一款更高效、开发者友好的 Protobuf API 管理工具,不仅支持代码生成,还支持插件和 Protobuf 格式化。 我们可以使用 Buf 替代原本基于 Protoc 的代码生成流程,一方面可以统一管理团队 Protoc 插件的版本、代码生成配置&#xff…

QT的qrc文件的创建和编辑

qrc文件,这个是Qt的资源文件,如果在pro文件中不包含的话,在编译的时候会提示找不到相应资源的错误;下面说一下手动修改pro和编写qrc文件的方法: 2.1 添加qrc文件; 2.2 编写qrc文件; 可以用 file…

Linux_证书_Openssl工具详解

文章目录 OpenSSLopenssl实现对称加密openssl生成密钥对、非对称加密、数字签名根据CA颁布证书生成ca私钥和ca证书根据ca生成证书 小结 OpenSSL OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypt…

AR VR 到底哪种技术可以改变未来?

随着科技的不断进步,虚拟现实(VR)和增强现实(AR)技术已经成为了当今科技领域的热门话题。VR和AR的出现,为人们带来了前所未有的体验和感受,也为各行各业的发展提供了新的机遇。但是,…

clang-format configurator - 交互式创建 clang-format 格式配置文件

clang-format configurator - 交互式创建 clang-format 格式配置文件 clang-format configurator https://zed0.co.uk/clang-format-configurator/ clang-format-configurator https://github.com/zed0/clang-format-configurator Interactively create a clang-format confi…

ANR基础篇 - Trace.txt文件分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、trace.txt文件示例二、日志分析2.1 CPU 负载2.2 内存信息2.3 堆栈信息schedst…

裸辞5个月,面试了37家公司,终于.....

上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…

学习Se-net和Sk-net 附网络简单代码(pytorch)

(一)Se-net的原理和思路     Se-net严格来说是一个小结构,它可以直接插入已有的网络结构中,帮助原有结构获得更好的效果,如插入Resnet网络中。 Se-net的整个流程如下:     (1&#xf…

Cisco 产品下载链接汇总 2023 持续更新中

Cisco 产品链接汇总 2023 持续更新中 IOS-XE, IOS-XR, NX-OS & FXOS based on linux kernel 请访问原文链接:https://sysin.org/blog/cisco/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 本站 Cisco 产品汇…

Java是如何实现双亲委托机制的

Java 是一种面向对象的编程语言,它有一套独特的类加载机制。其中,双亲委托加载机制是 Java 类加载机制中的一个重要概念。本文将介绍 Java 的双亲委托加载机制是如何实现的,并解释其作用和优点。 Java 类加载机制 在 Java 中,类的…

ADAS/AD笔记之特斯拉Autopilot-HW3.0系统

摘要: 目前国内一般直接将高速NOA成为“L2”;因此,复杂度更高的城区NOA,就自然的映射到了“L2”。 一、概述: 特斯拉Autopilot系统首创了NOA这种淡化脱手/脱眼/脱脑(驾驶自动化程度)逻辑的功能…

基础知识(王爽老师书第一章)

文章目录 基础知识1.1 引言1.2 机器语言1.2 引言汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线小结检测点1.11.11 内存地址空间1.12 主板1.13 接口卡1.14 各类存储器芯片1.15 内存地址空间…

新版android studio gradle插件7.4.2.pom一直无法下载问题

android studio同步时候出现org.gradle.api.plugins.UnknownPluginException,Plugin [id: com.android.application, version: 7.4.2] was not found in any of the following sources: pom插件一直无法下载,搞了好几天,简直想砸电脑&#x…

java版企业电子招投标系统源代码之了解电子招标投标全流程

随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

【RabbitMQ】| Lion带你 (超详细) 从0到1使用SpringBoot操作RabbitMQ

目录 一. 🦁 前言二. 🦁 SpringBoot操作RabbitMQⅠ. 前期准备工作1. 创建项目(不细说)2. 添加依赖3. 编写配置文件 Ⅱ. 创建队列和交换机Ⅲ. 创建生产者Ⅳ. 创建消费者 三. 🦁 总结 一. 🦁 前言 Spring Bo…

ChatGPT:使用Edge浏览器获取ChatGPT以及如何使用ChatGPT帮你制作PPT

一:前言 ChatGPT:智能AI助你畅聊天地 在现代人日益忙碌的生活中,难免需要一些轻松愉快的聊天来放松身心。而现在,有了 ChatGPT,轻松愉快的聊天变得更加智能、有趣且不受时间、地点限制! 什么是 ChatGPT&…

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

本文主要介绍如何使用Vue3和TypeScript引入BabylonJs技术实现3D效果。结合实际案例,详细讲解了如何在Vue3项目中引入BabylonJs,并了解其相关知识。通过本文的学习,相信读者可以轻松掌握Vue3实现3D效果以及BabylonJs的相关知识。 Vue3 TypeS…

实验10 人工神经网络(1)

1. 实验目的 ①理解并掌握误差反向传播算法; ②能够使用单层和多层神经网络,完成多分类任务; ③了解常用的激活函数。 2. 实验内容 ①设计单层和多层神经网络结构,并使用TensorFlow建立模型,完成多分类任务&#xf…

JavaWeb13-JavaScript 开发利器之 jQuery-01

1. 说明 1.1 现状 1、jquery 使用情况 2、Vue 使用情况 1.2 官方文档 学习地址: https://www.w3school.com.cn/jquery/index.asp API地址: https://jquery.cuishifeng.cn/ 1.3 JQuery 是什么? 1.3.1 基本介绍 jQuery 是一个快速的,简洁的 javaScript 库…