
1 基础知识
1.1 TiDB集群基础知识
1.1.1 软件介绍
– TiDB是PingCAP公司自主设计研发的开源分布式关系型数据库
– TiDB是一款同时支持在线事务处理和在线分析处理的融合型分布式数据库
– TiDB具备水平扩容或者缩容、金融级高可用、实时HTAP云原生分布式数据库
– TiDB兼容MySQL协议和MySQL生态等重要特性,支持在本地和云上部署
1.1.2 TiDB的角色划分
– TiDB(SQL层),负责SQL查询处理,包括解析、优化和执行(提供与MySQL兼容的接口,支持事务、分布式查询等)
– PD(Placement Driver),负责集群元数据的管理和调度,维护数据分布并进行负载均衡,并管理TiKV节点状态。
– TiKV(分布式存储层),实现高性能分布式键值存储,负责数据存取,支持ACID事务、数据分片和复制,确保数据高可用和一致性。
– TiFlash(列存储和分析),负责分析性查询,支持TiDB内部进行实时分析。支持列存储和快速查询,适用于OLAP工作负载。
– TiCDC(Change Dat Capture),负责数据同步,捕获数据变更和同步到Kafak、Elasticsearch等,支持实时数据流处理和数据迁移。
1.2 TiProxy的基础知识
1.2.1 TiProxy的简介
– TiProxy是PingCAP的官方代理组件
– TiProxy放置在客户端和TiDB server之间
– TiProxy为TiDB提供负载均衡、连接保持/服务发现等功能
– TiProxy为可选组件,你可以选择第三方代理组件,或者直连TiDB server
1.2.2 TiProxy的架构
1.2.3 TiProxy的功能
– 连接迁移,支持客户端连接不变的情况下后端迁移到另一台TiDB server。
– 故障迁移,当后端TiDB server故障,TiProxy自动感知并自动连接迁移。
– 服务发现,TiProxy能自动发现新的TiDB server节点。
– 一键部署,TiProxy一键自动集成到TiUP、TiDB Operator、TiDB Dashboard和Grafana中。
1.2.4 TiProxy的使用场景
– 连接保持场景,TiProxy会自动维持与TiDB Server之间的连接,防止出错。
– 频繁扩缩容场景,支持云端根据负载自动扩缩容TiDB server的节点。
– CPU负载不均场景,TiProxy支持根据CPU使用频率迁移连接,实现负载均衡。
– TiDB server OOM场景,支持提前感知TiDB server OOM风险而迁移。
1.2.5 TiProxy的不适用场景
– 性能敏感场景,性能低于HAProxy等负载均衡器,因此会降低QPS
– 成本敏感场景,如果已使用硬件负载均衡器、虚拟IP或Kubernetes自带负载均衡器设备,增加TiProxy会增加成本。
– TiDB server意外下线场景,如果TiDB server意外下线,则客户端连接会断开。
1.3 操作系统和平台需求
1.3.1 满足企业级生产质量要求的系统
– Red Hat Enterprise Linux 8.4 及以上的 8.x 版本(x86_64,ARM 64)
– Amazon Linux 2(x86_64,ARM 64)
– Amazon Linux 2023(x86_64,ARM 64)
– Rocky Linux 9.1 及以上的版本(x86_64,ARM 64)
– 麒麟欧拉版 V10 SP1/SP2/SP3(从 v7.5.5 开始支持 SP3,x86_64,ARM 64)
– 统信操作系统 (UOS) V20(x86_64,ARM 64)
– openEuler 22.03 LTS SP1/SP3(x86_64,ARM 64)
1.3.2 不保障企业级生产质量要求的系统
– macOS 12 (Monterey) 及以上的版本(x86_64,ARM 64)
– Oracle Enterprise Linux 8 及以上的版本(x86_64,只支持RHCK内核,不支持UEK内核)
– Ubuntu LTS 20.04 及以上的版本(x86_64)
– CentOS Stream 8(x86_64,ARM 64,2024年5月31日终止编译)
– Debian 10 (Buster) 及以上的版本(x86_64)
– Fedora 38 及以上的版本(x86_64,ARM 64)
– openSUSE Leap 15.5 以上的版本(不包含 Tumbleweed, x86_64)
– SUSE Linux Enterprise Server 15(x86_64)
1.4 编译和运行TiDB所依赖的库
– Golang 1.23及以上版本
– Rust nightly-2023-12-28及以上版本
– GCC 7.x
– LLVM17.0及以上版本
– glibc(2.28-151.el8版本,运行时所需的依赖库)
1.5 软件配置要求
1.5.1 中控机软件配置
– sshpass 1.06及以上
– TiUP 1.5.0及以上
1.5.2 目标主机建议配置软件
– sshpass 1.06及以上
– numa 2.0.12及以上
– tar 任意版本
1.6 服务器配置要求
1.6.1 开发及测试环境
– TiDB 8核+ 16GB+ 磁盘空间要求 千兆网卡 1实例(可与PD同机器)
– PD 4核+ 8GB+ SAS,200GB+ 千兆网卡 1实例(可与TiDB同机器)
– TiKV 8核+ 32GB+ SSD,200GB+ 千兆网卡 3实例
– TiFlash 32核+ 64GB+ SSD,200 GB+ 千兆网卡 1实例
– TiCDC 8核+ 16GB+ SAS,200GB+ 千兆网卡 1实例
1.6.2 生产环境
– TiDB 16核+ 48GB+ SSD 万兆网卡(2 块最佳) 2实例
– PD 8核+ 16GB+ SSD 万兆网卡(2 块最佳) 3实例
– TiKV 16核+ 64GB+ SSD 万兆网卡(2块最佳) 3实例
– TiFlash 48核+ 128GB+ 一个以上SSDs 万兆网卡(2块最佳) 2实例
– TiCDC 16核+ 64GB+ SSD 万兆网卡(2块最佳) 2实例
– 监控 8核+ 16GB+ SAS 千兆网卡 1实例
1.7 网络要求
– TiDB,4000,应用及 DBA 工具访问通信端口
– TiDB,10080,TiDB 状态信息上报通信端口
– TiKV,20160,TiKV 通信端口
– TiKV,20180,TiKV 状态信息上报通信端口
– PD,2379,提供 TiDB 和 PD 通信端口
– PD,2380,PD 集群节点间通信端口
– TiFlash,9000,TiFlash TCP 服务端口
– TiFlash,3930,TiFlash RAFT 服务和 Coprocessor 服务端口
– TiFlash,20170,TiFlash Proxy 服务端口
– TiFlash,20292,Prometheus 拉取 TiFlash Proxy metrics 端口
– TiFlash,8234,Prometheus 拉取 TiFlash metrics 端口
– CDC,8300,CDC 通信接口
– Monitoring,9090,Prometheus 服务通信端口
– Monitoring,12020,NgMonitoring 服务通信端口
– Node_exporter,9100,TiDB 集群每个节点的系统信息上报通信端口
– Blackbox_exporter,9115,Blackbox_exporter 通信端口,用于 TiDB 集群端口监控
– Grafana,3000,Web 监控服务对外服务和客户端(浏览器)访问端口
– Alertmanager,9093,告警 web 服务端口
– Alertmanager,9094,告警通信端口
1.8 磁盘空间要求
– TiDB,日志盘建议最少预留30 GB;v6.5.0 及以上版本默认启用了 Fast Online DDL 对添加索引等 DDL 操作进行加速(通过变量 tidb_ddl_enable_fast_reorg 控制)。如果业务中可能存在针对大对象的 DDL 操作,或需要使用 IMPORT INTO SQL 语句导入数据,推荐为 TiDB 准备额外的 SSD 磁盘空间(建议 100 GB+)。配置方式详见设置 TiDB 节点的临时空间。健康水位使用率低于90%;
– PD,数据盘和日志盘建议最少各预留20GB;健康水位使用率低于90%;
– TiKV,数据盘和日志盘建议最少各预留100GB;健康水位使用率低于80%;
– TiFlash,数据盘建议最少预留100GB,日志盘建议最少预留30GB;健康水位使用率低于80%;
– TiUP,中控机:部署一个版本的TiDB集群占用不超过1GB空间,部署多个版本集群所占用的空间会相应增加;部署服务器(实际运行 TiDB 各组件的机器):TiFlash 占用约 700 MB 空间,其他组件(PD、TiDB、TiKV 等)各占用约 200 MB 空间。同时,部署过程会占用小于 1 MB 临时空间(/tmp)存放临时文件;健康水位使用率不涉及;
– Ngmonitoring,Conprof:3 x 1 GB x 组件数量(表示每个组件每天占用约 1 GB,总共 3 天) + 20 GB 预留空间;Top SQL:30 x 50 MB x 组件数量(每个组件每天占用约 50 MB,总共 30 天);Top SQL 和 Conprof 共享预留空间;健康水位使用率不涉及;
2 最佳实践
2.1 系统信息
TiDB集群:
OS = Oracle Linux Server 8.x x86_64
Host Name = hd2[4-9].cmdschool.org
IP Address = 10.10.200.1[18-23]
TiProxy代理服务器:
OS = Oracle Linux Server 8.x x86_64
Host Name = hd19-21.cmdschool.org
IP Address = 10.10.200.12[4-6]
2.2 系统配置
In All
2.2.1 切换到红帽兼容内核
根据兼容性的要求,你需要将系统切换到红帽的内核,按如下章节执行即可,
2.2.2 设置名称解析
vim /etc/hosts
加入如下设置,
10.10.200.124 hd19 hd19.cmdschool.org 10.10.200.125 hd20 hd20.cmdschool.org 10.10.200.126 hd21 hd21.cmdschool.org 10.10.200.118 hd24 hd24.cmdschool.org 10.10.200.119 hd25 hd25.cmdschool.org 10.10.200.120 hd26 hd26.cmdschool.org 10.10.200.121 hd27 hd27.cmdschool.org 10.10.200.122 hd28 hd28.cmdschool.org 10.10.200.123 hd29 hd29.cmdschool.org
2.2.3 配置文件系统
mkfs.ext4 /dev/mapper/ds-data
建议使用ext4格式化磁盘分区,并使用如下参数挂载,
vim /etc/fstab
加入如下参数,
/dev/mapper/ds-data /data ext4 defaults,nodelalloc,noatime 0 2
注:nodelalloc 是必选参数,否则 TiUP 安装时检测无法通过;noatime 是可选建议参数。
新建并重新挂在文件系统系统,
mkdir /data systemctl daemon-reload mount -a
2.2.4 关闭防火墙
systemctl stop firewalld.service systemctl disable firewalld.service
2.2.5 设置NTP客户端
systemctl status chronyd.service
服务如果运行,请检查当前ntp时间服务器是否符合要求,
grep ^server /etc/chrony.conf
企业正常情况下指向内网的某个NTP服务器,
server 10.168.0.58 iburst
2.2.6 设置SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2.3 应用配置
2.3.1 创建运行用户
In All
useradd tidb echo tidbpwd | passwd --stdin tidb
2.3.2 设置TiDB节点的临时空间
In All
mkdir -p /data/tidb/tidb-deploy/tempdir chown -R tidb:tidb /data/tidb/
2.3.3 配置用户的limits
In All
cat << EOF >>/etc/security/limits.conf tidb soft nofile 1000000 tidb hard nofile 1000000 tidb soft stack 32768 tidb hard stack 32768 EOF
2.3.4 设置sudo免密码
In All
visudo
加入如下配置,
tidb ALL=(ALL) NOPASSWD: ALL
2.3.5 设置公钥认证
In hd24
su - tidb ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub hdxxx
以上命令将hd24号节点的公钥复制到其他节点,以便实现hd24号节点到其他节点免输密码。如果你对公钥认证不是很理解,你可以参阅如下章节,
2.3.6 安装NUMA
In All
dnf install -y numactl
2.4 系统性能优化
In All
2.4.1 关闭swap
swapon --show
命令查看当前swap的状态,以下命令临时关闭swap,
swapoff -a sysctl -w vm.swappiness=0 echo "vm.swappiness=0">> /etc/sysctl.conf
永久关闭swap,你需要使用如下命令,
vim /etc/fstab
然后,注解以下行,
#/dev/mapper/ol-swap none swap defaults 0 0
2.4.2 关闭透明大页内存
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local chmod +x /etc/rc.d/rc.local
你可以使用如下命令查看设置,
cat /sys/kernel/mm/transparent_hugepage/enabled
可见如下显示,
always madvise [never]
2.4.3 设置设备的I/O调度器
echo mq-deadline > /sys/block/sdb/queue/scheduler echo 'echo mq-deadline > /sys/block/sdb/queue/scheduler' >> /etc/rc.local chmod +x /etc/rc.d/rc.local
设置完成后,可使用如下命令他检查配置,
cat /sys/block/sdb/queue/scheduler
可见如下显示,
[mq-deadline] kyber bfq none
2.4.4 设置CPU频率调节器
cpupower frequency-set -g performance
以上命令只适用于物理服务器,如果想查看当前设置,请使用如下命令,
cpupower frequency-info --policy
可见如下设置,
analyzing CPU 0: current policy: frequency should be within 1.80 GHz and 1.80 GHz. The governor "performance" may decide which speed to use within this range.
注:表示cpufreq的节能策略为“performance”,是我们推荐的模式。
2.4.5 多数据目录的操作系统的tuned策略(可选)
tuned-adm list
一半会有如下显示,
Available profiles: - accelerator-performance - Throughput performance based tuning with disabled higher latency STOP states - aws - Optimize for aws ec2 instances - balanced - General non-specialized tuned profile - desktop - Optimize for the desktop use-case - epyc-eda - Optimize for EDA compute workloads on AMD EPYC CPUs - hpc-compute - Optimize for HPC compute workloads - intel-sst - Configure for Intel Speed Select Base Frequency - latency-performance - Optimize for deterministic performance at the cost of increased power consumption - network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance - network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks - optimize-serial-console - Optimize for serial console use. - powersave - Optimize for low power consumption - throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads - virtual-guest - Optimize for running inside a virtual guest - virtual-host - Optimize for running KVM guests Current active profile: throughput-performance
如上所示,当前激活的策略是“throughput-performance”,我们使用如下命令创建新的策略,
mkdir /etc/tuned/balanced-tidb-optimal/ vim /etc/tuned/balanced-tidb-optimal/tuned.conf
加入如下配置,
[main] include=balanced [cpu] governor=performance [vm] transparent_hugepages=never [disk] devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81) elevator=noop
磁盘的唯一标识,可以通过如下命令查询,
udevadm info --name=/dev/sdb | grep ID_SERIAL
然后,执行如下命令使策略生效,
tuned-adm profile balanced-tidb-optimal
2.4.6 优化sysctl参数
echo "fs.file-max = 1000000">> /etc/sysctl.conf echo "net.core.somaxconn = 32768">> /etc/sysctl.conf echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf echo "vm.overcommit_memory = 1">> /etc/sysctl.conf echo "vm.min_free_kbytes = 1048576">> /etc/sysctl.conf sysctl -p
2.5 离线部署TiUP
In hd24
2.5.1 切换用户身份
su - tidb
2.5.2 下载软件包
sudo mkdir -p /data/tidb/install sudo chown tidb:tidb /data/tidb/install/ cd /data/tidb/install wget https://download.pingcap.org/tidb-community-server-v8.5.1-linux-amd64.tar.gz wget https://download.pingcap.org/tidb-community-toolkit-v8.5.1-linux-amd64.tar.gz
2.5.3 解压软件包
cd /data/tidb/install tar xzvf tidb-community-server-v8.5.1-linux-amd64.tar.gz tar xzvf tidb-community-toolkit-v8.5.1-linux-amd64.tar.gz
2.5.4 安装TiUP组件
cd /data/tidb/install sh tidb-community-server-v8.5.1-linux-amd64/local_install.sh source /home/tidb/.bash_profile
然后,你可以尝试执行以下命令验证安装,
tiup -v
可见如下输出,
1.16.1 v1.16.1-nightly-12 Go Version: go1.21.13 Git Ref: master GitHash: f57aa1daf54bf24cec85613d21c2d771bbf6a12b
2.5.5 合并离线组件到server目录
cd /data/tidb/install cd tidb-community-server-v8.5.1-linux-amd64/ cp -rp keys ~/.tiup/ tiup mirror merge ../tidb-community-toolkit-v8.5.1-linux-amd64/
2.6 部署TiDB集群
In hd24
2.6.1 创建集群初始化配置文件
mkdir -p /data/tidb/install/config-yaml cd /data/tidb/install/config-yaml tiup cluster template > topology.yaml
2.6.2 修改集群初始化配置文件
cd /data/tidb/install/config-yaml cp topology.yaml topology.yaml.default egrep -v "^#|^$|^.*#" topology.yaml.default > topology.yaml vim /data/tidb/install/config-yaml/topology.yaml
配置修改如下,
global: user: "tidb" ssh_port: 22 deploy_dir: "/data/tidb/tidb-deploy" data_dir: "/data/tidb/tidb-data" listen_host: 0.0.0.0 arch: "amd64" monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115 deploy_dir: "/data/tidb/tidb-deploy/monitored-9100" data_dir: "/data/tidb/tidb-data/monitored-9100" log_dir: "/data/tidb/tidb-deploy/monitored-9100/log" server_configs: tidb: log.slow-threshold: 300 tikv: readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true pd: schedule.leader-schedule-limit: 4 schedule.region-schedule-limit: 2048 schedule.replica-schedule-limit: 64 replication.enable-placement-rules: true tiflash: profiles.default.max_memory_usage: 0 profiles.default.max_memory_usage_for_all_queries: 0 tiflash-learner: raftstore.apply-pool-size: 4 raftstore.store-pool-size: 4 pd_servers: - host: hd26.cmdschool.org name: "pd-26" deploy_dir: "/data/tidb/tidb-deploy/pd-2379" data_dir: "/data/tidb/tidb-data/pd-2379" log_dir: "/data/tidb/tidb-deploy/pd-2379/log" - host: hd27.cmdschool.org name: "pd-27" deploy_dir: "/data/tidb/tidb-deploy/pd-2379" data_dir: "/data/tidb/tidb-data/pd-2379" log_dir: "/data/tidb/tidb-deploy/pd-2379/log" - host: hd28.cmdschool.org name: "pd-28" deploy_dir: "/data/tidb/tidb-deploy/pd-2379" data_dir: "/data/tidb/tidb-data/pd-2379" log_dir: "/data/tidb/tidb-deploy/pd-2379/log" tidb_servers: - host: hd26.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tidb-4000" log_dir: "/data/tidb/tidb-deploy/tidb-4000/log" - host: hd27.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tidb-4000" log_dir: "/data/tidb/tidb-deploy/tidb-4000/log" - host: hd28.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tidb-4000" log_dir: "/data/tidb/tidb-deploy/tidb-4000/log" tikv_servers: - host: hd26.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tikv-20160" data_dir: "/data/tidb/tidb-data/tikv-20160" log_dir: "/data/tidb/tidb-deploy/tikv-20160/log" - host: hd27.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tikv-20160" data_dir: "/data/tidb/tidb-data/tikv-20160" log_dir: "/data/tidb/tidb-deploy/tikv-20160/log" - host: hd28.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/tikv-20160" data_dir: "/data/tidb/tidb-data/tikv-20160" log_dir: "/data/tidb/tidb-deploy/tikv-20160/log" tiflash_servers: - host: hd26.cmdschool.org tcp_port: 9001 deploy_dir: "/data/tidb/tidb-deploy/tiflash-9001" data_dir: "/data/tidb/tidb-data/tiflash-9001" log_dir: "/data/tidb/tidb-deploy/tiflash-9001/log" - host: hd27.cmdschool.org tcp_port: 9001 deploy_dir: "/data/tidb/tidb-deploy/tiflash-9001" data_dir: "/data/tidb/tidb-data/tiflash-9001" log_dir: "/data/tidb/tidb-deploy/tiflash-9001/log" - host: hd28.cmdschool.org tcp_port: 9001 deploy_dir: "/data/tidb/tidb-deploy/tiflash-9001" data_dir: "/data/tidb/tidb-data/tiflash-9001" log_dir: "/data/tidb/tidb-deploy/tiflash-9001/log" monitoring_servers: - host: hd25.cmdschool.org port: 9190 deploy_dir: "/data/tidb/tidb-deploy/prometheus-9190" data_dir: "/data/tidb/tidb-data/prometheus-9190" log_dir: "/data/tidb/tidb-deploy/prometheus-9190/log" grafana_servers: - host: hd25.cmdschool.org port: 3030 deploy_dir: "/data/tidb/tidb-deploy/grafana-3030" alertmanager_servers: - host: hd25.cmdschool.org deploy_dir: "/data/tidb/tidb-deploy/alertmanager-9093" data_dir: "/data/tidb/tidb-data/alertmanager-9093" log_dir: "/data/tidb/tidb-deploy/alertmanager-9093/log"
2.6.3 部署前的检查与问题修复
tiup cluster check /data/tidb/install/config-yaml/topology.yaml --user tidb -i ~/.ssh/id_rsa
以上命令检查集群中存在的风险,然后,你可以使用如下命令修复风险,
tiup cluster check /data/tidb/install/config-yaml/topology.yaml --apply --user tidb -i ~/.ssh/id_rsa
2.6.4 部署集群
tiup cluster deploy tidb-cluster v8.5.1 /data/tidb/install/config-yaml/topology.yaml --user tidb -i ~/.ssh/id_rsa
然后,你可以使用如下命令查看部署的集群列表,
tiup cluster list
然后,你可以使用如下命令查看部署的集群状态,
tiup cluster display tidb-cluster
注:由于集群尚未启动,因此会出现“Down”或“inactive”状态
2.6.5 启动集群
tiup cluster start tidb-cluster --init
需要注意的是,集群启动后,会有如下提示,你需要记录下root的初始化密码,
#... Started cluster `tidb-cluster` successfully The root password of TiDB database has been changed. The new password is: 'q9-2K87^Ze45@bW+Gw'. #...
以上为安全启动集群,普通启动集群,请使用如下命令,
tiup cluster start tidb-cluster
然后,你可以再次使用如下命令查看部署的集群状态,
tiup cluster display tidb-cluster
正常的集群,可见如下信息,
Cluster type: tidb Cluster name: tidb-cluster Cluster version: v8.5.1 Deploy user: tidb SSH type: builtin Dashboard URL: http://hd26.cmdschool.org:2379/dashboard Grafana URL: http://hd25.cmdschool.org:3030 ID Role Host Ports OS/Arch Status Data Dir Deploy Dir -- ---- ---- ----- ------- ------ -------- ---------- hd25.cmdschool.org:9093 alertmanager hd25.cmdschool.org 9093/9094 linux/x86_64 Up /data/tidb/tidb-data/alertmanager-9093 /data/tidb/tidb-deploy/alertmanager-9093 hd25.cmdschool.org:3030 grafana hd25.cmdschool.org 3030 linux/x86_64 Up - /data/tidb/tidb-deploy/grafana-3030 hd26.cmdschool.org:2379 pd hd26.cmdschool.org 2379/2380 linux/x86_64 Up|L|UI /data/tidb/tidb-data/pd-2379 /data/tidb/tidb-deploy/pd-2379 hd27.cmdschool.org:2379 pd hd27.cmdschool.org 2379/2380 linux/x86_64 Up /data/tidb/tidb-data/pd-2379 /data/tidb/tidb-deploy/pd-2379 hd28.cmdschool.org:2379 pd hd28.cmdschool.org 2379/2380 linux/x86_64 Up /data/tidb/tidb-data/pd-2379 /data/tidb/tidb-deploy/pd-2379 hd25.cmdschool.org:9190 prometheus hd25.cmdschool.org 9190/12020 linux/x86_64 Up /data/tidb/tidb-data/prometheus-9190 /data/tidb/tidb-deploy/prometheus-9190 hd26.cmdschool.org:4000 tidb hd26.cmdschool.org 4000/10080 linux/x86_64 Up - /data/tidb/tidb-deploy/tidb-4000 hd27.cmdschool.org:4000 tidb hd27.cmdschool.org 4000/10080 linux/x86_64 Up - /data/tidb/tidb-deploy/tidb-4000 hd28.cmdschool.org:4000 tidb hd28.cmdschool.org 4000/10080 linux/x86_64 Up - /data/tidb/tidb-deploy/tidb-4000 hd26.cmdschool.org:9001 tiflash hd26.cmdschool.org 9001/3930/20170/20292/8234/8123 linux/x86_64 Up /data/tidb/tidb-data/tiflash-9001 /data/tidb/tidb-deploy/tiflash-9001 hd27.cmdschool.org:9001 tiflash hd27.cmdschool.org 9001/3930/20170/20292/8234/8123 linux/x86_64 Up /data/tidb/tidb-data/tiflash-9001 /data/tidb/tidb-deploy/tiflash-9001 hd28.cmdschool.org:9001 tiflash hd28.cmdschool.org 9001/3930/20170/20292/8234/8123 linux/x86_64 Up /data/tidb/tidb-data/tiflash-9001 /data/tidb/tidb-deploy/tiflash-9001 hd26.cmdschool.org:20160 tikv hd26.cmdschool.org 20160/20180 linux/x86_64 Up /data/tidb/tidb-data/tikv-20160 /data/tidb/tidb-deploy/tikv-20160 hd27.cmdschool.org:20160 tikv hd27.cmdschool.org 20160/20180 linux/x86_64 Up /data/tidb/tidb-data/tikv-20160 /data/tidb/tidb-deploy/tikv-20160 hd28.cmdschool.org:20160 tikv hd28.cmdschool.org 20160/20180 linux/x86_64 Up /data/tidb/tidb-data/tikv-20160 /data/tidb/tidb-deploy/tikv-20160 Total nodes: 15
2.7 测试TiDB集群
2.7.1 登录集群仪表板
http://hd26.cmdschool.org:2379/dashboard
user: root
password: q9-2K87^Ze45@bW+Gw
2.7.2 登录Grafana监控
http://hd25.cmdschool.org:3030/
user: admin
password: admin
2.7.3 mysql客户端登录测试
dnf install -y mysql
可以使用如下命令登录,
mysql -uroot -p -h hd26.cmdschool.org -P 4000 mysql -uroot -p -h hd27.cmdschool.org -P 4000 mysql -uroot -p -h hd28.cmdschool.org -P 4000
2.7.4 查询TiDB版本
select tidb_version()\G
可见如下显示,
*************************** 1. row *************************** tidb_version(): Release Version: v8.5.1 Edition: Community Git Commit Hash: fea86c8e35ad4a86a5e1160701f99493c2ee547c Git Branch: HEAD UTC Build Time: 2025-01-16 07:38:34 GoVersion: go1.23.4 Race Enabled: false Check Table Before Drop: false Store: tikv 1 row in set (0.00 sec)
2.7.5 创建数据库
create database pingcap;
可见如下显示,
Query OK, 0 rows affected (0.51 sec)
2.7.6 创建tab_tidb表
use pingcap CREATE TABLE `tab_tidb` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '', `age` int NOT NULL DEFAULT 0, `version` varchar(20) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `idx_age` (`age`));
可见如下显示,
Query OK, 0 rows affected (0.52 sec)
2.7.7 插入数据
insert into `tab_tidb` values (1,'TiDB',5,'TiDB-v5.0.0');
可见如下显示,
Query OK, 1 row affected (0.01 sec)
2.7.8 查看tab_tidb结果
select * from tab_tidb;
可见如下显示,
+----+------+-----+-------------+ | id | name | age | version | +----+------+-----+-------------+ | 1 | TiDB | 5 | TiDB-v5.0.0 | +----+------+-----+-------------+ 1 row in set (0.00 sec)
2.7.9 查看TiKV store状态、store_id、存储情况以及启动时间
select STORE_ID,ADDRESS,STORE_STATE,STORE_STATE_NAME,CAPACITY,AVAILABLE,UPTIME from INFORMATION_SCHEMA.TIKV_STORE_STATUS;
可见如下显示,
+----------+--------------------------+-------------+------------------+----------+-----------+---------------------+ | STORE_ID | ADDRESS | STORE_STATE | STORE_STATE_NAME | CAPACITY | AVAILABLE | UPTIME | +----------+--------------------------+-------------+------------------+----------+-----------+---------------------+ | 1 | hd27.cmdschool.org:20160 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m14.57220359s | | 5 | hd28.cmdschool.org:20160 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m13.668770182s | | 2 | hd26.cmdschool.org:20160 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m6.81993539s | | 162 | hd26.cmdschool.org:3930 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m3.714968422s | | 163 | hd28.cmdschool.org:3930 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m3.571064673s | | 164 | hd27.cmdschool.org:3930 | 0 | Up | 98.17GiB | 89.64GiB | 64h35m4.67507252s | +----------+--------------------------+-------------+------------------+----------+-----------+---------------------+
2.8 部署TiProxy
2.8.1 创建配置文件
cd /data/tidb/install/config-yaml vim tiproxy.yaml
加入如下配置,
component_versions: tiproxy: "v1.2.0" tiproxy_servers: - host: hd19.cmdschool.org port: 6000 status_port: 3080 deploy_dir: "/data/tidb/tidb-deploy/tiproxy-6000" - host: hd20.cmdschool.org port: 6000 status_port: 3080 deploy_dir: "/data/tidb/tidb-deploy/tiproxy-6000" - host: hd21.cmdschool.org port: 6000 status_port: 3080 deploy_dir: "/data/tidb/tidb-deploy/tiproxy-6000"
2.8.2 部署负代理服务
tiup cluster scale-out tidb-cluster /data/tidb/install/config-yaml/tiproxy.yaml -u tidb -i ~/.ssh/id_rsa
需要注意的是,参数“scale-out”表示扩展集群,部署完成后可以使用mysql客户端登录测试代理,
dnf install -y mysql
可以使用如下命令登录,
mysql -uroot -p -h hd19.cmdschool.org -P 6000 mysql -uroot -p -h hd20.cmdschool.org -P 6000 mysql -uroot -p -h hd21.cmdschool.org -P 6000
2.8.3 基于任播技术的负载均衡
代理搭建后,你还需要借助任播技术实现代理节点基于三层路由的负载均衡,详细请参阅如下章节,
参考文档
==================
TiDB的社区
————-
https://asktug.com/
TiDB 整体架构
————-
https://docs.pingcap.com/zh/tidb/stable/tidb-architecture/
TiProxy
————-
https://docs.pingcap.com/zh/tidb/stable/tiproxy-overview/
标准集群部署文档
————
https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements/
官方文档
———–
https://docs.pingcap.com/zh/
没有评论