文档章节

TiDB 分布式数据库搭建

miaojiangmin
 miaojiangmin
发布于 2017/08/01 13:30
字数 1462
阅读 21
收藏 0
点赞 0
评论 0

因为公司数据量比较大,一种方法是采用mycat这种数据库中间件的形式。但是感觉不是很方便。后来发现了TiDB打算,可以尝试试用一下。用datax把历史数据转入到TiDB中,然后在TiDB中进行分析。 第一步:现在台式机中的虚拟机中部署起来。 第二步:数据转移 第三部:测试性能,判断是否可用。

官网为TiDB

目前已经在一台服务器上搭建起来一台单机版的TiDB服务器。简单添加了一些数据,发现居然没有原生的mysql快,问了一下高手,说TiDB要需要集群才能发挥优势。 目前是想采用Kettle来同步原来Oracle中的数据到新的数据库中去。但是现在遇到问题就是用jdbc连接会有问题。我相信这个问题会解决的。是在不行可以先同步到mysql,然后我用navicat的工具同步到TiDB。

如果下周有时间的话,我想搭建集群的TiDB数据库,然后再测试一下性能对比。

日均数据量千万级,MySQL、TiDB两种存储方案的落地对比 这篇文章给我信心。

查看了官网,官网有三种部署方法。(Ansible 部署方案),Binary 部署方案 ,Docker 部署方案。目前对我来说最快的部署方案是第二种。但是第一种和第三种也是要学习的。 我先贴一下第二中部署的方式。现在TiDB已经是RC4版本了,距离正式版发布已经不远了。

一个完整的 TiDB 集群包括 PD,TiKV 以及 TiDB。启动顺序依次是 PD,TiKV 以及 TiDB。

阅读本章前,请先确保阅读 部署建议

快速了解和试用 TiDB,推荐使用单节点方式快速部署。

功能性测试 TiDB,推荐使用功能性测试部署。

生产环境使用 TiDB,推荐使用多节点集群模式部署。

目前因为已经搭建了单点方式部署,但是发挥不出优势来。所以想采取功能性测试,等对去年一年的销售进行分析后,如果性能达到要求的话,可以采用多节点集群部署的方式。

系统的话,决定采用Ubuntu。

下载官方 Binary

Linux (CentOS 7+, Ubuntu 14.04+)

下载压缩包

wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256

检查文件完整性,返回 ok 则正确

sha256sum -c tidb-latest-linux-amd64.sha256

解开压缩包

tar -xzf tidb-latest-linux-amd64.tar.gz cd tidb-latest-linux-amd64

检查文件完整性,返回 ok 则正确

sha256sum -c tidb-latest-linux-amd64-centos6.sha256

解开压缩包

tar -xzf tidb-latest-linux-amd64-centos6.tar.gz cd tidb-latest-linux-amd64-centos6 单节点方式快速部署


我们可以在单机上面,运行和测试 TiDB 集群,请按如下步骤依次启动 PD,TiKV,TiDB:


启动 PD
./bin/pd-server --data-dir=pd \
                --log-file=pd.log
启动 TiKV
./bin/tikv-server --pd="127.0.0.1:2379" \
                  --data-dir=tikv \
                  --log-file=tikv.log
启动 TiDB
./bin/tidb-server --store=tikv \
                  --path="127.0.0.1:2379" \
                  --log-file=tidb.log
使用官方的 mysql 客户端连接 TiDB
mysql -h 127.0.0.1 -P 4000 -u root -D test
多节点集群模式部署

在生产环境中,我们推荐多节点部署 TiDB 集群,首先请参考部署建议。

这里我们使用六个节点,部署三个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下:

Name Host IP Services node1 192.168.199.113 PD1, TiDB node2 192.168.199.114 PD2 node3 192.168.199.115 PD3 node4 192.168.199.116 TiKV1 node5 192.168.199.117 TiKV2 node6 192.168.199.118 TiKV3 请按如下步骤 依次启动 PD 集群,TiKV 集群以及 TiDB:

