TiDB从0到1系列
TiDB-从0到1-体系结构
TiDB-从0到1-分布式存储
TiDB-从0到1-分布式事务
TiDB-从0到1-MVCC
TiDB-从0到1-部署篇
TiDB-从0到1-配置篇
TiDB-从0到1-集群扩缩容
TiDB-从0到1-数据导出导入
TiDB-从0到1-BR工具
TiDB-从0到1-sync-diff-inspector数据校验工具
TiDB-从0到1-DM工具
TiDB-从0到1-TiCDC数据同步工具
前言
传统的RDBMS和NewSQL最大的区别(也是NewSQL相较传统数据库最大的优势):水平扩缩容。
拿业内主流的MySQL来说,最常见有效的扩容方式是垂直扩容,加CPU,加内存,加磁盘,比较暴力的从硬件方面提升数据库的性能。当然在部分高可用架构下,再配合读写分离也能提升部分性能,但是性价比也只有那么低了。
而新一代数据库最大的亮点就是支持水平扩缩容,而且是便捷有效的水平扩缩容。例如TiDB,当我们业务访问量增加时扩容TiDB Server节点,当数据量增加时扩容TiKV节点,当大数据计算增加时提升TiFlash节点。
试想一种场景,我们通过nginx流量实时分析,可以较为精准的定位出哪些时间范围业务处于高峰期,哪些时间范围处于低峰期,从而需求根据流量变化动态调整数据库的资源。
这种场景如果我们使用传统数据库几乎是不可能实现的,即使通过大量脚本+中间件实现了该功能,其稳定性也毫无保障。
但是在新一代数据库中,就是可以做到用户无感知,丝滑的动态扩缩容。
TiDB集群扩容
首先我们已经部署好一套7节点的TiDB集群
tiup cluster display tidb-test
假设现在数据量突然增,需要对TiKV进行扩容
1、准备扩容文件
vim add-tikv.yaml
tikv_servers:
– host: 192.168.14.128
ssh_port: 22
port: 20160
status_port: 20180
deploy_dir: /data/tidb-deploy/tikv-20160
data_dir: /data/tidb-data/tikv-20160
log_dir: /data/tidb-deploy/tikv-20160/log
2、通过扩容文件将新节点加入集群
tiup cluster scale-out tidb-test add-tikv.yaml -uroot -p
根据提示输入新节点服务器密码
确认加入集群
3、确认集群状态
tiup cluster display tidb-test
(看到集群中已经有4个TiKV节点存在)
假设历史无用数据被清理后,需要对TiKV进行缩容
缩容就比较简单了,直接用tiup命令就行
这里我们选择缩容192.168.14.125节点,而不是刚刚新增的192.168.14.128节点
tiup cluster scale-in tidb-test --node 192.168.14.125:20160
1、确认缩容
2、查看集群状态
tiup cluster display tidb-test
这里根据提示我们需要对TiKV节点进行下线
tiup cluster prune tidb-test
下线成功
彩蛋
其实本次实操过程中遇到了两个问题
1、忘记了root密码
2、在缩容的时候,因为region peer的问题导致缩容节点一直卡在Pending Offline
不过感人的是TiDB目前的社区生态真的非常优秀,就如我遇到的这两个问题,BD一搜能找到大量解决文档,这也是为什么我一直看好TiDB未来发展。
为什么中小企业都用MySQL?不就是MySQL遇到问题有大量网友帮忙兜底。