前面的文章简单的介绍了ClickHouse,以及也进行了简单的性能测试。本次说说集群的搭建以及数据复制,如果复制数据需要zookeeper配合。

环境:

1. 3台机器,我这里是3台虚拟机。都安装了clickhouse。

2. 绑定hosts,其实不绑定也没关系,配置文件里面直接写ip。(3台机器都绑定hosts,如下)

192.168.0.10 db_server_yayun_01
192.168.0.20 db_server_yayun_02
192.168.0.30 db_server_yayun_03

3. 创建配置文件,默认这个配置文件是不存在的。/etc/clickhouse-server/config.xml有提示,如下:
If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
Values for substitutions are specified in /yandex/name_of_substitution elements in that file.

配置文件/etc/metrika.xml内容如下:

<yandex>
<clickhouse_remote_servers><perftest_3shards_1replicas><shard><internal_replication>true</internal_replication><replica><host>db_server_yayun_01</host><port>9000</port></replica></shard><shard><replica><internal_replication>true</internal_replication><host>db_server_yayun_02</host><port>9000</port></replica></shard><shard><internal_replication>true</internal_replication><replica><host>db_server_yayun_03</host><port>9000</port></replica></shard></perftest_3shards_1replicas>
</clickhouse_remote_servers><zookeeper-servers><node index="1"><host>192.168.0.30</host><port>2181</port></node>
</zookeeper-servers><macros><replica>192.168.0.10</replica>
</macros><networks><ip>::/0</ip>
</networks><clickhouse_compression>
<case>  <min_part_size>10000000000</min_part_size>             <min_part_size_ratio>0.01</min_part_size_ratio><method>lz4</method>
</case></clickhouse_compression></yandex>

3台机器的配置文件都一样,唯一有区别的是:

<macros><replica>192.168.0.10</replica>
</macros>

服务器ip是多少这里就写多少,其实不写ip也没关系,3台机器不重复就行。这里是复制需要用到的配置。还有zk的配置如下:

<zookeeper-servers><node index="1"><host>192.168.0.30</host><port>2181</port></node>
</zookeeper-servers>

我的zk是安装在30的机器上面的,只安装了一个实例,生产环境肯定要放到单独的机器,并且配置成集群。配置文件修改好以后3台服务器重启。
官方文档给的步骤是:

ClickHouse deployment to clusterClickHouse cluster is a homogenous cluster. Steps to set up:1. Install ClickHouse server on all machines of the cluster
2. Set up cluster configs in configuration file
3. Create local tables on each instance
4. Create a Distributed table

前面2步都搞定了,下面创建本地表,再创建Distributed表。(3台机器都创建,DDL不同步,蛋疼)

CREATE TABLE ontime_local (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);
CREATE TABLE ontime_all AS ontime_local ENGINE = Distributed(perftest_3shards_1replicas, default, ontime_local, rand())

插入数据(随便一台机器就行):

:) insert into ontime_all (FlightDate,Year)values('2001-10-12',2001);INSERT INTO ontime_all (FlightDate, Year) VALUESOk.1 rows in set. Elapsed: 0.013 sec. :) insert into ontime_all (FlightDate,Year)values('2002-10-12',2002);INSERT INTO ontime_all (FlightDate, Year) VALUESOk.1 rows in set. Elapsed: 0.004 sec. :) insert into ontime_all (FlightDate,Year)values('2003-10-12',2003);INSERT INTO ontime_all (FlightDate, Year) VALUESOk.

我这里插入了3条数据。下面查询看看(任何一台机器都可以):

:) select * from  ontime_all;SELECT *
FROM ontime_all ┌─FlightDate─┬─Year─┐
│ 2001-10-12 │ 2001 │
└────────────┴──────┘
┌─FlightDate─┬─Year─┐
│ 2002-10-12 │ 2002 │
└────────────┴──────┘
┌─FlightDate─┬─Year─┐
│ 2003-10-12 │ 2003 │
└────────────┴──────┘
→ Progress: 3.00 rows, 12.00 B (48.27 rows/s., 193.08 B/s.)
3 rows in set. Elapsed: 0.063 sec. :) 

当在其中一台机器上面查询的时候,抓包其他机器可以看见是有请求的。

tcpdump -i any -s 0 -l -w - dst port 9000

那么关闭其中一台机器呢?

:) select * from ontime_all;SELECT *
FROM ontime_all ┌─FlightDate─┬─Year─┐
│ 2001-10-12 │ 2001 │
└────────────┴──────┘
┌─FlightDate─┬─Year─┐
│ 2002-10-12 │ 2002 │
└────────────┴──────┘
┌─FlightDate─┬─Year─┐
│ 2003-10-12 │ 2003 │
└────────────┴──────┘
↓ Progress: 6.00 rows, 24.00 B (292.80 rows/s., 1.17 KB/s.) Received exception from server:
Code: 279. DB::Exception: Received from localhost:9000, ::1. DB::NetException. DB::NetException: All connection tries failed. Log: Code: 210, e.displayText() = DB::NetException: Connection refused: (db_server_yayun_02:9000, 192.168.0.20), e.what() = DB::NetException
Code: 210, e.displayText() = DB::NetException: Connection refused: (db_server_yayun_02:9000, 192.168.0.20), e.what() = DB::NetException
Code: 210, e.displayText() = DB::NetException: Connection refused: (db_server_yayun_02:9000, 192.168.0.20), e.what() = DB::NetException

