TiDB分布式数据库部署与安装详解

news2024/9/21 12:32:52

TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群,以及管理 TiDB 集群参数。TiDB架构见:TiDB分布式数据库架构介绍

部署环境说明见下图:
在这里插入图片描述

1 添加数据盘 EXT4 文件系统

生产环境部署,建议使用 EXT4 类型文件系统的 NVME 类型的 SSD 磁盘存储 TiKV 数据文件。这个配置方案为最佳实施方案,其可靠性、安全性、稳定性已经在大量线上场景中得到证实。
使用 root 用户登录目标机器,将部署目标机器数据盘格式化成 ext4 文件系统,挂载时添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 TiUP 安装时检测无法通过;noatime 是可选建议参数。
注意
如果你的数据盘已经格式化成 ext4 并挂载了磁盘,可先执行 umount /dev/vdb 命令卸载,从编辑 /etc/fstab 文件步骤开始执行,添加挂载参数重新挂载即可。
1 查看数据盘

fdisk -l

2 创建分区

parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1

3 格式化文件系统

mkfs.ext4 /dev/vdb

4 使用 lsblk 命令查看分区的设备号及UUID:

lsblk -f

5 编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数

vi /etc/fstab
UUID=957bb4c8-68f7-40df-ab37-1de7a4b5ee5e /data ext4 defaults,nodelalloc,noatime 0 2

6 创建数据目录并挂载磁盘

mkdir -p /data && mount -a

2 手动配置 SSH 互信及 sudo 免密码

(1) 以 root 用户依次登录到部署目标机器创建 tidb 用户并设置登录密码。

useradd tidb && passwd tidb

(2) 执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码。

visudo
tidb ALL=(ALL) NOPASSWD: ALL

(3) 切换tidb用户
三台均需要进行如下操作

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp /home/tidb/.ssh/authorized_keys tidb@tidb1:/home/tidb/.ssh/
scp /home/tidb/.ssh/authorized_keys tidb@tidb2:/home/tidb/.ssh/
scp /home/tidb/.ssh/authorized_keys tidb@tidb3:/home/tidb/.ssh/

(4)以 tidb 用户登录中控机,通过 ssh 的方式登录目标机器 IP。如果不需要输入密码并登录成功,即表示 SSH 互信配置成功。

ssh 10.229.45.124

(5)以 tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。

sudo -su root

3 系统环境与工具设置

1 安装 numactl 工具

yum -y install numactl

2 调大 sshd 服务的连接数

vim /etc/ssh/sshd_config 
MaxSessions  = 20
重启 sshd 服务:
systemctl restart sshd.service

4 安装部署流程

1 下载离线版本 TiDB 社区版
在这里插入图片描述
2 解压

tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz 
cd tidb-community-server-${version}-linux-amd64
./local_install.sh
source /home/tidb/.bash_profile
source /home/tidb/.bash_profile

3 将 server 和 toolkit 两个离线镜像合并,执行以下命令合并离线组件到 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

4 设置配置文件
4.1 获取配置模板

tiup cluster template > topo.yaml 

4.2 填写配置文件(根据自己的机器填写信息,以下是模板)
user: “tidb”:表示通过 tidb 系统用户(部署会自动创建)来做集群的内部管理,默认使用 22 端口通过 ssh 登录目标机器
deploy_dir/data_dir: 分别为集群组件安装目录和数据目录
replication.enable-placement-rules:设置这个 PD 参数来确保 TiFlash 正常运行
host:设置为本部署主机的 IP

# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
 user: "tidb"
 ssh_port: 22
 deploy_dir: "/tidb-deploy"
 data_dir: "/tidb-data"

# # Monitored variables are applied to all the machines.
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: 10.0.1.1

tidb_servers:
 - host: 10.0.1.1

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

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

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

tiflash_servers:
 - host: 10.0.1.1

monitoring_servers:
 - host: 10.0.1.1

grafana_servers:
 - host: 10.0.1.1

5 集群安装
命令: tiup cluster deploy ./topo.yaml --user root -p

参数 表示设置集群名称

参数 表示设置集群版本,可以通过 tiup list tidb 命令来查看当前支持部署的 TiDB 版本

参数 -p 表示在连接目标机器时使用密码登录

tiup cluster deploy tidbtest 6.5.0 ./topo.yaml --user root -p

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

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

成功安装会提示如下启动字样:

Cluster tidbtest deployed successfully, you can start it with command: `tiup cluster start tidbtest`

6 启动集群

tiup cluster start <cluster-name>

