暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【DB宝57】使用Docker-Compose快速部署TiDB集群环境

DB宝 2021-06-22
2093

目录

    一、快速部署
    1.1、下载tidb-docker-compose
    1.2、创建并启动集群
    二、访问集群
    2.1、访问TiDB
    2.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
    文件。

    1. 安装 Helm

      Helm 可以用作模板渲染引擎,只需要下载其 binary 文件即可以使用。

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

      如果是 Mac 系统,也可以通过 Homebrew 安装:

      1brew install kubernetes-helm

    2. 下载 tidb-docker-compose

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

    3. 自定义集群

      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

    1. 生成 docker-compose.yml
      文件

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

    2. 使用生成的 docker-compose.yml
      创建并启动集群

      获取最新 Docker 镜像:

      1docker-compose -f generated-docker-compose.yml pull

      1docker-compose -f generated-docker-compose.yml up -d

    3. 访问集群

      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宝,学习最实用的数据库技术。


      文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论