一、惊喜!TiDB又出新版本了,而且是长期支持版
1、得知TiDB新版本的消息
今天下班时,看到“TiDB 社区东北大本营”微信群中的消息:“TiDB 8.1.0 LTS 发版啦!”
真是让人惊喜,TiDB这么快就出新的LTS版本了,于是查了一下TiDB官网的信息,内容截取如下:

由以上官网说明可知,TiDB 8.1.0 是长期支持版本 (LTS)。它包含 7.6.0-DMR 和 8.0.0-DMR 版本中已发布的新功能,并做了提升和改进,以及错误修复。
TiDB的版本迭代更新如此之快,足见其雄厚的技术积累和茁壮的发展势头。能长期在国产数据库排行榜上名列前茅,确实是有技术实力的。
2、TiDB在国产数据库的排名情况
截取了本月墨天轮国产数据库排行榜的前12名,TiDB稳居第4,如下:

从墨天轮国产数据库排行榜,也可以看到TiDB从2020年1月~2022年11月,将近三年的时间里,基本一直名列国产数据库排行榜的榜首。
之后,随着各个国产数据库厂家在技术和市场上的百花齐放、百舸争流,国产数据库排行榜的头把交椅,也几易其主,但TiDB以其实力,一直保持在前五强之列。
3、TiDB在全球数据库的排名情况
随后,我又查看了TiDB在本月全球数据库的排行情况,如下:

TiDB本月全球排名前70,比上月又向上攀登了两级。如果我没看错的话,在全球数据库排行榜上,TiDB是排行最靠前的国产数据库产品。
由此可见TiDB越来越得到了海外市场的认可,其表现是相当的优异!
下班回到家后,带着喜悦和尝鲜的心情,尝试安装了这个最新的TiDB 8.1.0社区版。以下是安装过程记录。
二、离线部署TiDB 8.1.0 社区版集群环境
1、安装环境准备
在本地创建一台用于部署TiDB集群的虚拟机,根据官网推荐CentOS 7.3 及以上版本。
因此虚拟机,分配内存8GB,IP配置为192.168.20.176,并安装了CentOS 7.6,如下:


2、规划TiDB集群拓扑
| 实例 | 个数 |
| PD | 1 |
| TiKV | 3 |
| TiDB | 1 |
| TiFlash | 1 |
| Monitor | 1 |
3、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4、由于模拟多机部署,因此需要调大 sshd 服务的连接数限制
修改 /etc/ssh/sshd_config 将 MaxSessions参数调至 20。
重启 sshd 服务:service sshd restart
5、创建部署用户并配置免密码登录
adduser tidb
passwd tidb
visudo
加入以下内容:
tidb ALL=(ALL) NOPASSWD: ALL
6、创建目录并设置属主
mkdir -p /data
chown -R tidb:tidb /data
7、创建 tidb 用户ssh key
su - tidb
ssh-keygen -t rsa
8、下载离线安装包
下载地址 https://cn.pingcap.com/product-community/

需要同时下载 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包。
tidb-community-server-v8.1.0-linux-amd64.tar.gz
tidb-community-toolkit-v8.1.0-linux-amd64.tar.gz
9、上传安装包并解压安装
su - tidb
tar -zxvf tidb-community-server-v8.1.0-linux-amd64.tar.gz
tar -zxvf tidb-community-toolkit-v8.1.0-linux-amd64.tar.gz
cd tidb-community-server-v8.1.0-linux-amd64
sh local_install.sh
10、生效tidb的环境变量
source ~/.bash_profile
11、合并离线包
将 TiDB-community-server 软件包和 TiDB-community-toolkit 软件包合并到离线镜像中。
cd tidb-community-server-v8.1.0-linux-amd64
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-v8.1.0-linux-amd64
12、验证TiDB的安装镜像已经在本地目录

