抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

TIDB集群部署

Database of Databases - TiDB

环境要求

操作系统建议配置

​ TiDB 作为一款开源分布式 NewSQL 数据库,可以很好的部署和运行在 Intel 架构服务器环境、ARM 架构的服务器环境及主流虚拟化环境,并支持绝大多数的主流硬件网络。作为一款高性能数据库系统,TiDB 支持主流的 Linux 操作系统环境。

Linux 操作系统平台 版本
Red Hat Enterprise Linux 7.3 及以上
CentOS 7.3 及以上
Oracle Enterprise Linux 7.3 及以上
Ubuntu LTS 16.04 及以上

服务器建议配置

​ TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台或者 ARM 架构的硬件服务器平台。对于开发,测试,及生产环境的服务器硬件配置(不包含操作系统 OS 本身的占用)有以下要求和建议:

开发及测试环境
组件 CPU 内存 本地存储 网络 实例数量(最低要求)
TiDB 8 核+ 16 GB+ 无特殊要求 千兆网卡 1(可与 PD 同机器)
PD 4 核+ 8 GB+ SAS, 200 GB+ 千兆网卡 1(可与 TiDB 同机器)
TiKV 8 核+ 32 GB+ SSD, 200 GB+ 千兆网卡 3
TiFlash 32 核+ 64 GB+ SSD, 200 GB+ 千兆网卡 1
TiCDC 8 核+ 16 GB+ SAS, 200 GB+ 千兆网卡 1
生产环境
组件 CPU 内存 硬盘类型 网络 实例数量(最低要求)
TiDB 16 核+ 32 GB+ SAS 万兆网卡(2 块最佳) 2
PD 4核+ 8 GB+ SSD 万兆网卡(2 块最佳) 3
TiKV 16 核+ 32 GB+ SSD 万兆网卡(2 块最佳) 3
TiFlash 48 核+ 128 GB+ 1 or more SSDs 万兆网卡(2 块最佳) 2
TiCDC 16 核+ 64 GB+ SSD 万兆网卡(2 块最佳) 2
监控 8 核+ 16 GB+ SAS 千兆网卡 1

环境准备

准备一台部署主机,确保其软件满足需求:

  • 推荐安装 CentOS 7.3 及以上版本
  • Linux 操作系统开放外网访问,用于下载 TiDB 及相关软件安装包

最小规模的 TiDB 集群拓扑

实例 个数 IP 配置
TiKV 3 192.168.64.146 避免端口和目录冲突
TiDB 1 192.168.64.146 默认端口 全局目录配置
PD 1 192.168.64.146 默认端口 全局目录配置
TiFlash 1 192.168.64.146 默认端口 全局目录配置
Monitoring & Grafana 1 192.168.64.146 默认端口 全局目录配置

安装TiUP

什么是TiUP

​ 从 TiDB 4.0 版本开始,TiUP 作为新的工具,承担着包管理器的角色,管理着 TiDB 生态下众多的组件,如 TiDB、PD、TiKV 等。用户想要运行 TiDB 生态中任何组件时,只需要执行 TiUP 一行命令即可,相比以前,极大地降低了管理难度。

安装TiUP组件

使用普通用户登录中控机,以 tidb 用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成

TiUP 安装过程十分简洁,无论是 Darwin 还是 Linux 操作系统,执行一行命令即可安装成功:

1
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

​ 该命令将 TiUP 安装在 $HOME/.tiup 文件夹下,之后安装的组件以及组件运行产生的数据也会放在该文件夹下。同时,它还会自动将 $HOME/.tiup/bin 加入到 Shell Profile 文件的 PATH 环境变量中,这样你就可以直接使用 TiUP 了。

image-20210308095820951

配置TiUP环境

重新声明全局环境变量

1
source .bash_profile
检查TiUP 工具是否安装
1
which tiup

image-20210308100108540

安装 cluster 组件
1
tiup cluster

image-20210308100218193

升级cluster组件

如果机器已经安装 TiUP cluster,需要更新软件版本

1
tiup update --self && tiup update cluster

预期输出 “Update successfully!” 字样。