可以看见已经抛错了,竟然不是高可用?后面又看到了文档的另外一种配置方法,那就是配置2个节点,副本2个,经过测试高可用没有问题,另外也是分布式并行查询。感兴趣的同学可以自行测试。
https://clickhouse.yandex/reference_en.html#Distributed

下面进行数据复制的测试,zk已经配置好了,直接建表测试(3台机器都创建):

CREATE TABLE ontime_replica (FlightDate Date,Year UInt16) ENGINE = ReplicatedMergeTree('/clickhouse_perftest/tables/ontime_replica','{replica}',FlightDate,(Year, FlightDate),8192);

插入数据测试:

insert into ontime_replica (FlightDate,Year)values('2018-10-12',2018);

任何一台机器均可查询到。其实到现在对于集群和复制都还没彻底搞明白,因为分布式表也进行了数据复制,所以有点懵。有大婶的话欢迎一起交流。

参考资料:

https://clickhouse.yandex/reference_en.html#Distributed

https://clickhouse.yandex/tutorial.html

转载于:https://www.cnblogs.com/gomysql/p/6708650.html

ClickHouse之集群搭建以及数据复制相关推荐

  1. Docker网络测试;集群搭建;数据卷使用

    Dockers网络管理 Docker默认管理 1.Docker安装时会自动创建三种网络 2.利用命令查看网络详情 自定义网络 1.创建自定义网络;-driver可以指定网络驱动类型 2.使用自定义网络 ...

  2. 达梦数据库数据守护集群搭建(命令行方式)

    文章目录 达梦数据守护集群介绍 一.前提 二.环境准备 1.数据守护集群搭建 2.配置过程 达梦数据守护集群介绍 达梦数据守护集群软件(DM Data Watch)是一种集成化的高可靠性解决方案,该方 ...

  3. Windows下Kafka集群搭建

    一.Windows下Zookeeper集群搭建. 1.集群版本:2.8.1,3.0版本不再支持JDK8,不在需要Zookeeper. 2.Zookeeper版本:3.8.0. 3.Zookeeper三 ...

  4. 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复

    文章目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchB ...

  5. redis安装、集群搭建等

    1 Redis介绍 1.1 什么是NoSql 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库. NoSQL,泛指非关系型的数据库,NoSQL即Not-On ...

  6. Elasticsearch(二、高级查询+集群搭建)

    1内容概述 ElasticSearch 高级操作 ElasticSearch 集群管理 2 ElasticSearch高级操作 2.1 bulk批量操作-脚本 脚本: 测试用的5号文档 POST /p ...

  7. 基于zookeeper的solrCloud集群搭建

    转自:https://blog.csdn.net/yougoule/article/details/78445759  基于原文对实践遇到的问题稍作补充 1.安装及搭建相关环境 1.1环境准备 cen ...

  8. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  9. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

最新文章

  1. Python生物信息学①将RNA序列翻译成蛋白质序列。
  2. PostgreSQL — Overview
  3. MAC apache配置
  4. Unity自带网络功能——NetworkView组件、Serialize、RPC
  5. 转本计算机考试题目,2011江苏专转本计算机考试模拟试题答案
  6. Mybaits之Mapper动态代理开发
  7. Ajax-jQuery_Ajax_实例 ($.ajax、$.post、$.get)
  8. java实用教程丁振凡_Java语言实用教程(第3版)
  9. 最新C语言编程软件推荐(2021整理)
  10. 101-150的质数
  11. Oracle中存储过程中变量的声明与赋值
  12. 不同局域网内进行网络连接的建立方法
  13. 纯前端实现 App Store 卡片展开效果
  14. 关于U盘中毒,文件全变成快捷方式
  15. android屏幕分享软件,火萤Up - 视频分享
  16. AI-常见机器学习算法介绍
  17. 网站系统开发公司分析
  18. MATLAB中广义极值分布的分析、测试、个人理解
  19. 计算机社团活动教学计划,趣味科学社团教学计划记录、总结.doc
  20. 165体重_女生165cm标准体重

热门文章

  1. PHP开发中csrf攻击的简单演示和防范
  2. MyBatis注解模式取参数方法
  3. 根据需要通过代码的方式加载js文件
  4. tp数据库表大写命名的一些问题
  5. SQL Server 2012笔记分享-29:日志文件的工作方式
  6. 关于linux LVM
  7. 新装ubuntu10.04后的一些设置
  8. 在redhat6.3 安装oracle 11.2.0.1遇到的错误
  9. Android 动画AlphaAnimation类方法
  10. Android进程优先级architecture : low memory killer (/system/core/lmkd/lmkd.c)