TiUP
是一个TiDB
的组件管理工具,我本人的使用体验是(在会用的情况下)非常好用,可惜有的时候不会用,这里记载一些自己踩过的坑以及常用的使用方法,意在弥补文档不全面的情况。
TiDB Playground
回想起当时做小作业的时候,为了起一个TiDB
集群,不管是用TiDB
的Ansible
还是Docker Compose
都对我这个萌新(和低配 Mac)非常不友好,直到TiUP
问世。
从TiUP Playground
最基本的使用方式说起,不加任何参数启动Playground
,会看到以下结果。
1 | » tiup playground |
其实我起Playground
大部分时候只是想做一些功能性测试,并不希望看到Prometheus
和Grafana
以及tiflash
,所以我常用的命令是:
1 | tiup playground --tiflash=0 --monitor=false |
在使用Ctrl + C
发送SIGINT
时,会看到TiUP
进程卡在了这样一个状态,正在等待某某某进程退出,然后下一个,到全部退出可能要花费十多秒的时间,主要是等待TiDB
退出的时间特别长,以及TiUP
会删除掉TiDB
集群所生成的文件。使用Ctrl + C
发送第二个SIGINT
信号会让Playground
和它所拉起来的进程强制退出(SIGKILL
)。
1 | ^CPlayground receive signal: interrupt |
TiDB Cluster
如果要起一个生产环境用的集群,需要使用TiDB Cluster
这个组件,当然我不是专业的DBA,也没有在生产环境实践过,这里所说的,是一个程序员启动一个开发用集群的实践。主要流程请参考官方文档,本文只写自己遇到的坑。
1. 编辑拓扑文件
最初写TiUP
的拓扑文件,因为找不到文档,所以对着代码里的结构体定义在写,写的十分痛苦,建议直接抄 example: https://github.com/pingcap/tiup/blob/master/examples/topology.example.yaml 。
2. 部署启动集群
认真看官方文档的小伙伴,应该不用来这里抄命令了。
1 | » tiup cluster deploy ntr nightly topology.yaml |
3. patch
有的时候想要测试自己编译的组件,TiUP
提供了patch
命令,但是大家非常容易翻一个常见错误,以TiDB
为例:
1 | » tiup cluster patch ntr tidb-server -R tidb |
因为根据 DBA 的使用习惯,一般想要直接使用下载下来的 tar 包,所以 patch 命令所指定的文件也需要是一个 tar 包(快兼容一下啊(╯‵□′)╯︵┻━┻)。
1 | tar czf tidb-server.tar.gz tidb-server |