目录

一、快速部署1.1、下载tidb-docker-compose1.2、创建并启动集群二、访问集群2.1、访问TiDB2.2、访问集群 Grafana 监控2.3、集群数据可视化2.4、访问Spark Web UI三、自定义集群四、访问 Spark shell 并加载 TiSpark
一、快速部署
参考连接:https://docs.pingcap.com/zh/tidb/v3.0/deploy-test-cluster-using-docker-compose
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群。Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止。
确保你的机器上已安装:
Docker(17.06.0 及以上版本)
Docker Compose
Git
1.1、下载tidb-docker-compose
1[root@docker35 ~]# git clone https://github.com/pingcap/tidb-docker-compose.git
2Cloning into 'tidb-docker-compose'...
3remote: Enumerating objects: 8, done.
4remote: Counting objects: 100% (8/8), done.
5remote: Compressing objects: 100% (8/8), done.
6remote: Total 554 (delta 0), reused 6 (delta 0), pack-reused 546
7Receiving objects: 100% (554/554), 284.17 KiB | 204.00 KiB/s, done.
8Resolving deltas: 100% (243/243), done.
1.2、创建并启动集群
创建并启动集群,获取最新 Docker 镜像:
1cd tidb-docker-compose && docker-compose pull && docker-compose up -d
执行过程:
1[root@docker35 ~]# cd tidb-docker-compose/
2[root@docker35 tidb-docker-compose]# ll
3total 64
4drwxr-xr-x 3 root root 60 Apr 14 15:13 compose
5drwxr-xr-x 4 root root 4096 Apr 14 15:13 config
6drwxr-xr-x 3 root root 59 Apr 14 15:13 dashboard-installer
7drwxr-xr-x 3 root root 19 Apr 14 15:13 docker
8-rw-r--r-- 1 root root 11343 Apr 14 15:13 docker-compose-binlog.yml
9-rw-r--r-- 1 root root 292 Apr 14 15:13 docker-compose-test.yml
10-rw-r--r-- 1 root root 1566 Apr 14 15:13 docker-compose-tiflash-nightly.yml
11-rw-r--r-- 1 root root 5445 Apr 14 15:13 docker-compose.yml
12-rw-r--r-- 1 root root 4736 Apr 14 15:13 docker-swarm.yml
13-rw-r--r-- 1 root root 11294 Apr 14 15:13 LICENSE
14drwxr-xr-x 2 root root 24 Apr 14 15:13 pd
15-rw-r--r-- 1 root root 11335 Apr 14 15:13 README.md
16drwxr-xr-x 2 root root 24 Apr 14 15:13 tidb
17drwxr-xr-x 2 root root 24 Apr 14 15:13 tidb-binlog
18drwxr-xr-x 2 root root 24 Apr 14 15:13 tidb-vision
19drwxr-xr-x 2 root root 24 Apr 14 15:13 tikv
20drwxr-xr-x 6 root root 95 Apr 14 15:13 tispark
21drwxr-xr-x 2 root root 29 Apr 14 15:13 tools
22[root@docker35 tidb-docker-compose]# du -sh .
233.3M .
24[root@docker35 tidb-docker-compose]# docker-compose pull && docker-compose up -d
25Pulling pd0 ... done
26Pulling pd1 ... done
27Pulling pd2 ... done
28Pulling tikv0 ... done
29Pulling tikv1 ... done
30Pulling tikv2 ... done
31Pulling tidb ... done
32Pulling tispark-master ... done
33Pulling tispark-slave0 ... done
34Pulling tidb-vision ... done
35Pulling pushgateway ... done
36Pulling prometheus ... done
37Pulling grafana ... done
38Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
39Creating network "tidb-docker-compose_default" with the default driver
40Creating tidb-docker-compose_prometheus_1 ... done
41Creating tidb-docker-compose_grafana_1 ... done
42Creating tidb-docker-compose_pd0_1 ... done
43Creating tidb-docker-compose_pd2_1 ... done
44Creating tidb-docker-compose_pd1_1 ... done
45Creating tidb-docker-compose_tidb-vision_1 ... done
46Creating tidb-docker-compose_pushgateway_1 ... done
47Creating tidb-docker-compose_tikv2_1 ... done
48Creating tidb-docker-compose_tikv0_1 ... done
49Creating tidb-docker-compose_tikv1_1 ... done
50Creating tidb-docker-compose_tidb_1 ... done
51Creating tidb-docker-compose_tispark-master_1 ... done
52Creating tidb-docker-compose_tispark-slave0_1 ... done
53
54[root@docker35 tidb-docker-compose]# docker ps | grep tidb
550f0c9308b722 pingcap/tispark:latest "/opt/spark/sbin/sta…" 20 minutes ago Up 26 seconds 0.0.0.0:38081->38081/tcp tidb-docker-compose_tispark-slave0_1
56b0cfd6181ced pingcap/tispark:latest "/opt/spark/sbin/sta…" 20 minutes ago Up 26 seconds 0.0.0.0:7077->7077/tcp, 0.0.0.0:8080->8080/tcp tidb-docker-compose_tispark-master_1
578d3eb1f375c4 pingcap/tidb:latest "/tidb-server --stor…" 20 minutes ago Up 25 seconds 0.0.0.0:4000->4000/tcp, 0.0.0.0:10080->10080/tcp tidb-docker-compose_tidb_1
5815c524d6a77d pingcap/tikv:latest "/tikv-server --addr…" 20 minutes ago Up 2 seconds 20160/tcp tidb-docker-compose_tikv2_1
5934e5e542e6af pingcap/tikv:latest "/tikv-server --addr…" 20 minutes ago Up 1 second 20160/tcp tidb-docker-compose_tikv1_1
60cf16e9611c14 pingcap/tikv:latest "/tikv-server --addr…" 20 minutes ago Up 32 seconds 20160/tcp tidb-docker-compose_tikv0_1
61560daefe9121 pingcap/tidb-vision:latest "/bin/sh -c 'sed -i …" 20 minutes ago Up 26 seconds 80/tcp, 443/tcp, 2015/tcp, 0.0.0.0:8010->8010/tcp tidb-docker-compose_tidb-vision_1
6225ba4d9a30d7 prom/pushgateway:v0.3.1 "/bin/pushgateway --…" 20 minutes ago Up 35 seconds 9091/tcp tidb-docker-compose_pushgateway_1
63cd1c88da452c pingcap/pd:latest "/pd-server --name=p…" 20 minutes ago Up 26 seconds 2380/tcp, 0.0.0.0:1029->2379/tcp tidb-docker-compose_pd0_1
64ce363e945cdc prom/prometheus:v2.2.1 "/bin/prometheus --l…" 20 minutes ago Up 36 seconds 0.0.0.0:9090->9090/tcp tidb-docker-compose_prometheus_1
655768329d5789 pingcap/pd:latest "/pd-server --name=p…" 20 minutes ago Up 32 seconds 2380/tcp, 0.0.0.0:1027->2379/tcp tidb-docker-compose_pd2_1
66f132ec8ae049 pingcap/pd:latest "/pd-server --name=p…" 20 minutes ago Up 32 seconds 2380/tcp, 0.0.0.0:1028->2379/tcp tidb-docker-compose_pd1_1
67cc36a50a0d74 grafana/grafana:6.0.1 "/run.sh" 20 minutes ago Up 33 seconds 0.0.0.0:3000->3000/tcp tidb-docker-compose_grafana_1
68
69[root@docker35 tidb-docker-compose]# docker ps | grep tidb | wc -l
7013
二、访问集群
2.1、访问TiDB
1[root@docker35 tidb-docker-compose]# mysql -h 127.0.0.1 -P 4000 -u root
2Welcome to the MySQL monitor. Commands end with ; or \g.
3Your MySQL connection id is 5
4Server version: 5.7.25-TiDB-v5.0.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
5
6Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
7
8Oracle is a registered trademark of Oracle Corporation and/or its
9affiliates. Other names may be trademarks of their respective
10owners.
11
12Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
13
14mysql> show databases;
15+--------------------+
16| Database |
17+--------------------+
18| INFORMATION_SCHEMA |
19| METRICS_SCHEMA |
20| PERFORMANCE_SCHEMA |
21| mysql |
22| test |
23+--------------------+
245 rows in set (0.00 sec)
25
26mysql> create database lhrdb charset utf8mb4;
27Query OK, 0 rows affected (0.07 sec)
28
29mysql> show databases;
30+--------------------+
31| Database |
32+--------------------+
33| INFORMATION_SCHEMA |
34| METRICS_SCHEMA |
35| PERFORMANCE_SCHEMA |
36| lhrdb |
37| mysql |
38| test |
39+--------------------+
406 rows in set (0.00 sec)
2.2、访问集群 Grafana 监控
访问集群 Grafana 监控页面:http://localhost:3000 默认用户名和密码均为 admin。如下内容都可以监控到:

