> 文档中心 > 猿创征文|TiDB单机部署最佳实践

猿创征文|TiDB单机部署最佳实践


📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📢 1.TiDB 简介
    • 📢 2.TiDB 架构
    • 📢 3.TiDB 部署
      • ✨ 3.1 安裝包下载
      • ✨ 3.2 创建用户
      • ✨ 3.3 配置免密码登录
      • ✨ 3.4 创建tidb用户ssh key
      • ✨ 3.5 解压安装包安装
      • ✨ 3.6 配置初始化参数文件
      • ✨ 3.7 部署集群
      • ✨ 3.8 启动集群
    • 📢 4.连接测试
    • 📢 5. tiup cluster 命令

前言

最近客户项目要求,基于Centos7的环境部署TiDB 6.3 单机环境,详细的过程分享给大家


📢 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 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

猿创征文|TiDB单机部署最佳实践

📢 2.TiDB 架构

与传统的单机数据库相比,TiDB 具有以下优势:
1)纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
2)支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL
3)默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
4)支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账
5)具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景

猿创征文|TiDB单机部署最佳实践

TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。

PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。

存储节点
1)TiKV Server:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。TiDB 的 SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。
2)TiFlash:TiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

📢 3.TiDB 部署

✨ 3.1 安裝包下载

帮助文档:https://docs.pingcap.com/zh/
社区版地址:https://cn.pingcap.com/product-community

猿创征文|TiDB单机部署最佳实践

✨ 3.2 创建用户

#创建用户[root@jeames ~]# adduser tidb#设置密码[root@jeames ~]# passwd tidb

猿创征文|TiDB单机部署最佳实践

✨ 3.3 配置免密码登录

编辑/etc/sudoers文件,文末加入:tidb ALL=(ALL)  NOPASSWD:ALL如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令, 或者允许某些用户使用sudo时不需要输入密码,一般修改/etc/sudoers文件cat >> /etc/sudoers << "EOF"tidb ALL=(ALL)  NOPASSWD:ALLEOF

✨ 3.4 创建tidb用户ssh key

切换用户[root@jeames ~]# su - tidb执行命令,一直按回车键就行[tidb@jeames ~]$ ssh-keygen -t rsa

猿创征文|TiDB单机部署最佳实践

✨ 3.5 解压安装包安装

1.切换到tidb用户,新建以下两个目录[tidb@jeames ~]$ mkdir tidb-deploy[tidb@jeames ~]$ mkdir tidb-data2.解压Tidb server安装包[tidb@jeames ~]$ chmod +x tidb-community*[tidb@jeames ~]$ tar -zxvf tidb-community-server-v6.3.0-linux-amd64.tar.gz3.执行instal文件[tidb@jeames ~]$ sh /home/tidb/tidb-community-server-v6.3.0-linux-amd64/local_install.sh根据完成后提示中的第一点,执行如下命令,具体命令根据提示中的来:1. source /home/tidb/.bash_profile2. Have a try:   tiup playground

至此,TiDB安装所需的组件已经安装完成

猿创征文|TiDB单机部署最佳实践
猿创征文|TiDB单机部署最佳实践

✨ 3.6 配置初始化参数文件

1)集群初始化配置文件需要手动编写,在tidb用户根目录创建 YAML 格式配置文件,
下面是我的配置文件 topology.yaml
2)第二种方法;
执行如下命令,生成集群初始化配置文件:
tiup cluster template > topology.yaml

cat >> /home/tidb/topology.yaml << "EOF"global:  user: "tidb"  ssh_port: 22  deploy_dir: "/home/tidb/tidb-deploy"  data_dir: "/home/tidb/tidb-data"server_configs: {}pd_servers:  - host: 192.168.1.54tidb_servers:  - host: 192.168.1.54tikv_servers:  - host: 192.168.1.54monitoring_servers:  - host: 192.168.1.54grafana_servers:  - host: 192.168.1.54alertmanager_servers:  - host: 192.168.1.54EOF--以下为生产集群部署命令global:  user: "tidb"  ssh_port: 22  deploy_dir: "/tidb-deploy"  data_dir: "/tidb-data"server_configs: {}pd_servers:  - host: 10.0.1.4  - host: 10.0.1.5  - host: 10.0.1.6tidb_servers:  - host: 10.0.1.7  - host: 10.0.1.8  - host: 10.0.1.9tikv_servers:  - host: 10.0.1.1  - host: 10.0.1.2  - host: 10.0.1.3monitoring_servers:  - host: 10.0.1.4grafana_servers:  - host: 10.0.1.4alertmanager_servers:  - host: 10.0.1.4