出现如下结果表明成功:
Started cluster tidbtest successfully
The root password of TiDB database has been changed.
The new password is: ‘z1+5%vS9826As^#XHV’.
Copy and record it to somewhere safe, it is only displayed once, and will not be stored.
The generated password can NOT be get and shown again.

7 访问集群
安装 MySQL 客户端。如果已安装 MySQL 客户端则可跳过这一步骤。

yum -y install mysql

访问 TiDB 数据库,密码为空:

mysql -h 10.0.1.1 -P 4000 -u root -p 

Enter password: z1+5%vS9826As^#XHV

在这里插入图片描述
后续便可进行创建databases/tables以及相关的增、删、改和查等操作,如果想进一步了解源码。可以结合gdb调试了解实现原理。

8 tiup 相关命令
1)tiup cluster list      // 查看集群列表信息
2)tiup cluster display     //执行以下命令查看集群的拓扑结构和状态:
3)tiup cluster start     //启动集群
4)tiup cluster stop     //关闭集群
5)tiup cluster restart     //重启集群
6)tiup cluster destroy     //删除/销毁集群

参考连接:PingCAP 部署本地测试集群

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

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

相关文章

EMQX Enterprise 4.4.124.4.13 发布:集群负载重平衡、TDengine 3.0 适配以及子表批量插入

我们很高兴地告诉大家&#xff0c;EMQX Enterprise 4.4.12 以及 4.4.13 版本正式发布&#xff01; 在本次发布中&#xff0c;我们带来了集群负载重平衡与节点疏散功能为运维人员提供更灵活的集群管理方式&#xff0c;适配了 TDengine 3.0 版本并新增分表批量插入功能&#xff…

ECMAScript 2022 中的新特性!

新钛云服已累计为您分享718篇技术干货本文盘点ECMAScript 2022 中的新特性&#xff0c;包括顶级等待、RegExp 匹配索引、新的公共和私有类字段等。一、公共和私有实例字段最新的 ES13 规范允许我们将成员字段内联定义为类主体的一部分&#xff0c;我们可以使用#来表示私有字段。…

Python打包(问题记录,带解决)

引言 文章用于测试在Python3.8的版本&#xff0c;打包Obspy地震包&#xff0c;最后集成到PyQt5上。 部署或冻结应用程序是 Python 项目的重要组成部分&#xff0c; 这意味着捆绑所有必需的资源&#xff0c;以便应用程序找到它需要的一切 能够在客户端计算机上运行。 但是&…

Ethereum 基础(一)

以太坊&#xff08;Ethereum&#xff09;是社区运行的技术&#xff0c;为加密货币以太币(ETH)和数千个去中心化应用程序提供动力。 ethereum.org是您进入以太坊世界的门户。这项技术是新的、不断发展的——有个向导会有帮助。如果你想深入研究&#xff0c;我们建议你这样做。 …

Linux内核定时器

1.概念 在linux内核内部开发者设计了内核定时器&#xff0c;它的工作原理和硬件定时器一样&#xff0c;使用它不需要关注底层的实现&#xff0c;只需要分配定时器对象&#xff0c;初始化对象&#xff0c;启用定时器即可&#xff0c;当定时时间到达之后执行定时器的处理函数。 …

2022年第十二届APMCM亚太地区数学建模竞赛1月加赛E题翻译以及思路

中文2022年亚洲及太平洋地区建模数学竞赛问题E有多少颗核弹可以摧毁地球&#xff1f;1945年8月6日&#xff0c;第二次世界大战已接近尾声。为了尽快结束战争&#xff0c;美国在日本广岛投下了名为 "小男孩" 的第二颗原子弹。这样一颗原子弹炸死了广岛的200000人&…

硬盘容量计算

硬盘容量&#xff08;Hard drive capacity&#xff09;以兆字节&#xff08;MB&#xff09;或千兆字节&#xff08;GB&#xff09;为单位&#xff0c;主流硬盘容量为500G&#xff5e;2TB&#xff0c;影响硬盘容量的因素有单碟容量和碟片数量。许多人发现&#xff0c;计算机中显…

Java--面向对象经典练习题

文章内容 一、文字版格斗游戏 二、对象数组1 三、对象数组2 四、对象数组3 五、对象数组4 题目代码如下&#xff1a; 文字版格斗游戏 格斗游戏&#xff0c;每个游戏角色的姓名&#xff0c;血量&#xff0c;都不相同&#xff0c;再选定人物的时候(new对象的时候)&#xf…

(Java高级教程)第三章Java网络编程-第一节1:网络编程必备网络知识1之网络初识和网络协议