image-20210308100305454

编辑部署文件

请根据不同的集群拓扑,编辑 TiUP 所需的集群初始化配置文件。

常见的部署场景
最小拓扑架构

​ 最基本的集群拓扑,包括 tidb-server、tikv-server、pd-server,适合 OLTP 业务。

增加 TiFlash 拓扑架构

​ 包含最小拓扑的基础上,同时部署 TiFlash。TiFlash 是列式的存储引擎,已经逐步成为集群拓扑的标配。适合 Real-Time HTAP 业务。

增加 TiCDC 拓扑架构

​ 包含最小拓扑的基础上,同时部署 TiCDC。TiCDC 是 4.0 版本开始支持的 TiDB 增量数据同步工具,支持多种下游 (TiDB/MySQL/MQ)。相比于 TiDB Binlog,TiCDC 有延迟更低、天然高可用等优点。在部署完成后,需要启动 TiCDC,通过 cdc cli 创建同步任务。

增加 TiDB Binlog 拓扑架构

​ 包含最小拓扑的基础上,同时部署 TiDB Binlog。TiDB Binlog 是目前广泛使用的增量同步组件,可提供准实时备份和同步功能。

增加 TiSpark 拓扑架构

​ 包含最小拓扑的基础上,同时部署 TiSpark 组件。TiSpark 是 PingCAP 为解决用户复杂 OLAP 需求而推出的产品。TiUP cluster 组件对 TiSpark 的支持目前为实验性特性。

混合部署拓扑架构

​ 适用于单台机器,混合部署多个实例的情况,也包括单机多实例,需要额外增加目录、端口、资源配比、label 等配置。

单机极简部署

部署主机软件和环境要求:

  • 部署需要使用部署主机的 root 用户及密码
  • 部署主机关闭防火墙或者开放 TiDB 集群的节点间所需端口
单机极简拓扑
实例 IP 开放端口
grafana 192.168.64.152 3000
pd 192.168.64.152 2379/2380
prometheus 192.168.64.152 9090
tidb 192.168.64.152 4000/10080
tiflash 192.168.64.152 9000/8123/3930/20170/20292/8234
tikv 192.168.64.152 20160/20180
tikv 192.168.64.152 20161/20181
tikv 192.168.64.152 20162/20182
编辑配置文件

按下面的配置模板,编辑配置文件,命名为 topo.yaml

  • user: "tidb":表示通过 tidb 系统用户(部署会自动创建)来做集群的内部管理,默认使用 22 端口通过 ssh 登录目标机器
  • replication.enable-placement-rules:设置这个 PD 参数来确保 TiFlash 正常运行
  • host:设置为本部署主机的 IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# # 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: 192.168.64.146

tidb_servers:
- host: 192.168.64.146

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

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

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

tiflash_servers:
- host: 192.168.64.146

monitoring_servers:
- host: 192.168.64.146

grafana_servers:
- host: 192.168.64.146

执行集群部署命令

命令格式

1
tiup cluster deploy <cluster-name> <tidb-version> ./topo.yaml --user root -p
参数解释
  • 参数 <cluster-name> 表示设置集群名称
  • 参数 <tidb-version> 表示设置集群版本,可以通过 tiup list tidb 命令来查看当前支持部署的 TiDB 版本
  • 参数: --user root通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。

检查TiDB最新版本

可以通过执行 tiup list tidb 来查看 TiUP 支持的版本

1
tiup list tidb

经过执行发现 最新可用的TiDB版本是 v4.0.11

执行部署命令

1
tiup cluster deploy tidb-cluster 4.0.11 ./topo.yaml --user root -p

下面输入y继续后输入密码进行安装界面

image-20210308140623236

进入安装界面,等待安装即可

image-20210308102532412

如果出现deployed successfully表示部署成功,集群名称是tidb-cluster

image-20210308103047705

启动集群

1
tiup cluster start tidb-cluster

image-20210308103329722

查看节点状态

1
tiup cluster display tidb-cluster

所有节点都是Up状态说明都已经启动就绪了

image-20210309113426102

测试TiDB集群

Mysql连接集群

