写在前面
其实蛮久前就开始关注TiDB,当时还是刚推出初代正式版。它带着NewSQL
的新潮头衔、天然支持分布式又兼容MySQL
协议(无需分表分库),让我蠢蠢欲动。现不少互联网(360、小米、知乎、网易游戏、美团等)、金融(中国银行、光大银行、翼支付等)企业将其纳入生产环境,社区也愈见庞大完善,更是让我按捺不住要体验一番。恰逢某云双十一有低至 0.6 折的云主机
,我订了四台用来搭建测试集群。
目前 TiDB 最新版本为4.0.8
,提供TiUP
工具大大降低集群运维成本👍。那废话少说,开始动手吧!
准备工作
四台主机网络互通(同一安全组)命名为M01、M02、M03、M04,均为
CentOS8.0 64位
操作系统,内存2G
,其中M01
为中控机。
集群总览
名称 | IP | 集群角色 |
---|---|---|
M01 | 192.168.1.17 | SSH管理入口、PD、TiDB Server、集群监控 |
M02 | 192.168.1.46 | TiKV |
M03 | 192.168.1.169 | TiKV |
M04 | 192.168.1.51 | TiKV |
网络结构
备注
M01
作为集群唯一入口有且仅对外提供了仅限私钥
登录的SSH
服务(其他机器均不开放任何端口)- SSH服务端口已改为
20221
- 关于 TiDB 各模块间的介绍详见整体架构
- 本文为数据库最简部署,不涉及 TiFlash、TiCDC、TiDB Binlog、TiSpark 等组件
- 主机间我已配置无密登录
- 为安全起见,访问集群功能(如数据库访问、集群状态面板、集群监控等)均走基于
SSH
的端口转发(此处不详述原理,请自行查阅资料) - 本文中使用的 SSH 客户端工具为
MobaXterm
(免费版)
集群部署
安装 TiUP
登录中控机 M01(云主机若购买了额外云盘,可能会出现未挂载的情况,此时需要人工先将云盘挂载),安装TiUP
。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
# 重新声明全局环境变量
source .bash_profile
# 安装 cluster 组件
tiup cluster
# 等待完成后验证结果,显示如/root/.tiup/components/cluster/v1.2.3/tiup-cluster 字样即为成功
tiup --binary cluster
集群配置文件
配置文件名为
topology.yaml
,本文使用的为极简配置(只修改部分阈值、端口),存放路径:/data/topology.yaml
global:
user: "tidb"
ssh_port: 20221
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
server_configs:
tidb:
# Queries with execution time greater than this value will be logged. (Milliseconds)
log.slow-threshold: 1000
tikv:
# 线程池大小,参数默认取值为机器线程数的 80%,此处修改为 1
readpool.unified.max-thread-count: 1
pd_servers:
- host: 192.168.1.17
client_port: 22379
tidb_servers:
- host: 192.168.1.17
tikv_servers:
- host: 192.168.1.46
- host: 192.168.1.51
- host: 192.168.1.169
monitoring_servers:
- host: 192.168.1.17
grafana_servers:
- host: 192.168.1.17
port: 23000
附录
部署
# 这里使用 root 用户进行部署(若更换为其他用户,需注意应具备ssh及sudu权限)
# 集群名称为 tidb
tiup cluster deploy tidb v4.0.8 /data/topology.yaml --user root
TiUP 将列出集群相关信息(如下图),无问题即可按下y
,接着会自动下载资源、初始化各节点(若未配置无密登录会报错而中断)、复制文件,最后集群部署完成。
通过tiup cluster display tidb
可以显示集群相关信息。
至此,集群已经成功运行,可以对外提供服务。不得不感慨其便利性💐。
集群管理
本章节利用
SSH隧道
访问集群相关服务,使用的是本地端口转发(每个服务搭建一条隧道,理论上动态转发
更灵活但未实践过,如有了解的朋友欢迎留言交流💬)
# 本地端口转发用法
ssh -L {本地端口}:{远程主机}:{远程端口} root@M01
本文使用MobaXterm
提供的工具搭建端口转发,创建端口转发如下图所示(图形化很好理解🤪):
建立三个端口转发规则,分别对应集群Dashboard、数据库、集群监控。
🔒修改数据库密码
数据库管理员账户为
root
,默认无需密码(裸奔😂)
改密方案跟MySQL
一样,登录目标服务器(MySQL协议)修改 mysql.user
表即可。
集群状态
访问
localhost:22379
即可打开集群Dashboard,使用数据库帐密登录
集群监控
访问
localhost:23000
,默认帐密为 admin/admin(强烈要求初次登录后修改密码)
结束语
整个过程虽有小磕碰但也顺利完成,再次提醒一定要按照官方文档来走,很多问题都能通过查阅文档来解决。
目前集群使用正常(就当一个MySQL
来用😂),有后续心得再跟大家分享,感谢阅读。