tidb-in-action

1.1.2 用 TiUP 部署本地测试环境

TiDB 集群是由多个组件构成的分布式系统,一个典型的 TiDB 集群至少由 3 个 PD 节点、3 个 TiKV 节点和 2 个 TiDB 节点构成。通过手工来部署这么多组件对于想要体验 TiDB 的用户甚至是 TiDB 的开发人员来说都是非常耗时且头疼的事情。在上一章节我们介绍了 TiUP 的基础用法,在本章中,我们将介绍 TiUP 中的 playground 和 client 组件,并且将通过这两个组件搭建起一套本地的 TiDB 测试环境。

1. 通过 playground 组件启动本地集群

playground 是一个集群组件,它会自动利用 TiUP 下载指定的 TiDB/PD/TiKV 版本,并按照用户指定的组件数量快速启动本地集群。

根据上一章节的知识,我们可以通过 list 命令先查看 playground 提供了哪些版本,相关的命令如下:

tiup list playground

接着我们可以通过 install 命令来安装最新版本的 playground,相关的命令如下:

tiup install playground

安装完成之后,可以通过 tiup playground 来启动一个默认的集群。playground 提供了一键启动集群的方法,大大简化了搭建的集群的时间。相关命令和参数如下:

~$ tiup help playground
Bootstrap a TiDB cluster in your local host, the latest release version will be chosen
if you don't specified a version.

Examples:
  $ tiup playground nightly                         # Start a TiDB nightly version local cluster
  $ tiup playground v3.0.10 --db 3 --pd 3 --kv 3    # Start a local cluster with 10 nodes
  $ tiup playground nightly --monitor               # Start a local cluster with monitor system
  $ tiup playground --pd.config ~/config/pd.toml    # Start a local cluster with specified configuration file,
  $ tiup playground --db.binpath /xx/tidb-server    # Start a local cluster with component binary path

Usage:
  tiup playground [version] [flags]

Flags:
      --db int              TiDB instance number (default 1)
      --db.binpath string   TiDB instance binary path
      --db.config string    TiDB instance configuration file
  -h, --help                help for tiup
      --host string         Playground cluster host (default "127.0.0.1")
      --kv int              TiKV instance number (default 1)
      --kv.binpath string   TiKV instance binary path
      --kv.config string    TiKV instance configuration file
      --monitor             Start prometheus component
      --pd int              PD instance number (default 1)
      --pd.binpath string   PD instance binary path
      --pd.config string    PD instance configuration file

从帮助信息上可以看出,playground 在启动时可以通过参数做很多定制化工作:

最简单地,你可以通过如下命令快速启动一个集群:

tiup playground

上述命令实际上做了以下事情:

在上一章节中我们知道,由于没有使用 --tag 选项,TiUP 会为该实例随机生成一个 tag 名称,将该实例的运行数据都放在用 tag 名称命名的文件夹下,并且在实例运行终止时自动删除文件夹。如果想要在多次启动时复用数据,可以通过指定 tag 名称的方法来启动,譬如:

tiup --tag=my-cluster playground

示例一:使用 TiUP 启动 v3.0.9 版本的集群

tiup playground v3.0.9

示例二:使用 TiUP 启动 nightly 版本的集群

tiup playground nightly

示例三:指定 TiKV 组件的个数为 3 个,同时启动 Prometheus 监控

tiup playground --kv=3 --monitor

示例四:各组件使用本机的对外 IP 地址 x.x.x.x 提供服务

tiup playground --host x.x.x.x

2. 通过 playground 搭建测试集群

作为一个分布式系统,最基础的 TiDB 测试集群通常由 2 个 TiDB 组件、3 个 TiKV 组件和 3 个PD组件来构成。通过 playground,我们可以快速搭建出上述的一套基础测试集群,相关的命令如下:

tiup playground --db=2 --kv=3 --pd=3

相比于之前需要手动搭建各个组件和修改各种配置,playground 功能极大的减少了搭建时间和成本。同时,我们还可以通过 --monitor 选项来为测试集群增加监控功能,相关的命令如下:

tiup playground --db=2 --kv=3 --pd=3 --monitor

在集群搭建成功后,playground 会提供使用 MySQL 客户端连接集群的命令信息:

CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --host 127.0.0.1 --port 4000 -u root

除了使用 playground 输出的连接命令外,还可以通过 TiUP 提供的 client 组件来连接到测试集群:

tiup client

client 组件非常聪明,它会自动探测到当前启动了哪些集群,并展示一个类似 DOS 图形化界面的列表,让你选择连接哪个集群。

当然,你也可以通过指定 tag 名称来连接到特定的集群:

tiup client <tag>