使用 Docker 搭建 TiDB 数据库集群
一、简介
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。
本文使用 Docker 搭建 TiDB 数据库,对于生产环境,不要使用 Docker 进行部署,而应使用 TiDB Ansible 部署 TiDB 集群。
二、部署
部署 TiDB 集群主要包括 3 个服务组件:
- TiDB
- TiKV
- PD
1、镜像拉取
对应的最新 Docker 镜像可以通过 Docker 官方镜像仓库 获取:
1 | docker pull pingcap/tidb:latest |
镜像拉取成功使用 docker ps
命令查看:
1 | [root@lsf3wflgz4 ~]# docker images |
2、创建网络
创建docker私有网络:实现多个容器之间使用桥接通讯
1 | docker network create totonet |
所有的启动的容器都是用totonet网络,可以将所有的容器都桥接到该网络上,并且该网络自带dns解析,可以做到使用容器的名称直接访问容器。
3、部署 PD
1 | docker run -d --name pd1 --network totonet -v /etc/localtime:/etc/localtime:ro -v /home/data/tidb/pd1:/data docker.io/pingcap/pd --name="pd1" --data-dir="/data/pd1" --client-urls="http://0.0.0.0:2379" --peer-urls="http://0.0.0.0:2380" --advertise-client-urls=http://pd1:2379 -ise-peer-urls="http://pd1:2380" --initial-cluster="pd1=http://pd1:2380" |
参数说明
–name=“pd1” #当前 PD 的名字如果你需要启动多个 PD,一定要给 PD 使用不同的名字。
–network totonet #totonet网络 ,所有容器通过网络通信。
–data-dir=“/data/pd1” #PD 存储数据路径。
–client-urls=“http://0.0.0.0:2379” # 处理客户端请求监听 URL 列表,如果是运行在 docker 则需要指定为 http://0.0.0.0:2379,或者该容器的地址。
–peer-urls=“http://0.0.0.0:2380” # 处理其他 PD 节点请求监听 URL 列表。果部署一个集群,–peer-urls 必须指定当前主机的 IP 地址,如果是运行在 docker 则需要指定为 http://0.0.0.0:2380。
–initial-cluster=“pd1=http://pd1:2380” #初始化 PD 集群配置。如果你需要启动三台 PD,那么 initial-cluster 可能就是 pd1=http://192.168.100.113:2380, pd2=http://192.168.100.114:2380, pd3=192.168.100.115:2380。
4、部署 TiKV
1 | docker run -d --name tikv1 --network totonet --ulimit nofile=1000000:1000000 -v /etc/localtime:/etc/localtime:ro -v /home/data/tidb/tikv1:/data docker.io/pingcap/tikv --advertise-addr="tikv1:20160" --addr="0.0.0.0:20160" --data-dir="/data/tikv1" --pd="pd1:2379" |
参数说明
–addr=“tikv1:20160” #TiKV 监听地址如果部署一个集群,–addr 必须指定当前主机的 IP 地址,例如 “192.168.100.113:20160”,如果是运行在 docker 则需要指定为 “0.0.0.0:20160”
–data-dir=“/data/tikv1” # iKV 数据存储路径
–pd=“pd1:2379” # PD 地址列表。TiKV 必须使用这个值连接 PD,才能正常工作。使用逗号来分隔多个 PD 地址,例如: 192.168.100.113:2379, 192.168.100.114:2379, 192.168.100.115:2379
5、部署 PD
1 | docker run -d --name tidb --network totonet --privileged=true -p 4000:4000 -p 10080:10080 docker.io/pingcap/tidb --store=tikv --path="pd1:2379" |
参数说明
–store=tikv #用来指定 TiDB 底层使用的存储引擎,而 tikv 是一个分布式存储引擎。
–path=“pd1:2379,pd2:2379,pd3:2379” #对于 --store = tikv 时必须指定path,对于 “TiKV” 存储引擎来说,path 指定的是实际的 PD 地址。
6、查看容器运行状态
1 | docker ps |
三、连接 TiDB 数据库
使用以下命令连接 TiDB 数据库,默认没有密码。
1 | mysql -u root -h 182.61.5.87 -P 4000 |
创建用户,用户名 test ,密码 test
1 | CREATE USER 'test'@'%' IDENTIFIED BY 'test'; |
修改数据库 root 密码为 123456
1 | use mysql; |
重启容器使配置生效
1 | docker restart tidb |
再次连接 TiDB 数据库
1 | mysql -u root -h 182.61.5.87 -P 4000 -p'123456' |
教程到此搭建成功!
四、参考文档
感谢以下文章支持!