例如:

2.3、集群数据可视化
集群数据可视化(https://github.com/pingcap/tidb-vision):http://localhost:8010
如果启用了 tidb-vision,可以通过 http://localhost:8010 查看。

2.4、访问Spark Web UI
http://192.168.66.35:8080/

三、自定义集群
在完成快速部署后,以下组件已默认部署:3 个 PD,3 个 TiKV,1 个 TiDB 和监控组件 Prometheus,Pushgateway,Grafana 以及 tidb-vision。
如果想自定义集群,可以直接修改 docker-compose.yml
,但是手动修改比较繁琐而且容易出错,强烈建议使用 Helm 模板引擎生成 docker-compose.yml
文件。
安装 Helm
Helm 可以用作模板渲染引擎,只需要下载其 binary 文件即可以使用。
1curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash如果是 Mac 系统,也可以通过 Homebrew 安装:
1brew install kubernetes-helm下载
tidb-docker-compose1git clone https://github.com/pingcap/tidb-docker-compose.git自定义集群
1cd tidb-docker-compose &&
2cp compose/values.yaml values.yaml &&
3vim 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
文件1helm template -f values.yaml compose > generated-docker-compose.yml使用生成的
docker-compose.yml
创建并启动集群获取最新 Docker 镜像:
1docker-compose -f generated-docker-compose.yml pull1docker-compose -f generated-docker-compose.yml up -d访问集群
1mysql -h 127.0.0.1 -P 4000 -u root
四、访问 Spark shell 并加载 TiSpark
向 TiDB 集群中插入一些样本数据:
1docker-compose exec tispark-master bash &&
2cd /opt/spark/data/tispark-sample-data &&
3mysql -h tidb -P 4000 -u root < dss.ddl
当样本数据加载到 TiDB 集群之后,可以使用 docker-compose exec tispark-master opt/spark/bin/spark-shell
来访问 Spark shell。
1docker-compose exec tispark-master /opt/spark/bin/spark-shell
2...
3Spark context available as 'sc' (master = local[*], app id = local-1527045927617).
4Spark session available as 'spark'.
5Welcome to
6 ____ __
7 / __/__ ___ _____/ /__
8 _\ \/ _ \/ _ `/ __/ '_/
9 /___/ .__/\_,_/_/ /_/\_\ version 2.1.1
10 /_/
11
12Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172)
13Type in expressions to have them evaluated.
14Type :help for more information.
15scala> import org.apache.spark.sql.TiContext
16...
17scala> val ti = new TiContext(spark)
18...
19scala> ti.tidbMapDatabase("TPCH_001")
20...
21scala> spark.sql("select count(*) from lineitem").show
22+--------+
23|count(1)|
24+--------+
25| 60175|
26+--------+
27
你也可以通过 Python 或 R 来访问 Spark:
1docker-compose exec tispark-master /opt/spark/bin/pyspark &&
2docker-compose exec tispark-master /opt/spark/bin/sparkR
更多关于 TiSpark 的信息,参见 TiSpark 的详细文档,连接:https://docs.pingcap.com/zh/tidb/v3.0/get-started-with-tispark。
本文结束。

• 微信公众号:DB宝,作者:小麦苗
• 作者博客地址:http://blog.itpub.net/26736162/
• 作者微信:db_bao• 作者QQ:646634621,QQ群:230161599、618766405
• 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL DBA培训
• 版权所有,欢迎分享本文,转载请保留出处• 若有侵权请联系小麦苗删除

★DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag★DB宝笔试面试详解:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

长按下图识别二维码,关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。







