推广

ClickHouse高可用集群方案

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

方案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://www.0291.com.cn/post/57497.html

相关文章

兴趣电商,如何点亮阅读兴趣?

兴趣电商,如何点亮阅读兴趣?

“电子书和互联网平台冲击着纸质图书”——这是长久以来就存在、并甚嚣尘上的一种论调。但事实真的如此吗?根据图书行业咨询机构北京开卷信息技术有限公司的,2021年国内图书零售销售码洋(指全部图书定价总额)为987亿元,较2016年增幅达41%,复合年增长率达7%。在图书市场获得...

天猫优品店加盟去哪里加盟(怎么加入天猫优品店)

天猫优品店加盟去哪里加盟(怎么加入天猫优品店)

如有意向加盟天猫优品,可以直接去阿里巴巴的相关部门提交自己的申请材料,或者也可以直接和阿里巴巴的在线客服取得联系,提交自己要加盟的意向,不过,需要满足条件才行。...

这类SEO大咖可能是个江湖混子。

这类SEO大咖可能是个江湖混子。

深圳整站优化今天与您分享这类SEO大咖可能是个江湖混子。你是否经常会看到一些朋友对SEO的理解可以说是非常通透,可以将SEO谈论的头头是道,甚至上升到学术的层面也可以涉及到更弘大的人生当中,但你如果打破这个幻境,问其是否有高权重网站,可以看看时,通常对方都会拒绝,本身这样是可以理解的,因为防止出现一...

淘宝信息层面售假怎么补救(高效处理办法分享

淘宝信息层面售假怎么补救(高效处理办法分享

大家好,我是菜帮主。淘宝卖家都知道,淘宝信息层面售假基于平台大数据技术,从账号、商品、交易、物流等多个维度对涉嫌售假的商品和账号等进行排查,同时根据商家的商品标题、描述、图片、价格等综合维度来判断商品是否涉嫌假货,即使是仓库中未发布的宝贝及卖家自行删除的宝贝也会进行排查的。所以要是淘宝信息层面售...

企业网站的SEO优化主要做哪些方面。

企业网站的SEO优化主要做哪些方面。

如果一个企业的网站优化得很好,它的排名和流量自然会很高。但是很多企业管理者并不知道SEO优化,因为他们中的大多数人都没有接触过这个行业。他们还想知道SEO,想知道在哪里和什么优化网站。下面重蔚自留地就为您介绍一下SEO优化。 很多企业网站在功能描述上没有写明关键内容是什么,容易导致搜索引擎无法对网...

小编分享杭州seo做好seo优化方法有哪些。

小编分享杭州seo做好seo优化方法有哪些。

很多的事情想要真正做得更好,总是会有一些,我们在做seo的过程中,想要把这些方面做的更加的到位,同样需要掌握到正确的方式,这样才可以实现更好的结果。有些人在做的过程中,根本就没有对这些方面有进一步的了解,最终就无法收获到更加不错的东西,这就影响到了网站的排名,也影响到了今后的发展,对于任何公司来说...

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

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