本文主要讲解使用docker-compose快速部署TiDB集群,此方法官方已不建议在生产环境进行部署。
注:不建议使用此方法跨物理节点部署。
准备
- Docker (version >= 17.06.0)
- Docker Compose
- Git
- MySQL Client
获取 tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git
自定义集群
完整版见: tidb-docker-compose/docker-compose.yml
默认的情况下:3个PD,3个TiKV,1个TiDB和监控组件Pushgateway,Prometheus,Grafana以及TiDB-vision。
自定义集群需要修改docker-compose.yml文件
以下是修改成1个PD,1个TiKV,1个TiDB以及相应的监控组件
version: '2.1'
services:
pd0:
image: pingcap/pd:latest
ports:
- "2379:2379"
volumes:
- ./config/pd.toml:/pd.toml:ro
- ./data:/data
- ./logs:/logs
command:
- --name=pd0
- --client-urls=http://0.0.0.0:2379
- --peer-urls=http://0.0.0.0:2380
- --advertise-client-urls=http://pd0:2379
- --advertise-peer-urls=http://pd0:2380
- --initial-cluster=pd0=http://pd0:2380
- --data-dir=/data/pd0
- --config=/pd.toml
- --log-file=/logs/pd0.log
restart: on-failure
tikv0:
image: pingcap/tikv:latest
volumes:
- ./config/tikv.toml:/tikv.toml:ro
- ./data:/data
- ./logs:/logs
command:
- --addr=0.0.0.0:20160
- --advertise-addr=tikv0:20160
- --data-dir=/data/tikv0
- --pd=pd0:2379
- --config=/tikv.toml
- --log-file=/logs/tikv0.log
depends_on:
- "pd0"
restart: on-failure
tikv1:
image: pingcap/tikv:latest
volumes:
- ./config/tikv.toml:/tikv.toml:ro
- ./data:/data
- ./logs:/logs
command:
- --addr=0.0.0.0:20160
- --advertise-addr=tikv1:20160
- --data-dir=/data/tikv1
- --pd=pd0:2379
- --config=/tikv.toml
- --log-file=/logs/tikv1.log
depends_on:
- "pd0"
restart: on-failure
tidb:
image: pingcap/tidb:latest
ports:
- "4000:4000"
- "10080:10080"
volumes:
- ./config/tidb.toml:/tidb.toml:ro
- ./logs:/logs
command:
- --store=tikv
- --path=pd0:2379
- --config=/tidb.toml
- --log-file=/logs/tidb.log
- --advertise-address=tidb
depends_on:
- "tikv0"
- "tikv1"
restart: on-failure
# monitors
pushgateway:
image: prom/pushgateway:v0.3.1
command:
- --log.level=error
restart: on-failure
prometheus:
user: root
image: prom/prometheus:v2.2.1
command:
- --log.level=error
- --storage.tsdb.path=/data/prometheus
- --config.file=/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./config/pd.rules.yml:/etc/prometheus/pd.rules.yml:ro
- ./config/tikv.rules.yml:/etc/prometheus/tikv.rules.yml:ro
- ./config/tidb.rules.yml:/etc/prometheus/tidb.rules.yml:ro
- ./data:/data
restart: on-failure
grafana:
image: grafana/grafana:6.0.1
user: "0"
environment:
GF_LOG_LEVEL: error
GF_PATHS_PROVISIONING: /etc/grafana/provisioning
GF_PATHS_CONFIG: /etc/grafana/grafana.ini
volumes:
- ./config/grafana:/etc/grafana
- ./config/dashboards:/tmp/dashboards
- ./data/grafana:/var/lib/grafana
ports:
- "3000:3000"
restart: on-failure
创建并启动集群
# 拉取镜像
docker-compose pull
# 启动集群
docker-compose up -d
执行成功后
示例中是启动了1个PD,1个TiKV,1个TiDB
[root@test tidb-docker-compose]# docker ps | grep pingcap
836a438b5d30 pingcap/tidb:latest "/tidb-server --stor…" 5 minutes ago Up 5 minutes 0.0.0.0:4000->4000/tcp, 0.0.0.0:10080->10080/tcp tidb-docker-compose_tidb_1
1015456a80da pingcap/tikv:latest "/tikv-server --addr…" 5 minutes ago Up 5 minutes 20160/tcp tidb-docker-compose_tikv0_1
61357ea205ac pingcap/tidb-vision:latest "/bin/sh -c 'sed -i …" 5 minutes ago Up 5 minutes 80/tcp, 443/tcp, 2015/tcp, 0.0.0.0:8010->8010/tcp tidb-docker-compose_tidb-vision_1
28adb2db3359 pingcap/pd:latest "/pd-server --name=p…" 5 minutes ago Up 5 minutes 2379-2380/tcp, 0.0.0.0:32768->3379/tcp tidb-docker-compose_pd0_1
进入TiDB SQL
[root@test tidb-docker-compose]# mysql -h 127.0.0.1 -P 4000 -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.7.25-TiDB-v4.0.9 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> SHOW ENGINES;
+--------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------+---------+------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------+---------+------------------------------------------------------------+--------------+------+------------+
1 row in set (0.00 sec)
MySQL [(none)]> SHOW STATUS;
+--------------------+--------------------------------------+
| Variable_name | Value |
+--------------------+--------------------------------------+
| Ssl_cipher | |
| Ssl_cipher_list | |
| Ssl_verify_mode | 0 |
| Ssl_version | |
| ddl_schema_version | 22 |
| server_id | 07502e33-8011-4773-ae50-8533f2634b02 |
+--------------------+--------------------------------------+
6 rows in set (0.01 sec)
可以看到,兼容 MySQL5.7
Server version: 5.7.25-TiDB-v4.0.9 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
停止集群
docker-compose stop