Docker容器学习 --- Tidb部署

本文介绍了如何使用Docker来部署TiDB集群。首先,官方建议安装最新版Docker,然后加载TiDB镜像,接着通过docker-compose来创建和管理集群。在部署过程中,修改了docker-compose.yml文件以适应需求。成功部署后,可以通过Grafana进行监控,其默认用户名和密码都是admin。文章还展示了登录数据库的流程,并提供了停止和还原环境的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理性的东西粘贴自官方网站:
TiDB 简介:

TiDBPingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 
数据库,结合了传统的 RDBMSNoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性
和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 
OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB 整体架构:

要深入了解 TiDB 的水平扩展和高可用特点,首先需要了解 TiDB 的整体架构。TiDB 集群主要包括三个核心组件:
TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件。

这里写图片描述

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

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

PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。
TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位
是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV
 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,
 不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也
 是以 Region 为单位进行调度。
TiSpark

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

核心特性:
1,水平扩展:

无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 
SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 
负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 
节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例
(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。

2,高可用:

高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。

官方网站要求安装docker最新版:

[root@foundation38 Desktop]# docker version   查看docker版本
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:36:45 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:36:45 2017
 OS/Arch:      linux/amd64
 Experimental: false
[root@foundation38 Desktop]# systemctl stop docker.service  停止docker服务
[root@foundation38 Desktop]# rpm -qa | grep docker
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch
docker-engine-17.03.1.ce-1.el7.centos.x86_64
[root@foundation38 Desktop]# rpm -e `rpm -qa | grep docker`  卸载旧版docker
[root@foundation38 Desktop]# ls
gitlab  tidb  Tidb部署  tispark.tar
[root@foundation38 Desktop]# cd gitlab/
[root@foundation38 gitlab]# ls
container-selinux-2.9-4.el7.noarch.rpm  GitLab安装.wps
docker-ce-18.06.0.ce-3.el7.x86_64.rpm   jdk-8u171-linux-x64.rpm
gitlab-ce-11.0.1-ce.0.el6.x86_64.rpm    jenkins-2.121.1-1.1.noarch.rpm
gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm    jenkins.war
[root@foundation38 gitlab]# yum install -y docker-ce-18.06.0.ce-3.el7.x86_64.rpm   安装docker最新版

这里写图片描述

[root@foundation38 docker]# git clone https://github.com/pingcap/tidb-docker-compose.git
Cloning into 'tidb-docker-compose'...
fatal: unable to access 'https://github.com/pingcap/tidb-docker-compose.git/': Peer reports incompatible or unsupported protocol version.  报错由于版本原因无法下载
[root@foundation38 docker]#  yum update nss curl yum update nss curl  进行uodate
[root@foundation38 docker]# git clone https://github.com/pingcap/tidb-docker-compose.git  可以正常下载
Cloning into 'tidb-docker-compose'...
remote: Counting objects: 309, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 309 (delta 12), reused 17 (delta 6), pack-reused 271
Receiving objects: 100% (309/309), 180.81 KiB | 78.00 KiB/s, done.
Resolving deltas: 100% (123/123), done.

这里写图片描述

root@foundation38 docker]# ls
auth  certs  compose  Dockerfile  ssh  test  tidb-docker-compose  web  yum.repo
### 如何通过 Docker 部署 TiDB 使用 Docker 部署 TiDB 是一种快速、便捷的方式,适合开发环境或测试环境中搭建 TiDB 集群。以下是关于如何通过 Docker 部署 TiDB 的最佳实践。 #### 1. 准备工作 确保本地已安装 DockerDocker Compose 工具。可以通过以下命令验证是否已经正确安装: ```bash docker --version docker-compose --version ``` 如果未安装,则需先完成安装过程[^1]。 #### 2. 获取官方提供的 Docker Compose 文件 TiDB 官方提供了基于 Docker Compose 的一键启动脚本文件 `docker-compose.yml`,可以直接下载并运行该文件来快速构建一个完整的 TiDB 集群。执行以下命令获取最新版本的 `docker-compose.yml` 文件: ```bash curl -s https://raw.githubusercontent.com/pingcap/tidb-docker/main/docker-compose.yaml > docker-compose.yaml ``` 此文件定义了一个包含 TiDB、PD 和 TiKV 组件的基础集群结构。 #### 3. 启动 TiDB 集群 在成功拉取到 `docker-compose.yaml` 文件之后,在同一目录下运行以下命令即可启动整个 TiDB 集群: ```bash docker-compose up -d ``` 上述命令会以后台模式启动所有的容器组件,并自动分配端口映射关系。默认情况下,TiDB 将监听宿主机上的 4000 端口作为 SQL 查询入口。 #### 4. 访问 TiDB 集群 一旦集群正常运行起来后,就可以连接至 TiDB 提供的服务地址进行交互操作了。例如,可以利用 MySQL 客户端工具访问刚刚创建好的实例: ```bash mysql -h 127.0.0.1 -P 4000 -u root ``` 此时应该能够顺利进入命令行界面并与之通信。 #### 5. 资源优化设置 (可选) 为了进一步提升性能表现或者适应不同类型的业务负载特点,还可以针对具体参数做适当调整。例如修改 tikv 或者 tidb 相关配置项以满足特定需求: - 对于资源受限的小规模场景,降低各子服务占用 CPU 数量以及内存大小限制可能是一个不错的选择; ```yaml tidb: image: pingcap/tidb:v6.5.0 command: ["--store=tikv", "--path=pd:2379"] environment: - TZ=Asia/Shanghai deploy: resources: limits: cpus: '2' memory: 4G ``` 这里展示了如何限定单个 TiDB Server 所能使用的最大核心数为两个核以及四吉字节 RAM 上限的例子[^5]。 --- ### 注意事项 尽管借助 Docker 技术简化了许多复杂度较高的环节,但在生产级别部署之前仍需要注意一些潜在风险因素,比如持久化存储方案的设计、网络分区容忍能力评估等方面的内容都需要额外考虑进去[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值