猿创征文|TiDB单机部署最佳实践

✨ 3.7 部署集群

部署命令
[tidb@jeames ~]$ tiup cluster deploy tidb-test v6.3.0 ./topology.yaml --user tidb -p
Cluster tidb-test deployed successfully, you can start it with command: tiup cluster start tidb-test --init

猿创征文|TiDB单机部署最佳实践

参数说明:1) 通过 TiUP cluster 部署的集群名称为 tidb-test2)部署版本为 v6.3.0,其他版本可以执行 tiup list tidb 获取[tidb@jeames ~]$ tiup list tidbAvailable versions for tidb:Version  Installed  Release      Platforms-------  ---------  -------      ---------v6.3.0   YES 2022-09-30T11:00:18+08:00  linux/amd643)初始化配置文件为 topology.yaml4)--user tidb:通过 tidb 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 sshsudo 权限的用户完成部署。5) [-i][-p]:非必选项,如果已经配置免密登陆目标机,则不需填写。否则选择其一即可,[-i] 为可登录到部署机 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码如无意外,会出现successfully的提示信息命令 tiup cluster deploy 用于部署一个全新的集群。Enabling component pd Enabling instance 192.168.1.54:2379 Enable instance 192.168.1.54:2379 successEnabling component tikv Enabling instance 192.168.1.54:20160 Enable instance 192.168.1.54:20160 successEnabling component tidb Enabling instance 192.168.1.54:4000 Enable instance 192.168.1.54:4000 successEnabling component prometheus Enabling instance 192.168.1.54:9090 Enable instance 192.168.1.54:9090 successEnabling component grafana Enabling instance 192.168.1.54:3000 Enable instance 192.168.1.54:3000 successEnabling component alertmanager Enabling instance 192.168.1.54:9093 Enable instance 192.168.1.54:9093 successEnabling component node_exporter Enabling instance 192.168.1.54 Enable 192.168.1.54 successEnabling component blackbox_exporter Enabling instance 192.168.1.54 Enable 192.168.1.54 successCluster `tidb-test` deployed successfully, you can start it with command: `tiup cluster start tidb-test --init`

✨ 3.8 启动集群

[tidb@jeames ~]$ tiup cluster start tidb-test --init

Started cluster `tidb-test` successfullyThe root password of TiDB database has been changed.The new password is: 'Z2h^q6tBV7058bn&=%'.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.

猿创征文|TiDB单机部署最佳实践

检查集群状态,命令:tiup cluster display tidb-test
[tidb@jeames ~]$ tiup cluster display tidb-test

猿创征文|TiDB单机部署最佳实践

以上输出的结果中,可以看到tidb的端口号是4000,pd运维端口是2379。我们通过Navicat这种工具连接数据库是使用4000端口,默认密码上面已经提示:
The new password is: ‘Z2h^q6tBV7058bn&=%’

📢 4.连接测试

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

因为TiDB内核是MySQL,所以直接用Navicat工具选择连接MySQL就行:
使用Navicat登录进去后,可以看到目前最新版本的TiDB的MySQL内核是:5.7.25

猿创征文|TiDB单机部署最佳实践
猿创征文|TiDB单机部署最佳实践

📢 5. tiup cluster 命令

集群部署成功后,可以通过 tiup cluster list 命令在集群列表中查看该集群
[tidb@jeames ~]$ tiup cluster list

猿创征文|TiDB单机部署最佳实践

启动集群
集群部署成功后,可以执行以下命令启动该集群
[tidb@jeames ~]$ tiup cluster start tidb-test

检查集群状态
[tidb@jeames ~]$ tiup cluster display tidb-test

猿创征文|TiDB单机部署最佳实践

在这里插入图片描述