使用docker部署tidb数据库结合zabbix

已经安装部署了docker

1 、拉取 TiDB 的 Docker 镜像

部署 TiDB 集群主要包括 3 个服务组件:

  • TiDB
  • TiKV
  • PD
docker pull pingcap/tidb:latest
docker pull pingcap/tikv:latest
docker pull pingcap/pd:latest

镜像拉取成功进行查看:

[root@toto5 docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
pingcap/tidb        latest              e35fa9d297a9        About an hour ago   79.9MB
pingcap/pd          latest              0adb255b6930        10 hours ago        80.1MB
pingcap/tikv        latest              9b6d825c9d4f        5 days ago          358MB

创建docker私有网络:实现多个容器之间使用桥接通讯:

  docker network create totonet
[root@toto5 docker]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
10aec746c459        bridge              bridge              local
f0d997f7d184        host                host                local
3b2b9ef5f2b3        none                null                local
a2ea6b393e90        totonet             bridge              local

所有的启动的容器都是用totonet网络,可以将所有的容器都桥接到该网络上,并且该网络自带dns解析,可以做到使用容器的名称直接访问容器。

部署一个多节点集群

准备再一个物理机上,启动器个容器,模拟七台机器进行实验:
TiDB
PD1 PD2 PD3
TiKV1 TiKV2 TiKV3

服务启动顺序:
pd—>tikv—>tidb

启动pd1

docker run -d --name pd1   --network totonet \
  -v /tidb:/data \
  pingcap/pd:latest \
  --name="pd1" \
  --data-dir="/data/pd1" \
  --client-urls="http://0.0.0.0:2379" \
  --peer-urls="http://0.0.0.0:2380" \
  --initial-cluster="pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"

启动pd2

docker run -d --name pd2   --network totonet  \
-v /tidb:/data  \
pingcap/pd:latest  \
--name="pd2"  \
--data-dir="/data/pd2" \
 --client-urls="http://0.0.0.0:2379"  \
 --peer-urls="http://0.0.0.0:2380"  \
 --initial-cluster="pd2=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"

启动pd3

docker run -d --name pd3   --network totonet \
-v /tidb:/data\
pingcap/pd:latest  \
--name="pd3"  \
--data-dir="/data/pd3"  \
--client-urls="http://0.0.0.0:2379"  \
--peer-urls="http://0.0.0.0:2380"  \
--initial-cluster="pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"

参数说明:

--name="pd3"  \     #当前 PD 的名字如果你需要启动多个 PD,一定要给 PD 使用不同的名字
--data-dir="/data/pd3"  \   #PD 存储数据路径。
--client-urls="http://pd3:2379"  \   # 处理客户端请求监听 URL 列表,如果是运行在 docker 则需要指定为 http://0.0.0.0:2379,或者该容器的地址
--peer-urls="http://pd3:2380"  \  # 处理其他 PD 节点请求监听 URL 列表。果部署一个集群,--peer-urls 必须指定当前主机的 IP 地址,如果是运行在 docker 则需要指定为 http://0.0.0.0:2380
--initial-cluster="pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3: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。

启动TiKV1

docker run -d --name tikv1       --network totonet  \
  -v /tidb:/data \
  pingcap/tikv:latest \
  --addr="0.0.0.0:20160" \
  --data-dir="/data/tikv1" \
  --pd="pd1:2379,pd2:2379,pd3:2379"

启动TiKV2

docker run -d --name tikv2       --network totonet  \
  -v /tidb:/data \
  pingcap/tikv:latest \
  --addr="0.0.0.0:20160" \
  --data-dir="/data/tikv2" \
  --pd="pd1:2379,pd2:2379,pd3:2379"

启动TiKV3

docker run -d --name tikv3       --network totonet  \
  -v /tidb:/data \
  pingcap/tikv:latest \
  --addr="0.0.0.0:20160" \
  --data-dir="/data/tikv3" \
  --pd="pd1:2379,pd2:2379,pd3:2379"

参数说明:

 --addr="tikv3:20160" \   #TiKV 监听地址如果部署一个集群,--addr 必须指定当前主机的 IP 地址,例如 “192.168.100.113:20160”,如果是运行在 docker 则需要指定为 “0.0.0.0:20160”
  --data-dir="/data/tikv3" \   # iKV 数据存储路径
  --pd="pd1:2379,pd2:2379,pd3:2379"   # PD 地址列表。TiKV 必须使用这个值连接 PD,才能正常工作。使用逗号来分隔多个 PD 地址,例如: 192.168.100.113:2379, 192.168.100.114:2379, 192.168.100.115:2379

启动TiDB

docker run -d --name tidb     --network totonet \
  -p 3306:4000 \
  pingcap/tidb:latest \
  --store=tikv \
  --path="pd1:2379,pd2:2379,pd3:2379"

参数说明:

 --store=tikv \  #用来指定 TiDB 底层使用的存储引擎,而 tikv 是一个分布式存储引擎
  --path="pd1:2379,pd2:2379,pd3:2379"
  #对于 --store = tikv 时必须指定path,对于 “TiKV” 存储引擎来说,path 指定的是实际的 PD 地址。

具体参数可参看官方文档:https://www.pingcap.com/docs-cn/op-guide/configuration/

查看容器启动情况
[root@toto5 mnt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS                    NAMES
4ca495ef48ae        pingcap/tidb:latest   "/tidb-server --stor…"   49 seconds ago       Up 39 seconds                   0.0.0.0:3306->4000/tcp   tidb
5656c4d13642        pingcap/tikv:latest   "/tikv-server --addr…"   About a minute ago   Up 54 seconds                   20160/tcp                tikv3
bc13f067969d        pingcap/tikv:latest   "/tikv-server --addr…"   About a minute ago   Up About a minute               20160/tcp                tikv2
a9d8dd270410        pingcap/tikv:latest   "/tikv-server --addr…"   About a minute ago   Up About a minute               20160/tcp                tikv1
b3ccf0b3e1bd        pingcap/pd:latest     "/pd-server --name=p…"   About a minute ago   Exited (1) About a minute ago                            pd3
c098a342fd2d        pingcap/pd:latest     "/pd-server --name=p…"   About a minute ago   Exited (1) About a minute ago                            pd2
82f39ed543fc        pingcap/pd:latest     "/pd-server --name=p…"   About a minute ago   Exited (1) About a minute ago                            pd1
查看端口启动情况

由于已经做了端都映射,将容器中的4000端口映射到物理机的3306端口,查看3306端口是否启动即可

[root@toto5 mnt]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      689/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      902/master          
tcp        0      0 172.25.13.150:22        172.25.13.250:39374     ESTABLISHED 2200/sshd: root@pts 
tcp6       0      0 :::3306                 :::*                    LISTEN      3617/docker-proxy   
tcp6       0      0 :::22                   :::*                    LISTEN      689/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      902/master          
使用数据库客户端连接该数据库
[root@foundation13 docker_images]# mysql -h 172.25.254.13 -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.25-TiDB-v3.0.0-rc.1-297-g2ef4c5c35 MySQL Community Server (Apache License 2.0)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.08 sec)

MySQL [(none)]> 

数据库正常启动,将数据导入以及将zabbix的配置文件修改连接该数据即可。

你可能感兴趣的:(使用docker部署tidb数据库结合zabbix)