13、配置TiDB集群拓扑文件
vi topo.yaml
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
listen_host: 0.0.0.0
arch: "amd64"
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
server_configs:
tidb:
instance.tidb_slow_log_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.20.176
name: "pd-1"
client_port: 2379
peer_port: 2380
deploy_dir: "/data/tidb-deploy/pd-2379"
data_dir: "/data/tidb-data/pd-2379"
log_dir: "/data/tidb-deploy/pd-2379/log"
tidb_servers:
- host: 192.168.20.176
port: 4000
status_port: 10080
deploy_dir: "/data/tidb-deploy/tidb-4000"
log_dir: "/data/tidb-deploy/tidb-4000/log"
tikv_servers:
- host: 192.168.20.176
port: 20161
status_port: 20181
deploy_dir: "/data/tidb-deploy/tikv-20161"
data_dir: "/data/tidb-data/tikv-20161"
log_dir: "/data/tidb-deploy/tikv-20161/log"
config:
server.labels: { host: "logic-host-1" }
- host: 192.168.20.176
port: 20162
status_port: 20182
deploy_dir: "/data/tidb-deploy/tikv-20162"
data_dir: "/data/tidb-data/tikv-20162"
log_dir: "/data/tidb-deploy/tikv-20162/log"
config:
server.labels: { host: "logic-host-2" }
- host: 192.168.20.176
port: 20163
status_port: 20183
deploy_dir: "/data/tidb-deploy/tikv-20163"
data_dir: "/data/tidb-data/tikv-20163"
log_dir: "/data/tidb-deploy/tikv-20163/log"
config:
server.labels: { host: "logic-host-3" }
tiflash_servers:
- host: 192.168.20.176
tcp_port: 9000
flash_service_port: 3930
flash_proxy_port: 20170
flash_proxy_status_port: 20292
metrics_port: 8234
deploy_dir: /data/tidb-deploy/tiflash-9000
data_dir: /data/tidb-data/tiflash-9000
log_dir: /data/tidb-deploy/tiflash-9000/log
monitoring_servers:
- host: 192.168.20.176
port: 9090
ng_port: 12020
deploy_dir: "/data/tidb-deploy/prometheus-9090"
data_dir: "/data/tidb-data/prometheus-9090"
log_dir: "/data/tidb-deploy/prometheus-9090/log"
grafana_servers:
- host: 192.168.20.176
port: 3000
deploy_dir: /data/tidb-deploy/grafana-3000
dashboard_dir: /home/tidb/dashboards
alertmanager_servers:
- host: 192.168.20.176
web_port: 9093
cluster_port: 9094
deploy_dir: "/data/tidb-deploy/alertmanager-9093"
data_dir: "/data/tidb-data/alertmanager-9093"
log_dir: "/data/tidb-deploy/alertmanager-9093/log"
14、检查是否满足TiDB集群安装要求
tiup cluster check ./topo.yaml --user tidb -p
检查结果中,pass和warning是可以接受的,fail项则需要进行修改。
15、执行TiDB集群部署

以上部署命令,在执行成功完成后,显示如下信息:

16、查看当前已经部署的集群列表

17、启动TiDB集群
执行命令:
tiup cluster start tidb-cluster1 --init
启动过程的主要输出信息,截图如下:

成功启动后,显示如下信息:

18、查看集群的拓扑结构和状态

至此,完成了TiDB 8.1.0 集群的部署和启动,整个过程很顺畅,大约用了10多分钟。
19、通过Dashboard监测TiDB集群
通过浏览器访问 http://192.168.20.176:2379/dashboard
默认用户名为 root,密码为集群初始化启动时,系统给出的密码。

可以看到通过dashboard,可以对TiDB集群进行多方位的监测。
在概览界面,可以监测TiDB集群的QPS、延迟、CPU使用率、内存和IO使用情况。
在dashboard界面的左侧,还可以对TiDB的集群信息、Top SQL、慢查询等进行查看。基本满足了对数据库集群的监控需求。
三、通过客户端访问TiDB数据库
1、通过 MySQL客户端访问 TiDB 数据库:
(1)首先安装 MySQL 客户端:yum -y install mysql
(2)然后通过 MySQL 客户端登录TiDB数据库:
mysql -h 192.168.20.176 -P 4000 -u root -p

2、通过DBeaver图形客户端访问TiDB 数据库:
(1)启动DBeaver客户端程序

(2)新建立数据库连接
点击“数据库”菜单中的“新建数据库连接”,如下所示:

在数据库驱动程序列表中,找到TiDB,如下所示:

(3)输入TiDB数据库的相关信息
输入数据库主机IP、默认端口号4000、用户名root、并输入登录密码,如下所示:

(4)测试连接
在输入完成TiDB数据库的相关信息后,点击左下层的“测试连接”按钮,成功连接,则显示如下提示框:

(5)保存连接
DBeaver成功连接到TiDB数据库后,界面如下:

此时,就可以通过DBeaver图形客户端,对TiDB数据库进行访问和操作了。
四、停止TiDB集群的运行





