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) 链接能够复制残缺内容到剪贴板。
集群诊断页面
集群诊断是在指定的工夫范畴内,对集群可能存在的问题进行诊断,并将诊断后果和一些集群相干的负载监控信息汇总成一个诊断报告。诊断报告是网页模式,通过浏览器保留后可离线浏览和传阅。
生成诊断报告
如果想对一个工夫范畴内的集群进行诊断,查看集群的负载等状况,能够应用以下步骤来生成一段时间范畴的诊断报告:
- 设置区间的开始工夫
- 设置区间长度,例如 10 min。
- 点击开始。
倡议生成报告的工夫范畴在 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
本文由
传智教育博学谷狂野架构师
教研团队公布。如果本文对您有帮忙,欢送
关注
和点赞
;如果您有任何倡议也可留言评论
或私信
,您的反对是我保持创作的能源。转载请注明出处!