對於生產環境,不要使用 Docker Compose 進行部署,而應使用 Ansible 部署 TiDB 集群。
一、准備環境
確保你的機器上已安裝:
-
Docker(17.06.0 及以上版本)
-
Docker Compose
-
Git
二、快速部署
-
下載
tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git
-
創建並啟動集群
cd tidb-docker-compose && docker-compose pull # Get the latest Docker images docker-compose up -d
-
訪問集群
mysql -h 127.0.0.1 -P 4000 -u root
訪問集群 Grafana 監控頁面:http://localhost:3000 默認用戶名和密碼均為 admin。
三、自定義集群
在完成快速部署后,以下組件已默認部署:3 個 PD,3 個 TiKV,1 個 TiDB 和監控組件 Prometheus,Pushgateway,Grafana 以及 tidb-vision。
如果想自定義集群,可以直接修改 docker-compose.yml
,但是手動修改比較繁瑣而且容易出錯,強烈建議使用 Helm 模板引擎生成 docker-compose.yml
文件。
-
安裝 Helm
Helm 可以用作模板渲染引擎,只需要下載其 binary 文件即可以使用。
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
如果是 Mac 系統,也可以通過 Homebrew 安裝:
brew install kubernetes-helm
-
下載
tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git
-
自定義集群
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-server
,tikv/bin/tikv-server
,tidb/bin/tidb-server
。 -
如果希望從本地構建 tidb-vision 鏡像,需要將其
image
字段留空,並將 tidb-vision 項目拷貝到tidb-vision/tidb-vision
。
-
-
生成
docker-compose.yml
文件helm template -f values.yaml compose > generated-docker-compose.yml
-
使用生成的
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
-
訪問集群
mysql -h 127.0.0.1 -P 4000 -u root
訪問集群 Grafana 監控頁面:http://localhost:3000 默認用戶名和密碼均為 admin。
如果啟用了 tidb-vision,可以通過 http://localhost:8010 查看。
四、訪問 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 的詳細文檔