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 提供了哪些版本,相关的命令如下:

  1. tiup list playground

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

  1. tiup install playground

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

  1. ~$ tiup help playground
  2. Bootstrap a TiDB cluster in your local host, the latest release version will be chosen
  3. if you don't specified a version.
  4. Examples:
  5. $ tiup playground nightly # Start a TiDB nightly version local cluster
  6. $ tiup playground v3.0.10 --db 3 --pd 3 --kv 3 # Start a local cluster with 10 nodes
  7. $ tiup playground nightly --monitor # Start a local cluster with monitor system
  8. $ tiup playground --pd.config ~/config/pd.toml # Start a local cluster with specified configuration file,
  9. $ tiup playground --db.binpath /xx/tidb-server # Start a local cluster with component binary path
  10. Usage:
  11. tiup playground [version] [flags]
  12. Flags:
  13. --db int TiDB instance number (default 1)
  14. --db.binpath string TiDB instance binary path
  15. --db.config string TiDB instance configuration file
  16. -h, --help help for tiup
  17. --host string Playground cluster host (default "127.0.0.1")
  18. --kv int TiKV instance number (default 1)
  19. --kv.binpath string TiKV instance binary path
  20. --kv.config string TiKV instance configuration file
  21. --monitor Start prometheus component
  22. --pd int PD instance number (default 1)
  23. --pd.binpath string PD instance binary path
  24. --pd.config string PD instance configuration file

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

  • 指定各组件的个数
  • 指定各组件的可执行程序和配置文件
  • 使用 --host 修改默认的 host,譬如修改为机器的对外 IP 地址,服务就可以被其他机器访问
  • 使用 --monitor 启动 Prometheus 组件,提供集群监控能力

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

  1. tiup playground

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

  • 因为没有指定版本,TiUP 会先查找 playground 的最新版本,假设当前最新版为 v0.0.6,则该命令相当于 tiup playground:v0.0.6
  • 如果 playground 组件的 v0.0.6 版本没有安装,TiUP 会先将其安装,然后再启动运行实例
  • 因为 playground 没有指定 TiDB/PD/TiKV 各组件的版本,默认情况下,它会使用各组件的最新 release 版本,假设当前为 v4.0.0,则该命令相当于 tiup playground:v0.0.6 v4.0.0
  • 因为 playground 也没有指定各组件的个数,默认情况下,它会启动由 1 个 TiDB、1 个 TiKV 和 1 个 PD 构成的最小化集群
  • playground 实际上也是调用 TiUP 命令来启动 TiDB/PD/TiKV 组件,譬如调用 tiup tidb:v4.0.0 来启动 TiDB 实例,当然,在真正执行时它还会额外指定一些参数
  • 在依次启动完各个组件后,playground 会告诉你启动成功,并告诉你一些有用的信息,譬如如何通过 MySQL 客户端连接集群、如何访问 dashboard

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

  1. tiup --tag=my-cluster playground

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

  1. tiup playground v3.0.9

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

  1. tiup playground nightly

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

  1. tiup playground --kv=3 --monitor

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

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

2. 通过 playground 搭建测试集群

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

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

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

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

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

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

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

  1. tiup client

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

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

  1. tiup client <tag>