TiDB 集群安装

简介: TiDB 集群安装

安装 TiDB

TiDB 需要安装 TiKV,RocksDB, PD等软件。

环境

Ubuntu 14.04.4 (64bit)

编译二进制文件

二进制程序如tidb-servertikv-serverpd-server都可以在一台主机上编译后分发到其它主机上去,只要保持主机环境基本一致即可。

RocksDB是编译成动态库文件,在不同主机上共享比较麻烦(甚至无法共享?),所以建议每台放置TiKV组件的主机上都进行一次编译。

注:本次部署是在一台跳板机上进行所有二进制文件的编译。

编译PD

1)安装Golang

wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.6.3.linux-amd64.tar.gz

2)编译PD

git clone https://github.com/pingcap/pd
cd pd
make build

安装RocksDB

apt-get update
apt-get install libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev -y
wget https://github.com/facebook/rocksdb/archive/v4.8.tar.gz
tar xzvf v4.8.tar.gz 
cd rocksdb-4.8
make shared_lib -j4
cp librocksdb.so.4.8.0 /usr/local/lib
ln -fs /usr/local/lib/librocksdb.so.4.8.0 /usr/local/lib/librocksdb.so
ln -fs /usr/local/lib/librocksdb.so.4.8.0 /usr/local/lib/librocksdb.so.4
ln -fs /usr/local/lib/librocksdb.so.4.8.0 /usr/local/lib/librocksdb.so.4.8
ldconfig

编译TiKV

1)安装rust

curl -sSf https://static.rust-lang.org/rustup.sh | sh -s -- --channel=nightly

2)编译TiKV

git clone https://github.com/pingcap/tikv
cd tikv
make release

# 在TiKV运行主机上
cp target/release/tikv-server /usr/local/bin/

编译TiDB

1)安装Golang

wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.6.3.linux-amd64.tar.gz

2)编译TiDB

git clone https://github.com/pingcap/tidb.git $GOPATH/src/github.com/pingcap/tidb
cd $GOPATH/src/github.com/pingcap/tidb
make server

# 在TiDB运行主机上
cp $GOPATH/bin/tidb-server /usr/local/bin
    • *

运行TiDB

运行TiDB需要依次运行:pd, tikv, tidb

架构分布

TiDB: 192.168.100.3, 192.168.100.4, 192.168.100.5 PD: 192.168.100.6, 192.168.100.7, 192.168.100.8 TiKV: 192.168.100.9, 192.168.100.10, 192.168.100.11

主机列表图

运行pd

注意 需要在很短时间将几个pd-server同时运行起来,否则会造成找不到的状况,然后一个一个出错退出。

  1. pd1(在192.168.100.6这台主机上运行)
pd-server --cluster-id=1 \
      --addr="192.168.100.6:1234" \
      --advertise-addr="192.168.100.6:1234" \
      --http-addr="192.168.100.6:9090" \
      --etcd-name=pd1 \
      --etcd-advertise-client-url="http://192.168.100.6:2379" \
      --etcd-advertise-peer-url="http://192.168.100.6:2380" \
      --etcd-initial-cluster="pd1=http://192.168.100.6:2380,pd2=http://192.168.100.7:2380,pd3=http://192.168.100.8:2380" \
      --etcd-listen-peer-url="http://192.168.100.6:2380" \
      --etcd-listen-client-url="http://192.168.100.6:2379" 
  1. pd2(在192.168.100.7这台主机上运行)
pd-server --cluster-id=1 \
      --addr="192.168.100.7:1234" \
      --advertise-addr="192.168.100.7:1234" \
      --http-addr="192.168.100.7:9090" \
      --etcd-name=pd2 \
      --etcd-advertise-client-url="http://192.168.100.7:2379" \
      --etcd-advertise-peer-url="http://192.168.100.7:2380" \
      --etcd-initial-cluster="pd1=http://192.168.100.6:2380,pd2=http://192.168.100.7:2380,pd3=http://192.168.100.8:2380" \
      --etcd-listen-peer-url="http://192.168.100.7:2380" \
      --etcd-listen-client-url="http://192.168.100.7:2379" 
  1. pd3(在192.168.100.8这台主机上运行)
