乐趣区

关于java:必须收藏别再乱找TiDB-集群部署教程了这篇保姆级教程来帮你-博学谷狂野架构师

TiDB 根底应用

TiDB dashboard 应用

TiDB Dashboard 是 TiDB 自 4.0 版本起提供的图形化界面,可用于监控及诊断 TiDB 集群。TiDB Dashboard 内置于 TiDB 的 PD 组件中,无需独立部署。

集群详情

查看集群整体 QPS 数值、执行耗时、耗费资源最多的几类 SQL 语句等详情信息。

该页面显示了整个集群的详情,蕴含以下信息:

  • 整个集群的 QPS
  • 整个集群的查问提早
  • 最近一段时间内累计耗时最多的若干 SQL 语句
  • 最近一段时间内运行工夫超过肯定阈值的慢查问
  • 各个实例的节点数和状态
  • 监控及告警信息
QPS

该区域显示最近一小时整个集群的每秒胜利和失败查问数量

留神:该性能仅在部署了 Prometheus 监控组件的集群上可用,未部署监控组件的状况下会显示为失败。

提早

该区域显示最近一小时整个集群中 99.9%、99% 和 90% 查问的提早:

留神:该性能仅在部署了 Prometheus 监控组件的集群上可用,未部署监控组件的状况下会显示为失败。

Top SQL 语句

该区域显示最近一段时间内整个群集中累计耗时最长的 10 类 SQL 语句。查问参数不一样但构造一样的 SQL 会归为同一类 SQL 语句,在同一行中显示

留神:该性能仅在开启了 SQL 语句剖析性能的集群上可用。

最近的慢查问

该区域默认显示最近 30 分钟内整个集群中最新的 10 条慢查问

默认状况下运行工夫超过 300ms 的 SQL 查问即会被计为慢查问并显示在该表格中。

集群信息

该页面上容许用户查看整个集群中 TiDB、TiKV、PD、TiFlash 组件的运行状态及其所在主机的运行状态。

实例列表

实例列表列出了该集群中 TiDB、TiKV、PD 和 TiFlash 组件所有实例的详情信息。

表格列解释

表格蕴含以下列:

  • 地址:实例地址
  • 状态:实例的运行状态
  • 启动工夫:实例的启动工夫
  • 版本:实例版本号
  • 部署门路:实例二进制文件所在目录门路
  • Git 哈希值:实例二进制对应的 Git 哈希值
实例状态解释

实例的运行状态有:

  • 在线 (Up):实例失常运行。
  • 离线 (Down) 或无法访问 (Unreachable):实例未启动或对应主机存在网络问题。
  • 已缩容下线 (Tombstone):实例上的数据已被残缺迁出并缩容结束。仅 TiKV 或 TiFlash 实例存在该状态。
  • 下线中 (Offline):实例上的数据正在被迁出并缩容。仅 TiKV 或 TiFlash 实例存在该状态。
  • 未知 (Unknown):未知的实例运行状态。
主机列表

主机列表列出了该集群中 TiDB、TiKV、PD 和 TiFlash 组件所有实例对应主机的运行状况。

表格列解释

表格蕴含以下列:

  • 地址:主机 IP 地址
  • CPU:主机 CPU 逻辑外围数
  • CPU 使用率:主机以后 1 秒的用户态和内核态 CPU 使用率
  • 物理内存:主机总计的物理内存大小
  • 内存使用率:主机以后内存使用率
  • 部署磁盘:主机上运行实例所在磁盘的文件系统和磁盘挂载门路
  • 磁盘使用率:主机上运行实例所在磁盘的空间使用率
SQL 语句剖析

该页面能够查看所有 SQL 语句在集群上执行状况,罕用于剖析总耗时或单次耗时执行耗时较长的 SQL 语句。

执行列表页

在该页面中,构造统一的 SQL 查问(即便查问参数不统一)都会被归为同一个 SQL 语句,例如 SELECT * FROM employee WHERE id IN (1, 2, 3)select * from EMPLOYEE where ID in (4, 5) 都属于同一 SQL 语句 select * from employee where id in (...)

执行详情页面

在列表中点击任意一行能够进入该 SQL 语句的详情页查看更具体的信息,这此信息包含三大部分:

  • SQL 语句详情:包含 SQL 模板,SQL 模板 ID,以后查看的工夫范畴,执行打算个数以及执行所在的数据库(下图区域 1)
  • 执行打算列表:如果该 SQL 语句有多个执行打算,则显示该列表,能够抉择不同的执行打算,在列表下方会显示选中的执行打算详情;如果只有一个执行打算,则该列表不显示(下图区域 2)
  • 执行打算详情:显示选中的执行打算的详细信息,具体见下一大节(下图区域 3)
慢查问

该页面上能检索和查看集群中所有慢查问。

默认状况下,执行工夫超过 300ms 的 SQL 查问就会被视为慢查问,被记录到慢查问日志中,并可通过本性能对记录到的慢查问进行查问。可调整 tidb_slow_log_threshold SESSION 变量或 TiDB slow-threshold 参数调整慢查问阈值。