在 node1,node2,node3 依次启动 PD
./bin/pd-server --name=pd1 \
                --data-dir=pd1 \
                --client-urls="http://192.168.199.113:2379" \
                --peer-urls="http://192.168.199.113:2380" \
                --initial-cluster="pd1=http://192.168.199.113:2380" \
                --log-file=pd.log

./bin/pd-server --name=pd2 \
                --data-dir=pd2 \
                --client-urls="http://192.168.199.114:2379" \
                --peer-urls="http://192.168.199.114:2380" \
                --join="http://192.168.199.113:2379" \
                --log-file=pd.log

./bin/pd-server --name=pd3 \
                --data-dir=pd3 \
                --client-urls="http://192.168.199.115:2379" \
                --peer-urls="http://192.168.199.115:2380" \
                --join="http://192.168.199.113:2379" \
                --log-file=pd.log
在 node4,node5,node6 启动 TiKV
./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \
                  --addr="192.168.199.116:20160" \
                  --data-dir=tikv1 \
                  --log-file=tikv.log

./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \
                  --addr="192.168.199.117:20160" \
                  --data-dir=tikv2 \
                  --log-file=tikv.log

./bin/tikv-server --pd="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \
                  --addr="192.168.199.118:20160" \
                  --data-dir=tikv3 \
                  --log-file=tikv.log
在 node1 启动 TiDB
./bin/tidb-server --store=tikv \
                  --path="192.168.199.113:2379,192.168.199.114:2379,192.168.199.115:2379" \
                  --log-file=tidb.log
使用官方 mysql 客户端连接 TiDB
mysql -h 192.168.199.113 -P 4000 -u root -D test

####注意: 在生产环境中启动 TiKV 时,建议使用 --config 参数指定配置文件路径。

如果使用 nohup 在生产环境中启动集群,需要将启动命令放到一个脚本文件里面执行,否则会出现因为 Shell 退出导致 nohup 启动的进程也收到异常信号退出的问题,具体参考进程异常退出。 功能性测试部署

####这是目前想采取的模式

如果只是对 TiDB 进行测试,并且机器数量有限,我们可以只启动一台 PD 测试 整个集群。

这里我们使用四个节点,部署一个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下:

Name Host IP Services node1 192.168.199.113 PD1, TiDB node2 192.168.199.114 TiKV1 node3 192.168.199.115 TiKV2 node4 192.168.199.116 TiKV3 请按如下步骤 依次启动 PD 集群,TiKV 集群以及 TiDB:

在 node1 启动 PD
./bin/pd-server --name=pd1 \
                --data-dir=pd1 \
                --client-urls="http://192.168.199.113:2379" \
                --peer-urls="http://192.168.199.113:2380" \
                --initial-cluster="pd1=http://192.168.199.113:2380" \
                --log-file=pd.log
在 node2,node3,node4 启动 TiKV
./bin/tikv-server --pd="192.168.199.113:2379" \
                  --addr="192.168.199.114:20160" \
                  --data-dir=tikv1 \
                  --log-file=tikv.log

./bin/tikv-server --pd="192.168.199.113:2379" \
                  --addr="192.168.199.115:20160" \
                  --data-dir=tikv2 \
                  --log-file=tikv.log

./bin/tikv-server --pd="192.168.199.113:2379" \
                  --addr="192.168.199.116:20160" \
                  --data-dir=tikv3 \
                  --log-file=tikv.log
在 node1 启动 TiDB
./bin/tidb-server --store=tikv \
                  --path="192.168.199.113:2379" \
                  --log-file=tidb.log
使用官方 mysql 客户端连接 TiDB
mysql -h 192.168.199.113 -P 4000 -u root -D test

如果这个方案成功了的话,对于原本存放在oracle中的冷数据,也可以分析起来了。