pd-server --cluster-id=1 \
      --addr="192.168.100.8:1234" \
      --advertise-addr="192.168.100.8:1234" \
      --http-addr="192.168.100.8:9090" \
      --etcd-name=pd3 \
      --etcd-advertise-client-url="http://192.168.100.8:2379" \
      --etcd-advertise-peer-url="http://192.168.100.8:2380" \
      --etcd-initial-cluster="pd1=http://192.168.100.6:2380,pd2=http://192.168.100.7:2380,pd3=http://192.168.100.8:2380" \
      --etcd-listen-peer-url="http://192.168.100.8:2380" \
      --etcd-listen-client-url="http://192.168.100.8:2379" 

运行TiKV

由于TiKV依赖于RocksDB,所以需要先安装RocksDB。

注意 TiKV二进制文件tikv-server可以在一台主机上编译了放到其它主机上运行,但是RocksDB好像不可以。 所以每一台主机上都需要进行一次RocksDB的安装。

1)安装RocksDB 在 192.168.100.9, 192.168.100.10, 192.168.100.11 这三台主机上,分别进行RocksDB的安装。 2)将编译过后的tikv-server文件分发到上面三台主机上,放到系统PATH目录中。 3)运行TiKV

# 在192.168.100.9这台主机上运行
tikv-server -S raftkv --addr 192.168.100.9:5050 --etcd 192.168.100.6:2379,192.168.100.7:2379,192.168.100.8:2379 -s /data --cluster-id 1

# 在192.168.100.10这台主机上运行
tikv-server -S raftkv --addr 192.168.100.10:5050 --etcd 192.168.100.6:2379,192.168.100.7:2379,192.168.100.8:2379 -s /data --cluster-id 1

# 在192.168.100.11这台主机上运行
tikv-server -S raftkv --addr 192.168.100.11:5050 --etcd 192.168.100.6:2379,192.168.100.7:2379,192.168.100.8:2379 -s /data --cluster-id 1

运行TiDB

tidb-server分发到192.168.100.3, 192.168.100.4, 192.168.100.5这三台主机上去,放置于类似/usr/local/bin目录中。

在这三台主机上都运行如下命令:

tidb-server --store=tikv --path="192.168.100.6:2379,192.168.100.7:2379,192.168.100.8:2379/pd?cluster=1" -lease 1 -P 3306

反向代理

三台TiDB同时运行,三者互不干涉,需要一个反向代理来进行负载均衡与流量分发。这里使用的是Nginx 1.10.1来进行TCP反向代理。

    • *

效果

在任意一台机器上,使用MySQL客户端,访问集群,效果如下所示。 最终效果图

后记

折腾了大半天,终于跑了起来。测试后续补充。

相对于CockroachDB的开箱即用,TiDB的部署还是相对麻烦一些。不过,总体来说,还是比较简单的,只是官方文档现在(2016/07/26)也不齐全,而且仅有单机模式的部署说明。

目录
相关文章
|
6月前
|
SQL 消息中间件 关系型数据库
ClickHouse(04)如何搭建ClickHouse集群
ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,[ClickHouse(03)ClickHouse怎么安装和部署](https://zhuanlan.zhihu.com/p/532431053)。
527 1
|
安全 前端开发 关系型数据库
单机手动部署OceanBase集群
单机手动部署OceanBase的实验步骤,有详细截图
1249 0
|
1月前
|
消息中间件 测试技术 Kafka
使用ClickHouse集群的7个基本技巧
使用ClickHouse集群的7个基本技巧
98 1
|
24天前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
55 0
|
NoSQL MongoDB
MongoDB分片+副本集高可用集群的启停步骤
MongoDB分片+副本集高可用集群的启停步骤
282 0
|
存储 SQL 分布式计算
clickhouse集群安装与实践
因项目需要,将阿里云中间件tablestore替换成clickhouse,并将tablestore中的亿级数据迁移到clickhouse
1223 2
|
消息中间件 关系型数据库 Kafka
TiDB实时同步数据到PostgreSQL(一) ---- 搭建kafka集群
TiDB实时同步数据到PostgreSQL的第一篇,主要介绍kafka集群的搭建。
|
Prometheus Cloud Native Linux
OceanBase 4.0:使用all in one包安装和启动一个单机集群
Ocean Base 4.0的all in one 包简化了安装和启动集群的步骤
1988 0
OceanBase 4.0:使用all in one包安装和启动一个单机集群
|
Java Linux 网络安全
【数据库】starrocks 安装部署集群版
【数据库】starrocks 安装部署集群版
1009 0
|
存储 运维 Kubernetes
PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案
本文将介绍在 Rainbond 上使用 Postgresql-repmgr + Pgpool 实现 Postgresql 高可用集群的部署和管理。
下一篇
无影云桌面