# Tidb 部署一个多节点集群
# 假设我们打算在 7 台主机上部署一个 TiDB 集群:
主机名 IP 部署服务 数据盘挂载
host1 192.168.1.101 PD1 /data
host2 192.168.1.102 PD2 /data
host3 192.168.1.103 PD3 /data
host4 192.168.1.104 TiKV1 /data
host5 192.168.1.105 TiKV2 /data
host6 192.168.1.106 TiKV3 /data
host7 192.168.1.107 TiDB1 /data
host8 192.168.1.108 TiDB2 /data
host9 192.168.1.109 TiDB3 /data
host10 192.168.1.110 tispark-master /data
host11 192.168.1.111 tispark-slave /data
# 启动 PD
应用: tidb -> 添加服务: pd1
镜像: pingcap/pd:latest
环境变量:
name = "pd1"
data-dir = "/data/pd1"
client-urls = "http://0.0.0.0:2379"
advertise-client-urls = "http://pd1:2379"
peer-urls = "http://0.0.0.0:2380"
advertise-peer-urls = "http://pd1:2380"
initial-cluster = "pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"
log-file = "/logs/pd1.logs"
log-level = "info"
cluster-id = "1"
data-dir = "/data/pd1"
config = "/pd.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/pd.toml:/pd.toml:ro
应用: tidb -> 添加服务: pd2
镜像: pingcap/pd:latest
环境变量:
name = "pd2"
data-dir = "/data/pd2"
client-urls = "http://0.0.0.0:2379"
advertise-client-urls = "http://pd2:2379"
peer-urls = "http://0.0.0.0:2380"
advertise-peer-urls = "http://pd2:2380"
initial-cluster = "pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"
log-file = "/logs/pd2.logs"
log-level = "info"
cluster-id = "1"
data-dir = "/data/pd2"
config = "/pd.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/pd.toml:/pd.toml:ro
应用: tidb -> 添加服务: pd3
镜像: pingcap/pd:latest
环境变量:
name = "pd3"
data-dir = "/data/pd3"
client-urls = "http://0.0.0.0:2379"
advertise-client-urls = "http://pd3:2379"
peer-urls = "http://0.0.0.0:2380"
advertise-peer-urls = "http://pd3:2380"
initial-cluster = "pd1=http://pd1:2380,pd2=http://pd2:2380,pd3=http://pd3:2380"
log-file = "/logs/pd3.logs"
log-level = "info"
cluster-id = "1"
data-dir = "/data/pd3"
config = "/pd.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/pd.toml:/pd.toml:ro
# 启动 TiKV
应用: tidb -> 添加服务: tikv1
镜像: pingcap/tikv:latest
环境变量:
addr = "0.0.0.0:20160"
advertise-addr = "tikv1:20160"
data-dir = "/data/tikv1"
pd = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tikv1.logs"
config = "/tikv.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/tikv.toml:/tikv.toml:ro
应用: tidb -> 添加服务: tikv2
镜像: pingcap/tikv:latest
环境变量:
addr = "0.0.0.0:20160"
advertise-addr = "tikv2:20160"
data-dir = "/data/tikv2"
pd = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tikv2.logs"
config = "/tikv.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/tikv.toml:/tikv.toml:ro
应用: tidb -> 添加服务: tikv3
镜像: pingcap/tikv:latest
环境变量:
addr = "0.0.0.0:20160"
advertise-addr = "tikv3:20160"
data-dir = "/data/tikv3"
pd = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tikv3.logs"
config = "/tikv.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/db/tidb:/data
/data/docker/mysql/tidb/tikv.toml:/tikv.toml:ro
# 启动 TiDB
应用: tidb -> 添加服务: tidb1
镜像: pingcap/tidb:latest
环境变量:
store = "tikv"
path = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tidb1.logs"
advertise-address = "tidb1"
enable-binlog = "true"
config = "/tidb.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/file:/home/file
/data/docker/mysql/tidb/tidb.toml:/tidb.toml:ro
应用: tidb -> 添加服务: tidb2
镜像: pingcap/tidb:latest
环境变量:
store = "tikv"
path = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tidb2.logs"
advertise-address = "tidb2"
enable-binlog = "true"
config = "/tidb.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/file:/home/file
/data/docker/mysql/tidb/tidb.toml:/tidb.toml:ro
应用: tidb -> 添加服务: tidb3
镜像: pingcap/tidb:latest
环境变量:
store = "tikv"
path = "pd1:2379,pd2:2379,pd3:2379"
log-file = "/logs/tidb3.logs"
advertise-address = "tidb3"
enable-binlog = "true"
config = "/tidb.toml"
卷:
/etc/localtime:/etc/localtime:ro
/data/file/logs/tidb:/logs
/data/file:/home/file
/data/docker/mysql/tidb/tidb.toml:/tidb.toml:ro
# tidb1,tidb2,tidb3: 安装mysql客户端
apk update
apk --update --no-cache add net-tools git curl axel wget vim
apk --update --no-cache add unzip zip geoip cmake autoconf automake libtool go
apk add --no-cache gcc g++ python python-dev py-pip mysql-dev linux-headers libffi-dev
apk --update --no-cache add geoip-dev pcre gd pcre-dev zlib-dev build-base linux-headers libedit libxml2 musl zlib libxslt libxslt-dev gd-dev libstdc++ libgcc patch logrotate supervisor inotify-tools
apk update && apk upgrade
apk add --no-cache mysql-client
mysql -h 127.0.0.1 -P 4000 -u root -D test
show databases;
select tidb_version();
set @@tidb_general_log = 1; # 会记录所有 sql 语句
SET PASSWORD FOR 'root'@'%' = 'wdqdmm@r'; # 修改root密码
CREATE USER 'ihunter'@'%' IDENTIFIED BY 'wdqdmm@m'; # 增加用户
GRANT ALL PRIVILEGES ON *.* TO 'ihunter'@'%' WITH GRANT OPTION; # 给用户授权
SHOW GRANTS FOR 'ihunter'@'%'; # 显示授权情况
DROP USER 'ihunter'@'%'; # 删除用户
mysql -h 127.0.0.1 -P 4000 -uroot -pwdqdmm@r -D test