推广

ClickHouse高可用集群方案

iseeyu2年前 (2024-02-21)推广126

方案1.0.jpg

优势

架构简单,单机和分布式都可以用

劣势

单点题,数据丢失风险大

方案2.0:MergeTree + Distributed + 多副本

在方案一的基础上为每个节点增加副本

方案2.0.jpg

优势

在1.0的基础上,数据安全有了保障,任何一个实例或者服务器挂掉了,不影响集群查询服务

劣势

如果某个节点挂了,恢复以后可以将丢失的增量数据补全,但是如果硬盘彻底损坏,存量数据基本无法恢复,且这种方案不能用两个节点互为主备,会造成数据错乱

方案3.0:ReplicatedMergeTree + Distributed + 多副本

把2.0方案中的数据表引擎替换成ReplicatedMergeTree,并设置分布式写入时只写入分片的一个节点:internal_replication设置为true
实现同一个分片中,写入一个节点的数据后,自动同步到其他的副本中
下图实现的是一个节点启动多个ClickHouse实例

方案3.0.jpg

优势

ReplicatedMergeTree表引擎管理数据副本(依赖Zookeeper),无须担心节点挂掉后数据的同步和丢失问题

劣势

集群配置比较复杂, macros配置分片和副本需要仔细

metrika.xml配置

2分片2副本配置.jpg

节点扩展

方案3.0节点扩展.jpg

单节点多实例部署

多套配置文件

/etc/clickhouse-server/目录下的config.xmlusers.xmlmetrika.xml复制到/etc/clickhouse-server/replica02/目录下
并对config.xml中配置的目录和端口做如下修改:

<!-- 日志目录 -->
<logger>
    <log>/var/log/clickhouse-server/replica02/clickhouse-server.log</log>
    <errorlog>/var/log/clickhouse-server/replica02/clickhouse-server.err.log</errorlog>
</logger>

<!-- 端口 -->
<http_port>8124</http_port>
<tcp_port>9001</tcp_port>
<mysql_port>9005</mysql_port>
<interserver_http_port>9010</interserver_http_port>

<!-- 数据目录 -->
<path>/var/lib/clickhouse/replica02/</path>
<tmp_path>/var/lib/clickhouse/replica02/tmp/</tmp_path>
<user_files_path>/var/lib/clickhouse/replica02/user_files/</user_files_path>

<!-- user配置 -->
<user_directories>
    <local_directory>
        <!-- Path to folder where users created by SQL commands are stored. -->
        <path>/var/lib/clickhouse/replica02/access/</path>
    </local_directory>
</user_directories>

<include_from>/etc/clickhouse-server/replica02/metrika.xml</include_from>

<format_schema_path>/var/lib/clickhouse/replica02/format_schemas/</format_schema_path>

多套服务启动文件

复制 /etc/systemd/system/clickhouse-server.service 重命名为 clickhouse-server-replica02.serviced
修改启动时加载的配置指向新的文件上,同时pid-file需要跟服务名称保持一直,否则启动不起来

ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/replica02/config.xml --pid-file=/run/clickhouse-server/clickhouse-server-replica02.pid

修改完毕后,重新加载systemd服务 system daemon-reload
然后使用命令启动多实例 sudo systemctl start clickhouse-server-replica02

集群验证

通过客户端登录任意节点,查询集群配置信息

select * from system.clusters; 

集群信息.jpg

集群数据写入

写入分布式表

分布式表会跨服务器分发插入数据,仅仅是简单的请求转发,同时写入多个副本无法保证副本数据的一致性,长时间可能会造成副本数据有些不一样
所以不推荐直接写入分布式表

利用ReplicatedMergeTree引擎写入本地表

将数据副本的同步过程交给ClickHouse的复制表引擎管理
可以自已指定要将哪些数据写入哪些服务器,并直接在每个分片上执行写入,并且你可以使用任何分片方案。对于复杂业务特性的需求,这可能是非常重要的
官方推荐这种方案

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://0291.com.cn/post/57497.html

相关文章

深圳seo优化:网站可以优化多少个关键词?

深圳seo优化:网站可以优化多少个关键词?

当许多站长进行网站搜索引擎优化时,对于为网站优化的关键字数量不是很清楚还有的是模糊的。因此,当我们在网络搜索问答时,没一个有标准答案。有人说五个-八个,还有人说可以超过十,不过也有人说无限。 关键词优化1、看看网站类型。首先,我们根据不同类型的网站来确定一个网站可以优化多少关键词。单页优化基本上是...

这3个信息流案例,凭什么客资成本能控制在60以内?

这3个信息流案例,凭什么客资成本能控制在60以内?

  今天给大家带来几个优秀的信息流广告案例,针对他们的数据和创意,也提出了一些优化建议,供大家参考。 案例一:化妆美容培训 行业:化妆美容培训 平台:百度信息流 创意: 投放数据(9月下旬): 展现:27w+ 点击:6000+ CTR:2...

小红书KOL查询!5月第3周小红书网红博主榜单

小红书KOL查询!5月第3周小红书网红博主榜单

用户使用小红书主要是2个逻辑。一是有着明确的需求,比如买口红,通过搜索相关关键词,获取相关分享内容,这要重视笔记的排名。二是无目的的浏览,想要打动这部分用户,需要创造需求,通过场景化营销,刺激用户消费。这些都离不开对小红书平台数据趋势的洞察,笔者通过千瓜数据整理了相关榜单供大家参考。 MCN-商业...

教你高效做好营销型网站建设

教你高效做好营销型网站建设

当今的互联网时代,很多企业都需要通过网络进行,同时也面临着一些困难的问题,如何才能做型网站,小创最近一直在关注着营销型网站的建设,因此收集了一些营销型网站建设的相关资料,今天就来和你分享一下。(1)网站结构:用户体验度高的网站一般导航和排版设计都很合理,这样不仅方便搜索引擎...

私人银行的“为”与“不为”——访民生银行财富管理和私人银行部总经理黄晋

私人银行的“为”与“不为”——访民生银行财富管理和私人银行部总经理黄晋

本报记者 慈玉鹏 张荣旺 北京报道近年来,伴随着高净值客户数量增长及企业传承服务需求增多,银行逐步向财富管理加码,私人银行业务发展成为重中之重。2021年,民生银行私人银行业务更进一步。达标客户数38545户,比上年末增长4803户,增幅14.23% ;私人银行达标客户金产...

信息流广告素材爆款指南

信息流广告素材爆款指南

关于信息流广告素材怎么做、如何快速通过测试、怎样制作爆款~ 最近收到了很多小伙伴的问题留言,所以今天就专门出了篇文章,来帮大家解答,问题很多希望可以帮助到你。 素材跟新时间:一个素材用多久比较合适? 信息流素材跑多久比较合适其实没有固定的时间,有的一个月,有的爆款素材跑了一年还在...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片