ClickHouse集群应用、分片、复制

举报
1226741228 发表于 2019/01/16 11:33:41 2019/01/16
【摘要】 数据分片分片,就像是把鸡蛋放到多个篮子里,降低整体风险,结果可能是部分数据不可用,虽然一定程度上起到了「高可用」的作用,但分片的目的是为了提速。况且,比较严格的场景下,部分不可用也是不可用。1.建数据表先创建本地表ontime_local:CREATE TABLE ontime_local (FlightDate Date,Year UInt16) ENGINE = MergeTree(Fl...

数据分片

分片,就像是把鸡蛋放到多个篮子里,降低整体风险,结果可能是部分数据不可用,虽然一定程度上起到了「高可用」的作用,但分片的目的是为了提速。况且,比较严格的场景下,部分不可用也是不可用。

1.建数据表

先创建本地表ontime_local:

CREATE TABLE ontime_local (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);

然后建分布式表ontime_all:

CREATE TABLE ontime_all AS ontime_local ENGINE = Distributed(bip_ck_cluster, ck, ontime_local, rand());

说明:Distributed(集群名字,数据库名,数据表名,分片原则)

2.插入数据

INSERT INTO ontime_all SELECT * FROM ontime;

把ontime的数据插入到ontime_all,ontime_all会随机插入到三个节点的ontime_local里。

说明:如果配置文件的weight为1的话,会按照这个权重分配数据到各个节点。

3.查询

导入完成后,查看总数据量:

1.png

再看下每个节点的数据:

2.png

可以看到,每个节点大概有1/3的数据。

4.性能对比

不分片

3.png

分片

4.png

数据备份

数据备份与分片没有必然联系,这是两方面的问题。但是在ClickHouse中,replica是挂在shard上的,因此要用多副本,必须先定义shard。

最简单的情况:1个分片多个副本

1.添加集群

像之前一样,再配置一个集群,叫做cluster_1shards_2replicas,表示1分片2副本,配置信息如下(不用再另建集群):

5.png

注意,如果配置文件没有问题,是不用重启clickhouse-server的,会自动加载!

2.建数据表

6.png

表名为ontime_local_2,在三台机器分别执行。

3.建分布式表

7.png

表名是ontime_all_2,使用cluster_1shards_2replicas集群,数据为ontime_local_2。

4.导入数据

8.png

5.查询

9.png

查询ontime_local_2,两个节点都有全量数据。关掉一个服务器,仍能查询全量数据,数据副本已经生效。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。