使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群。 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止。

    确保你的机器上已安装:

    • Docker(17.06.0 及以上版本)
    • Docker Compose
    • Git
    1. 下载

    2. 创建并启动集群

      获取最新 Docker 镜像:

      1. cd tidb-docker-compose && docker-compose pull && docker-compose up -d
    3. 访问集群

      1. mysql -h 127.0.0.1 -P 4000 -u root

      访问集群 Grafana 监控页面:http://localhost:3000 默认用户名和密码均为 admin。

      http://localhost:8010

    如果想自定义集群,可以直接修改 docker-compose.yml,但是手动修改比较繁琐而且容易出错,强烈建议使用 模板引擎生成 docker-compose.yml 文件。

    1. 安装 Helm

      Helm 可以用作模板渲染引擎,只需要下载其 binary 文件即可以使用。确保你的 Helm 版本为 2.9.0 ≤ Helm < 3.0.0。

      1. curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

      如果是 Mac 系统,也可以通过 Homebrew 安装:

      1. brew install helm@2
      2. brew link --force helm@2
    2. 下载 tidb-docker-compose

    3. 生成 docker-compose.yml 文件

      1. helm template -f values.yaml compose > generated-docker-compose.yml
    4. 使用生成的 docker-compose.yml 创建并启动集群

      获取最新 Docker 镜像:

      1. docker-compose -f generated-docker-compose.yml pull
      1. docker-compose -f generated-docker-compose.yml up -d
    5. 访问集群

      访问集群 Grafana 监控页面: 默认用户名和密码均为 admin。

      如果启用了 tidb-vision,可以通过 http://localhost:8010 查看。

    向 TiDB 集群中插入一些样本数据:

    1. docker-compose exec tispark-master bash &&
    2. cd /opt/spark/data/tispark-sample-data &&
    3. mysql -h tidb -P 4000 -u root < dss.ddl

    当样本数据加载到 TiDB 集群之后,可以使用 docker-compose exec tispark-master /opt/spark/bin/spark-shell 来访问 Spark shell。

    1. docker-compose exec tispark-master /opt/spark/bin/spark-shell
    1. ...
    2. Spark context available as 'sc' (master = local[*], app id = local-1527045927617).
    3. Welcome to
    4. / __/__ ___ _____/ /__
    5. _\ \/ _ \/ _ `/ __/ '_/
    6. /___/ .__/\_,_/_/ /_/\_\ version 2.1.1
    7. /_/
    8. Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172)
    9. Type in expressions to have them evaluated.
    10. Type :help for more information.
    1. scala> import org.apache.spark.sql.TiContext
    2. ...
    3. scala> val ti = new TiContext(spark)
    4. ...
    5. scala> ti.tidbMapDatabase("TPCH_001")
    6. ...
    7. scala> spark.sql("select count(*) from lineitem").show

    你也可以通过 Python 或 R 来访问 Spark:

    更多关于 TiSpark 的信息,参见 。