文章目录一&#xff1a;计算机网络基本概念二&#xff1a;计算机网络发展三&#xff1a;网络协议&#xff08;1&#xff09;生活中的协议&#xff08;2&#xff09;网络协议&#xff08;3&#xff09;协议是谁制定的注意&#xff1a;本节会总结一些必要的网络知识&#xff0c;便…

第03讲:HTTP操作之ElasticSearch映射操作

3.1.3、映射操作 有了索引库&#xff0c;等于有了数据库中的 database。 接下来就需要建索引库(index)中的映射了&#xff0c;类似于数据库(database)中的表结构(table)。 创建数据库表需要设置字段名称&#xff0c;类型&#xff0c;长度&#xff0c;约束等;索引库也一…

P11 PyTorch Momentum

参考&#xff1a; 关于梯度下降与Momentum通俗易懂的解释_ssswill的博客-CSDN博客_梯度 momentum 前言&#xff1a; P9讲梯度的时候&#xff0c;讲到过这种算法的梯度更新方法 这边重点讲解一下原理 Momentum算法又叫做冲量算法&#xff0c;其迭代更新公式如下&#xff1a; 实…

【Vue中使用Echarts】响应式布局flexible.js+rem适配方案

文章目录一、vue集成flexible方案第一种&#xff1a;在编译的时候自动转换(px2rem-loader)第二种&#xff1a;直接在写css样式的时候转换(cssrem)二、安装&配置lib-flexible.js三、安装插件cssrem一、vue集成flexible方案 先介绍几个基本的概念 px像素&#xff08;Pixel&…

LeetCode分类刷题---数组篇

刷题班数组1.二分查找704.二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置。69.X的平方和367.有效的完全平方数2.移除元素27.移除元素283.移动零844.比较含退格的字符串977.有序数组的平方3.长度最小的子数组209.长度最小的子数组904.水果成蓝76.最小覆…

2023-01-05 长亭科技 Go 后端开发实习生二面

由于面试官前几天 &#x1f40f; 了&#xff0c;在 HR 面后补了技术二面&#xff0c;不过问得倒也不难&#xff0c;但还是记录下。 1、请做 3 ~ 5 分钟的自我介绍。 2、你说研究生的方向是漏洞挖掘和模糊测试&#xff0c;可以介绍一下吗&#xff1f; 3、简单介绍下缓冲区溢出漏…

2022年中国特色智能工厂领航制造业升级分析报告

易观&#xff1a;当前&#xff0c;新一轮的科技革命和产业变革正在重塑世界格局&#xff0c;科技创新也成为影响国家竞争力的决定性因素。在全球制造业格局重塑的过程中&#xff0c;智能工厂作为全球智能制造产业实践的示范标杆与标准载体&#xff0c;是引领全球制造业企业与工…

机器学习中的数学原理——逻辑回归

这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎私信或者评论区留言&#xff01;这一篇就更新一下《白话机器学习中的数学——逻辑回归》&#xff01;什么是逻辑回归算法逻辑回归 (Logistic…

【信管6.3】成本挣值计算

成本挣值计算铺垫了那么久&#xff0c;不知道大家期待不期待。总算到了挣值计算这一课&#xff0c;这个名字很奇怪呀&#xff0c;什么叫做挣值&#xff1f;成本不就是我们的投资吗&#xff1f;这个挣值到底是要干嘛&#xff1f;带着这些疑问&#xff0c;我们就来看看挣值计算到…

2022全年度奶粉十大热门品牌销量榜单

随着居民收入水平的提升、消费观念的转变及健康饮食意识的逐渐增强&#xff0c;消费者对食品品质的要求也越来越高&#xff0c;奶粉市场也同样如此。当前&#xff0c;国内婴幼儿奶粉市场规模呈稳步增长态势&#xff0c;同时&#xff0c;“三孩政策”的发布实施&#xff0c;也利…

C++模板 - 提高编程

引言 本阶段主要针对C泛型编程和STL技术做详细的讲解&#xff0c;探讨C更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具&#xff0c;大大提高复用性 例如生活中的模板&#xff1a; 一寸照片模板&#xff1a; 模板的特点&#xff1a; 模板不可以直接使用&#…

制造业项目管理软件如何帮助企业做好项目费用管理?

在项目导向型制造型企业中&#xff0c;项目的成本管理与费用控制是企业进行项目评价与利润管控、指导市场选择和项目筛选的重要手段。而传统的手工管理模式下&#xff0c;制造企业管理层很难快速了解到哪些项目出现了延误、哪些项目发生了费用超支、哪些项目产生了变更等问题与…