大家也可以参考下面的文章 PingCAP布道Percona Live 2017 展示TiDB强悍性能 TiDB 的正确使用姿势 [是时候选择NewSQL数据库了(http://blog.csdn.net/erlib/article/details/53420606)

© 著作权归作者所有

共有 人打赏支持
miaojiangmin
粉丝 9
博文 307
码字总数 83084
作品 0
宁波
程序员
TiDB 在饿了么归档环境的应用

背景 随着业务增长,公司数据规模不断膨胀,表变多、变大。一方面占用的磁盘、CPU 等物理资源疾速上涨,另一方面大表性能下降且变更困难。实际上,很多大表的数据无需保留很久,比如某些业务...

TiDB ⋅ 04/26 ⋅ 0

开源分布式 NewSQL 关系型数据库 - TiDB

TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 F1 和 Google spanner, TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。 TiDB 的源码已经托管在 Git@OSC 上,详情...

goroutine ⋅ 2015/09/06 ⋅ 37

TiDB 分布式数据库在转转公司的应用实践

作者:孙玄,转转公司首席架构师;陈东,转转公司资深工程师;冀浩东,转转公司资深 DBA。 公司及业务架构介绍 转转二手交易网 —— 把家里不用的东西卖了变成钱,一个帮你赚钱的网站。由腾讯...

TiDB ⋅ 05/30 ⋅ 0

TiDB 在西山居实时舆情监控系统中的应用

公司简介 西山居创建 1995 年初夏,在美丽的海滨小城珠海,西山居工作室孕育而生,一群西山居居士们十年如一日尅勊业业的奋斗。"创造快乐,传递快乐!" 一直是西山居居士们的创作宗旨。西山居...

TiDB ⋅ 06/11 ⋅ 0

重磅!开源分布式 NewSQL 数据库 TiDB 2.0 正式发布

去年十月,TiDB 1.0 版本发布,在接下来的六个月中,开发团队一方面在维护 1.0 版本的稳定性并且增加必要的新特性,另一方面马不停蹄的开发 2.0 版本。经过 6 个 RC 版本,TiDB 2.0 GA 版本于...

雨田桑 ⋅ 04/28 ⋅ 19

TiDB 源码阅读系列文章(十)Chunk 和执行框架简介

什么是 Chunk TiDB 2.0 中,我们引入了一个叫 Chunk 的数据结构用来在内存中存储内部数据,用于减小内存分配开销、降低内存占用以及实现内存使用量统计/控制,其特点如下: 只读 不支持随机写...

TiDB ⋅ 06/19 ⋅ 0

盘点知名云计算公司的数据库服务(国内篇)

  【IT168 评论】“跨界”是现在很火的一个词,它是指从某一属性的事物进入另一属性的运作,其不只在演艺圈掀起了一阵热潮,同时也在科技圈也带起了一阵狂潮。今天,我们就来看看科技圈第一...

it168网站 ⋅ 04/30 ⋅ 0

TiDB如何定义分片键,与分片规则?

@TiDB 你好,想跟你请教个问题: 我找遍了TiDB的文档,也没找到定义分片键的命令与规则。我想不是所有的表都需要做分片吧,是应该区别分片表与非分片表的,还有可以不同的分片规则。 另外,如...

snowingximen ⋅ 05/31 ⋅ 2

薯条蘸番茄/laiwan-game

laiwan-game 概述: 工作之余练手项目。可用于局制游戏服务端,其他游戏类型也可以支持,实现了集群部署应付压力。 网关服务节点:接受客户端请求,分发到各处理节点(大厅、房间、游戏)。 ...

薯条蘸番茄 ⋅ 04/16 ⋅ 0

完善 Chaos 的线性一致性测试

在之前的文章里面,我提到我用 Go 写了一个类似 Jepsen 的工具 - Chaos ,里面我使用的是 Porcupine 来进行的线性一致性测试,但 Porcupine 并不能长时间执行,因为它要解决的是一个 NP har...

siddontang ⋅ 05/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim编辑模式、命令模式

编辑模式 vim要从一般模式进入编辑模式只要按字母 i 、I、a、A、o、O键就可以了 要从编辑模式回到一般模式按键盘上的Esc键即可。 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 o ...

黄昏残影 ⋅ 25分钟前 ⋅ 0

OSChina 周五乱弹 —— 如果有一天不当程序员了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享off的单曲《我唱情歌给你听》 《我唱情歌给你听》- off 手机党少年们想听歌,请使劲儿戳(这里) @小小编辑 :#如果不做程序...

小小编辑 ⋅ 32分钟前 ⋅ 4

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部