使用 Docker Compose 快速構建 TiDB 集羣

本文檔介紹如何在單機上經過 Docker Compose 快速一鍵部署一套 TiDB 測試集羣。Docker Compose 能夠經過一個 YAML 文件定義多個容器的應用服務,而後一鍵啓動或中止。mysql

對於生產環境,不要使用 Docker Compose 進行部署,而應使用 Ansible 部署 TiDB 集羣git

1、準備環境

確保你的機器上已安裝:github

  • Docker(17.06.0 及以上版本)sql

  • Docker Composedocker

  • Gitshell

2、快速部署

  1. 下載 tidb-docker-composeexpress

    git clone https://github.com/pingcap/tidb-docker-compose.git

     

  2. 建立並啓動集羣apache

    cd tidb-docker-compose && docker-compose pull # Get the latest Docker images
    docker-compose up -d

     

  3. 訪問集羣vim

    mysql -h 127.0.0.1 -P 4000 -u root

     

    訪問集羣 Grafana 監控頁面:http://localhost:3000 默認用戶名和密碼均爲 admin。bash

    集羣數據可視化http://localhost:8010

3、自定義集羣

在完成快速部署後,如下組件已默認部署:3 個 PD,3 個 TiKV,1 個 TiDB 和監控組件 Prometheus,Pushgateway,Grafana 以及 tidb-vision。

若是想自定義集羣,能夠直接修改 docker-compose.yml,可是手動修改比較繁瑣並且容易出錯,強烈建議使用 Helm 模板引擎生成 docker-compose.yml 文件。

  1. 安裝 Helm

    Helm 能夠用做模板渲染引擎,只須要下載其 binary 文件便可以使用。

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

     

    若是是 Mac 系統,也能夠經過 Homebrew 安裝:

    brew install kubernetes-helm

     

  2. 下載 tidb-docker-compose

    git clone https://github.com/pingcap/tidb-docker-compose.git

     

  3. 自定義集羣

    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 鏡像,供開發測試使用。

    • 若是但願從本地已編譯好的 binary 文件構建 PD,TiKV 或 TiDB 鏡像,須要將其 image 字段留空,並將已編譯好的 binary 拷貝到對應的 pd/bin/pd-servertikv/bin/tikv-servertidb/bin/tidb-server

    • 若是但願從本地構建 tidb-vision 鏡像,須要將其 image 字段留空,並將 tidb-vision 項目拷貝到 tidb-vision/tidb-vision

  4. 生成 docker-compose.yml 文件

    helm template -f values.yaml compose > generated-docker-compose.yml

     

  5. 使用生成的 docker-compose.yml 建立並啓動集羣

    docker-compose -f generated-docker-compose.yml pull # Get the latest Docker images
    docker-compose -f generated-docker-compose.yml up -d

     

  6. 訪問集羣

    mysql -h 127.0.0.1 -P 4000 -u root

     

    訪問集羣 Grafana 監控頁面:http://localhost:3000 默認用戶名和密碼均爲 admin。

    若是啓用了 tidb-vision,能夠經過 http://localhost:8010 查看。

4、訪問 Spark shell 並加載 TiSpark

向 TiDB 集羣中插入一些樣本數據:

$ 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。

$ 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
    ____             __
    / __/__ ___ _____/ /__
  _\ \/ _ \/ _ `/ __/ '_/
  /___/ .__/\_,_/_/ /_/\_\   version 2.1.1
    /_/

Using Scala version 2.11.8 (Java HotSpot(TM) 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:

docker-compose exec tispark-master /opt/spark/bin/pyspark
docker-compose exec tispark-master /opt/spark/bin/sparkR
 

更多關於 TiSpark 的信息,參見 TiSpark 的詳細文檔

相關文章
相關標籤/搜索