Docker Compose 快速构建集群
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群。Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止。
注:对于生产环境,不要使用 Docker Compose 进行部署,而应使用 Ansible 部署 TiDB 集群。

  1. 准备环境(Centos 7)
    • 安装Docker(17.06.0 及以上版本)
    1.1 卸载旧版本
    sudo yum remove docker-ce docker-ce-selinux container-selinux
    docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-selinux
    docker-engine-selinux
    docker-engine
    1.2 安装依赖包
    安装必须的包。yum-utils提供了yum-config-manager实用程序,并且device-mapper-persistent-data和lvm2需要devicemapper存储驱动程序。
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    1.3 添加软件源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast
    1.4 安装最新版本的Docker CE
    sudo yum install docker-ce

1.5 启动Docker
sudo systemctl start docker

• 安装Docker Compose
2.1安装Docker-Compose
yum -y install docker-compose

2.2 查看Docker-Compose版本
docker-compose -version

• Git
3.1 安装Git
yum install -y epel-release
yum install -y git2u
git –version

  1. 快速部署
  2. 下载 tidb-docker-compose
    Copy
  3. 创建并启动集群
    Copy
    cd tidb-docker-compose && docker-compose pull # Get the latest Docker images
    docker-compose up -d
  4. 访问集群
    Copy
    mysql -h 127.0.0.1 -P 4000 -u root
    访问集群 Grafana 监控页面:http://localhost:3000 默认用户名和密码均为 admin。
    集群数据可视化:http://localhost:8010
  5. 自定义集群
    在完成快速部署后,以下组件已默认部署:3 个 PD,3 个 TiKV,1 个 TiDB 和监控组件 Prometheus,Pushgateway,Grafana 以及 tidb-vision。
    如果想自定义集群,可以直接修改 docker-compose.yml,但是手动修改比较繁琐而且容易出错,强烈建议使用 Helm 模板引擎生成 docker-compose.yml 文件。
  6. 安装 Helm
    Helm 可以用作模板渲染引擎,只需要下载其 binary 文件即可以使用。
    Copy 如果是 Mac 系统,也可以通过 Homebrew 安装:
    Copy
    brew install kubernetes-helm
  7. 下载 tidb-docker-compose
    Copy
  8. 自定义集群
    Copy
    cd tidb-docker-compose
    cp compose/values.yaml values.yaml
    vim values.yaml
    修改 values.yaml 里面的配置,例如集群规模,TiDB 镜像版本等。
    tidb-vision 是 TiDB 集群可视化页面,可以可视化地显示 PD 对 TiKV 数据的调度。如果不想部署该组件,可以将 tidbVision 项留空。
    PD,TiKV,TiDB 和 tidb-vision 支持从 GitHub 源码或本地文件构建 Docker 镜像,供开发测试使用。
    o 如果希望从本地已编译好的 binary 文件构建 PD,TiKV 或 TiDB 镜像,需要将其 image 字段留空,并将已编译好的 binary 拷贝到对应的 pd/bin/pd-server,tikv/bin/tikv-server,tidb/bin/tidb-server。
    o 如果希望从本地构建 tidb-vision 镜像,需要将其 image 字段留空,并将 tidb-vision 项目拷贝到 tidb-vision/tidb-vision。
  9. 生成 docker-compose.yml 文件
    Copy
    helm template -f values.yaml compose > generated-docker-compose.yml
  10. 使用生成的 docker-compose.yml 创建并启动集群
    Copy
    docker-compose -f generated-docker-compose.yml pull # Get the latest Docker images
    docker-compose -f generated-docker-compose.yml up -d
  11. 访问集群
    Copy
    mysql -h 127.0.0.1 -P 4000 -u root
    访问集群 Grafana 监控页面:http://localhost:3000 默认用户名和密码均为 admin。
    如果启用了 tidb-vision,可以通过 http://localhost:8010 查看。
  12. 访问 Spark shell 并加载 TiSpark
    向 TiDB 集群中插入一些样本数据:
    Copy
    $ docker-compose exec tispark-master bash
    $ cd /opt/spark/data/tispark-sample-data
    $ mysql -h tidb -P 4000 -u root < dss.ddl
    当样本数据加载到 TiDB 集群之后,可以使用 docker-compose exec tispark-master /opt/spark/bin/spark-shell 来访问 Spark shell。
    Copy
    $ docker-compose exec tispark-master /opt/spark/bin/spark-shell

    Spark context available as ‘sc’ (master = local[*], app id = local-1527045927617).
    Spark session available as ‘spark’.
    Welcome to

  1. / / ___ / /
    \ / _ / _ `/ __/ '/
    /
    / .__/_,// //_\ version 2.1.1
    /
    /

Using Scala version 2.11.8 (Java HotSpot™ 64-Bit Server VM, Java 1.8.0_172)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import org.apache.spark.sql.TiContext

scala> val ti = new TiContext(spark)

scala> ti.tidbMapDatabase(“TPCH_001”)

scala> spark.sql(“select count(*) from lineitem”).show
±-------+
|count(1)|
±-------+
| 60175|
±-------+
你也可以通过 Python 或 R 来访问 Spark:
Copy
docker-compose exec tispark-master /opt/spark/bin/pyspark
docker-compose exec tispark-master /opt/spark/bin/sparkR
更多关于 TiSpark 的信息,参见 TiSpark 的详细文档。