若敞开了慢查问日志,则本性能不可用。慢查问日志默认开启,可通过批改 TiDB 配置 enable-slow-log 开启或禁用。

慢查问列表页

可按工夫范畴、慢查问语句关联的数据库、SQL 关键字、SQL 类型、显示的慢查问语句数量等条件过滤,筛选慢查问句。如下所示,默认显示 30 分钟内最近 100 条慢查问。

查看执行详情

在列表中点击任意一行能够显示该慢查问的具体执行信息,蕴含:

  • SQL:慢查问 SQL 文本(
  • 执行打算:慢查问的执行打算
  • 其余分类好的 SQL 执行信息

点击 开展 (Expand) 链接能够开展相应项的残缺内容,点击 复制 (Copy) 链接能够复制残缺内容到剪贴板。

集群诊断页面

集群诊断是在指定的工夫范畴内,对集群可能存在的问题进行诊断,并将诊断后果和一些集群相干的负载监控信息汇总成一个诊断报告。诊断报告是网页模式,通过浏览器保留后可离线浏览和传阅。

生成诊断报告

如果想对一个工夫范畴内的集群进行诊断,查看集群的负载等状况,能够应用以下步骤来生成一段时间范畴的诊断报告:

  1. 设置区间的开始工夫
  2. 设置区间长度,例如 10 min。
  3. 点击开始。

倡议生成报告的工夫范畴在 1 min ~ 60 min 内,目前不倡议生成超过 1 小时范畴的报告。

点击 开始 (start) 后,会看到以下界面, 生成进度 (progress) 是生成报告的进度条,生成报告实现后,点击 查看报告 (View Full Report) 即可。

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 操作系统,执行一行命令即可装置胜利:

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

该命令将 TiUP 装置在 $HOME/.tiup 文件夹下,之后装置的组件以及组件运行产生的数据也会放在该文件夹下。同时,它还会主动将 $HOME/.tiup/bin 退出到 Shell Profile 文件的 PATH 环境变量中,这样你就能够间接应用 TiUP 了。

配置 TiUP 环境

从新申明全局环境变量

COPYsource .bash_profile
查看 TiUP 工具是否装置
COPYwhich tiup
装置 cluster 组件
COPYtiup cluster
降级 cluster 组件

如果机器曾经装置 TiUP cluster,须要更新软件版本

COPYtiup update --self && tiup update cluster

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

编辑部署文件

请依据不同的集群拓扑,编辑 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
COPY# # 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

执行集群部署命令

命令格局

COPYtiup 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 反对的版本

COPYtiup list tidb

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

执行部署命令

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

上面输出 y 持续后输出明码进行装置界面

进入装置界面,期待装置即可

如果呈现 deployed successfully 示意部署胜利, 集群名称是tidb-cluster

启动集群

COPYtiup cluster start tidb-cluster

查看节点状态

COPYtiup cluster display tidb-cluster

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

测试 TiDB 集群

Mysql 连贯集群

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

装置 MySql 客户端
COPYyum -y install mysql
MySql 客户端连贯

拜访 TiDB 数据库,明码为空

COPYmysql -h 192.168.64.146 -P 4000 -u root
第三方客户端拜访 Mysql

应用 SQLyog 拜访 TiDB

创立 TiDB 连贯

连贯后就能够操作数据库了

拜访 Grafana 监控

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

拜访 Dashboard

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

查看集群列表

COPYtiup cluster list

查看集群拓扑

COPYtiup cluster display tidb-cluster

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 文件增加扩容拓扑配置

COPYvi scale-out.yaml
COPYtikv_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
执行扩容命令
命令格局
COPYtiup cluster scale-out <cluster-name> scale-out.yaml -p
  • cluster-name:TiDB 集群名称
  • p:应用明码形式登录以后机器
执行命令
COPYtiup cluster scale-out tidb-cluster scale-out.yaml -p

输出命令后,确认输出机器明码

呈现 successfully 示意节点扩容胜利

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

咱们看到 Tikv 曾经减少了一个节点

通过 dashboard 查看

也能够看到扩容的节点信息

缩容 TiKV 节点

查看节点信息
COPYtiup cluster display tidb-cluster

以后 TiKV 是 4 个节点

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

参数解释

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

呈现确认操作后,输出 y 确认执行就能够执行缩容操作了

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

咱们看到须要缩容的节点状态是 Tombstone 阐明曾经下线,下线须要肯定工夫,下线节点的状态变为 Tombstone 就阐明下线胜利

通过 dashboard 查看

也能够看到缩容的节点曾经不存在了,阐明缩容胜利

博客内容遵循 署名 - 非商业性应用 - 雷同形式共享 4.0 国内 (CC BY-NC-SA 4.0) 协定

本文永恒链接是:http://www.baiyp.ren/TIDB%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.html

更新于:2021 年 5 月 27 日

集群部署

TIDB

本文由 传智教育博学谷狂野架构师 教研团队公布。

如果本文对您有帮忙,欢送 关注 点赞 ;如果您有任何倡议也可 留言评论 私信,您的反对是我保持创作的能源。

转载请注明出处!

退出移动版