使用 Docker Compose 快速构建 TiDB 集群
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群。Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止。
对于生产环境,不要使用 Docker Compose 进行部署,而应使用 Ansible 部署 TiDB 集群。
一、准备环境
确保你的机器上已安装:
Docker(17.06.0 及以上版本)
Docker Compose
Git
二、快速部署
下载
tidb-docker-composegit 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 -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-composegit 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 -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 -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 的详细文档。
使用 Docker Compose 快速构建 TiDB 集群的更多相关文章
- Docker快速构建Redis集群(cluster)
Docker快速构建Redis集群(cluster) 以所有redis实例运行在同一台宿主机上为例子 搭建步骤 redis集群目录清单 . ├── Dockerfile ├── make_master ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- 基于Docker Compose部署分布式MinIO集群
一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...
- 使用Docker构建redis集群--最靠谱的版本
1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...
- docker 快速部署ES集群 spark集群
1) 拉下来 ES集群 spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...
- 在Docker中部署GreatSQL并构建MGR集群
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 为了方面社区用户体验GreatSQL,我们同时还提供Docker镜像,本文详细介绍如何在Docker中部署GreatSQL ...
- 使用Docker Swarm搭建分布式爬虫集群
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...
- 快速搭建Jenkins集群
关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故 ...
随机推荐
- android 发送邮件--实现 send email for android
Android 发送邮件消息 用途:发送验证码,通过邮箱找回密码 不需要调用客户端直接使用代码进行发送 本项目使用到的jar包–本文结尾会附带下载链接 activation.jar additionn ...
- JedisClient操作redis 单机版和集群版
一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency&g ...
- Linux设备驱动程序学习----1.设备驱动程序简介
设备驱动程序简介 更多内容请参考Linux设备驱动程序学习----目录 1. 简介 Linux系统的优点是,系统内部实现细节对所有人都是公开的.Linux内核由大量复杂的代码组成,设备驱动程序可以 ...
- Jibx 只绑定需要的字段
栗子: binding.xml <?xml version="1.0" encoding="UTF-8"?> <binding&g ...
- 【Android】Failed to convert @drawable/picture into a drawable
刚使用 eclipse 遇到了这个问题,图片的效果未显示出来,上网查找后发现这其实不算是问题:重启下工程或 eclipse 就行了. PS: 直接运行工程也可以,不影响效果.
- HttpsUtils
package io.renren.modules.jqr.util; import java.io.BufferedReader; import java.io.InputStream; impor ...
- SQLServer2000同步复制技术实现步骤
SQLServer2000同步复制技术实现步骤 一. 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算 ...
- 四、Python基础(1)
目录 四.Python基础(1) 四.Python基础(1) 1.什么是变量? 一种变化的量,量是记录世界上的状态,变指得是这些状态是会变化的. 2.为什么有变量? 因为计算机程序的运行就是一系列状态 ...
- 优雅的对象转换解决方案-MapStruct及其入门(一)
第一次看到 MapStruct 的时候, 我个人非常的开心. 因为其跟我内心里面的想法不谋而合. 1 MapStruct 是什么? 1.1 JavaBean 的困扰 对于代码中 JavaBean之间的 ...
- php 获取未来七天的日期和星期
php获取未来七天的日期和星期代码 for($i=4;$i<8;$i++){ $dateArray[$i]=date('Y-m-d',strtotime(date('Y-m- ...