基于 DC2 和 Docker Compose 搭建 TiDB

TiDB 简介

TiDB 是一款由 PingCAP 设计的开源分布式 HTAP 数据库。结合了传统的 RDBMS 和 NoSQL 优势,TiDB(NewSQL)具备以下特性:

  • 高度支持 MySQL 协议
  • 轻松应对水平扩展
  • 100% 支持分布式 ACID 事务
  • 基于 Raft 协议保证数据一致性,并实现故障自动恢复
  • 一站式 HTAP 解决方案
  • 云原生 SQL 数据库

TiDB 可以轻松替换现有的以 MySQL 协议为基础的各类数据库中间件或者分库分表方案,减少开发人员对数据库 Scale 细节问题的关注来提升生产力。

TiDB 架构

在这里插入图片描述

TiKV Server

TiKV Server 是一个分布式 Key-Value 存储。存储数据的基本单位是 Region,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 以 Region 为单位进行调度。

延伸阅读:
https://pingcap.com/blog-cn/tidb-internal-1/
PD Server

Placement Driver(简称 PD)是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。

延伸阅读:
https://pingcap.com/blog-cn/tidb-internal-3/
TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址。

延伸阅读:
https://pingcap.com/blog-cn/tidb-internal-2/
TiSpark

TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

环境依赖

本文基于 Linux 发行版本 Centos7.x 配合流行的包管理工具 yum 进行演示,因此您需要准备一台 Centos7.x 版本的服务器并安装好 yum。滴滴云 DC2 拥有性价比高、安全可靠和秒级计费等优势,建议您直接购买 DC2 来学习本教程。

以下内容基于滴滴云 DC2(CentOS7.3 16 核 CPU 32GB 内存 90GB HDD 存储按时长计费)公网 IP(116.85.37.138 按出流量计费)进行演示。

安装过程

登录 DC2 并切换到 root 账户
$ ssh dc2-user@116.85.37.138
$ sudo -iu root
安装 Docker-CE
  1. 切换 yum 源到国内:
$ yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 更新 yum 软件源缓存,并安装 Docker-CE:
$ yum makecache fast
$ yum install docker-ce
  1. 启动 Docker-CE:
$ systemctl enable docker
$ systemctl start docker
  1. 测试 Docker-CE 是否安装成功, 输出以下信息,说明安装成功:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world
d1725b59e92d: Pulling fs layer 
d1725b59e92d: Pull complete 
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...
安装Docker Compose

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。下载二进制文件并进行安装:

$ curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
安装 TiDB
  1. 下载 tidb-docker-compose:
$ git clone https://github.com/pingcap/tidb-docker-compose.git
  1. 创建集群:
$ cd tidb-docker-compose && docker-compose pull

Pulling dashboard-installer ... done
Pulling pd2                 ... done
Pulling pd1                 ... done
Pulling pd0                 ... done
Pulling tikv0               ... done
Pulling tikv1               ... done
Pulling tikv2               ... done
Pulling prometheus          ... done
Pulling tispark-master      ... done
Pulling tispark-slave0      ... done
Pulling tidb                ... done
Pulling tidb-vision         ... done
Pulling grafana             ... done
Pulling pushgateway         ... done
  1. 启动集群:
$ docker-compose up -d

Creating network "tidb-docker-compose_default" with the default driver
Creating tidb-docker-compose_grafana_1             ... done
Creating tidb-docker-compose_pd2_1                 ... done
Creating tidb-docker-compose_pd0_1                 ... done
Creating tidb-docker-compose_dashboard-installer_1 ... done
Creating tidb-docker-compose_pd1_1                 ... done
Creating tidb-docker-compose_pushgateway_1         ... done
Creating tidb-docker-compose_tidb-vision_1         ... done
Creating tidb-docker-compose_prometheus_1          ... done
Creating tidb-docker-compose_tikv0_1               ... done
Creating tidb-docker-compose_tikv2_1               ... done
Creating tidb-docker-compose_tikv1_1               ... done
Creating tidb-docker-compose_tispark-master_1      ... done
Creating tidb-docker-compose_tidb_1                ... done
Creating tidb-docker-compose_tispark-slave0_1      ... done

验证 TiDB 功能
  1. 安装 MySQL 客户端,并连接 TiDB 默认端口:
$ yum install -y mysql
  1. 下载 MySQL 验证数据:
$ git clone https://github.com/datacharmer/test_db.git
  1. 连接 TiDB 默认端口随意操作数据进行验证:
$ mysql -h 127.0.0.1 -P 4000 -u root
$ MySQL > source test_db/employees.sql;
$ MySQL [employees]> desc employees;
+------------+---------------+------+------+---------+-------+
| Field      | Type          | Null | Key  | Default | Extra |
+------------+---------------+------+------+---------+-------+
| emp_no     | int(11)       | NO   | PRI  | NULL    |       |
| birth_date | date          | NO   |      | NULL    |       |
| first_name | varchar(14)   | NO   |      | NULL    |       |
| last_name  | varchar(16)   | NO   |      | NULL    |       |
| gender     | enum('M','F') | NO   |      | NULL    |       |
| hire_date  | date          | NO   |      | NULL    |       |
+------------+---------------+------+------+---------+-------+
  1. 访问集群 Grafana 监控页面(http://116.85.37.138:3000)以及集群数据可视化页面(http://116.85.37.138:8010)进行验证

在这里插入图片描述

参考

https://pingcap.com/docs-cn/
https://legacy.gitbook.com/book/yeasy/docker_practice/details

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值