0
点赞
收藏
分享

微信扫一扫

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

文章目录

  • ​​前言​​
  • ​​📢 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_02

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单机部署最佳实践_原力计划_03

✨ 3.2 创建用户

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

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

✨ 3.3 配置免密码登录

编辑/etc/sudoers文件,文末加入:
tidb ALL=(ALL) NOPASSWD:ALL

如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令,
或者允许某些用户使用sudo时不需要输入密码,一般修改/etc/sudoers文件

cat >> /etc/sudoers << "EOF"
tidb ALL=(ALL) NOPASSWD:ALL
EOF

✨ 3.4 创建tidb用户ssh key

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

猿创征文|TiDB单机部署最佳实践_数据库_05

✨ 3.5 解压安装包安装

1.切换到tidb用户,新建以下两个目录
[tidb@jeames ~]$ mkdir tidb-deploy
[tidb@jeames ~]$ mkdir tidb-data

2.解压Tidb server安装包
[tidb@jeames ~]$ chmod +x tidb-community*
[tidb@jeames ~]$ tar -zxvf tidb-community-server-v6.3.0-linux-amd64.tar.gz

3.执行instal文件
[tidb@jeames ~]$ sh /home/tidb/tidb-community-server-v6.3.0-linux-amd64/local_install.sh

根据完成后提示中的第一点,执行如下命令,具体命令根据提示中的来:
1. source /home/tidb/.bash_profile
2. Have a try: tiup playground

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

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


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

✨ 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.54
tidb_servers:
- host: 192.168.1.54
tikv_servers:
- host: 192.168.1.54
monitoring_servers:
- host: 192.168.1.54
grafana_servers:
- host: 192.168.1.54
alertmanager_servers:
- host: 192.168.1.54
EOF


--以下为生产集群部署命令
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.6
tidb_servers:
- host: 10.0.1.7
- host: 10.0.1.8
- host: 10.0.1.9
tikv_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3
monitoring_servers:
- host: 10.0.1.4
grafana_servers:
- host: 10.0.1.4
alertmanager_servers:
- host: 10.0.1.4

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

✨ 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单机部署最佳实践_tidb_09

参数说明:

1) 通过 TiUP cluster 部署的集群名称为 tidb-test
2)部署版本为 v6.3.0,其他版本可以执行 tiup list tidb 获取
[tidb@jeames ~]$ tiup list tidb
Available versions for tidb:
Version Installed Release Platforms
------- --------- ------- ---------
v6.3.0 YES 2022-09-30T11:00:18+08:00 linux/amd64

3)初始化配置文件为 topology.yaml
4)--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 success
Enabling component tikv
Enabling instance 192.168.1.54:20160
Enable instance 192.168.1.54:20160 success
Enabling component tidb
Enabling instance 192.168.1.54:4000
Enable instance 192.168.1.54:4000 success
Enabling component prometheus
Enabling instance 192.168.1.54:9090
Enable instance 192.168.1.54:9090 success
Enabling component grafana
Enabling instance 192.168.1.54:3000
Enable instance 192.168.1.54:3000 success
Enabling component alertmanager
Enabling instance 192.168.1.54:9093
Enable instance 192.168.1.54:9093 success
Enabling component node_exporter
Enabling instance 192.168.1.54
Enable 192.168.1.54 success
Enabling component blackbox_exporter
Enabling instance 192.168.1.54
Enable 192.168.1.54 success
Cluster `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` successfully
The root password of TiDB database has been changed.
The new password is: 'Z2h^q6tBV7058bn&=%'.

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

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

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

以上输出的结果中,可以看到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单机部署最佳实践_mysql_12


猿创征文|TiDB单机部署最佳实践_数据库_13

📢 5. tiup cluster 命令

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

猿创征文|TiDB单机部署最佳实践_数据库_14

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

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

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


举报

相关推荐

0 条评论