TiDB的连接端口默认是4000, 密码是空,可用使用Mysql客户端以及第三方工具进行连接

安装MySql客户端
1
yum -y install mysql
MySql客户端连接

访问 TiDB 数据库,密码为空

1
mysql -h 192.168.64.146 -P 4000 -u root

image-20210308104058321

第三方客户端访问Mysql

使用SQLyog访问TiDB

创建TiDB连接

image-20210308104229510

连接后就可以操作数据库了

image-20210308104434635

访问Grafana监控

通过 http://{grafana-ip}:3000 访问集群 Grafana 监控页面,默认用户名和密码均为 admin。

image-20210308104706041

访问Dashboard

通过 http://{pd-ip}:2379/dashboard 访问集群 TiDB Dashboard监控页面,默认用户名为 root,密码为空。

image-20210308104829297

查看集群列表

1
tiup cluster list

image-20210308110936945

查看集群拓扑

1
tiup cluster display tidb-cluster

image-20210308111048597

TiDB扩缩容

当前集群部署拓扑

实例 IP 端口 存储路径 部署路径
grafana 192.168.64.152 3000 /tidb-deploy/grafana-3000
pd 192.168.64.152 2379/2380 /tidb-data/pd-2379 /tidb-deploy/pd-2379
prometheus 192.168.64.152 9090 /tidb-data/prometheus-9090 /tidb-deploy/prometheus-9090
tidb 192.168.64.152 4000/10080 /tidb-deploy/tidb-4000
tiflash 192.168.64.152 9000/8123/3930/20170/20292/8234 /tidb-data/tiflash-9000 /tidb-deploy/tiflash-9000
tikv 192.168.64.152 20160/20180 /tidb-data/tikv-20160 /tidb-deploy/tikv-20160
tikv 192.168.64.152 20161/20181 /tidb-data/tikv-20161 /tidb-deploy/tikv-20161
tikv 192.168.64.152 20162/20182 /tidb-data/tikv-20162 /tidb-deploy/tikv-20162

扩容TiKV节点

需要扩容一个TiKV节点

实例 IP 端口 存储路径 部署路径
tikv 192.168.64.152 20163/20183 /tidb-data/tikv-20163 /tidb-deploy/tikv-20163
编写扩容脚本

在 scale-out.yaml 文件添加扩容拓扑配置

1
vi scale-out.yaml
1
2
3
4
5
6
7
8
9
10
tikv_servers:
- host: 192.168.64.152
ssh_port: 22
port: 20163
status_port: 20183
deploy_dir: /tidb-deploy/tikv-20163
data_dir: /tidb-data/tikv-20163
config:
server.labels:
host: logic-host-4
执行扩容命令
命令格式
1
tiup cluster scale-out <cluster-name> scale-out.yaml -p
  • cluster-name:TiDB集群名称
  • p:使用密码方式登录当前机器
执行命令
1
tiup cluster scale-out tidb-cluster scale-out.yaml -p

输入命令后,确认输入机器密码

image-20210308152355455

出现successfully表示节点扩容成功

image-20210308152524912

验证扩容信息
查看节点信息
1
tiup cluster display tidb-cluster

我们看到Tikv已经增加了一个节点

image-20210308152647801

通过dashboard查看

也可以看到扩容的节点信息

image-20210308152905774

缩容TiKV节点

查看节点信息
1
tiup cluster display tidb-cluster

当前TiKV是4个节点

image-20210308152647801

执行缩容操作
缩容命令
1
tiup cluster scale-in <cluster-name> --node 192.168.64.152:20163

参数解释

  • cluster-name:集群名称
  • node:需要删除的节点地址
执行命令
1
tiup cluster scale-in tidb-cluster --node 192.168.64.152:20163

出现确认操作后,输入y确认执行就可以执行缩容操作了

image-20210308153500262

验证缩容信息
查看节点信息
1
tiup cluster display tidb-cluster

我们看到需要缩容的节点状态是Tombstone说明已经下线,下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功

image-20210308153639934

通过dashboard查看

也可以看到缩容的节点已经不存在了,说明缩容成功

image-20210308153901260

评论