Clickhouse 配置中文详细介绍 第二章 metrika.xml

相关文章:Clickhouse 配置中文详细介绍 第一章 config.xml-CSDN博客

文件位置:config.d/metrika.xml

这个文件是基于主文件 config.xml 拆分出来的子文件,可以拆分成多个,在主文件中引用。

想要了解更多 config.xml 配置信息,点击上面的第一章介绍

<yandex>
     


    <!-- 
        
        分片(Shard)
            分片 是数据的逻辑分隔。每个分片存储数据的子集。
        副本(Replica)
            副本 是 分片 的复制版本。它们存储分片中的相同数据,并用于冗余和高可用性。如果一个副本出现故障,其他副本可以继续提供服务。


        Clickhouse集群配置: 3 分片、3 主副本、3 副本、3 注册中心

        分片1:  主副本:11.22.33.41   副本:11.22.33.44
        分片2:  主副本:11.22.33.42   副本:11.22.33.45
        分片3:  主副本:11.22.33.43   副本:11.22.33.46

        总共 6 台机器,只有 41、42、43 是提供服务,44、45、46 用来做副本


        注册中心(zookeeper):
            11.22.33.47
            11.22.33.48
            11.22.33.49




        为什么所有节点都要配置为副本?/ 为什么每个分片需要配置两个副本?
            配置所有节点作为副本是为了确保每个分片的数据在多个节点上都有备份。这样,即使某个节点出现故障,其他副本节点仍能提供服务,保证系统的可靠性和稳定性。
            每个分片的两个副本提供以下优点:
                高可用性:如果一个副本失败,另一个副本仍能提供服务,确保数据不会丢失。
                负载均衡:多个副本可以分担查询负载,提高查询性能。
                容错性:副本之间的数据一致性保障了系统的容错能力。

    
        在 ClickHouse 集群中,副本机器的主要目的是提供数据冗余和容错。副本机器(Replicas)并不会直接提供服务,但它们在以下方面起着重要作用:
            数据冗余:
                副本机器存储主副本的完整数据副本,这样即使主副本机器出现故障,也能从副本机器中恢复数据。
            故障恢复:
                当主副本机器出现故障时,ClickHouse 可以自动将请求转发到副本机器,确保数据的可用性和服务的连续性。
            负载均衡:
                虽然副本机器本身不会直接处理查询请求,但在 ClickHouse 集群中,通常会通过分布式表(Distributed Table)来实现负载均衡。这意味着查询会被分配到所有副本中,从而减少主副本的负载。
            数据一致性:
                ClickHouse 使用 ZooKeeper 来协调主副本和副本之间的数据一致性。ZooKeeper 确保主副本和副本之间的数据同步,避免数据丢失。


        在副本机器上提供服务的情况,副本机器的确在某些情况下参与查询服务,例如:
            在高可用性配置中:
                当主副本机器出现故障时,副本机器可以自动接管主副本的角色,继续提供服务。
            在查询负载分配中:
                在分布式表的查询中,ClickHouse 会将查询负载分配到所有副本(包括主副本和副本机器),从而实现负载均衡和提高查询性能。
            配置副本机器
                为了使副本机器能够正常工作并参与查询服务,通常需要配置以下内容:


        主副本和副本配置:
            确保每个副本机器配置正确,并在 ZooKeeper 中注册。
        分布式表设置:
            配置分布式表以包括所有的副本机器,从而实现负载均衡和容错。
        同步设置:
            配置 ClickHouse 的复制机制和同步策略,确保副本数据的及时更新和一致性。

    -->
 
    <remote_servers>
 

        <!--  集群名称 3分片1副本  这是集群的名称,用于标识该集群。在分布式表中,你可以引用这个集群名来进行跨节点的查询。 -->
        <!-- security_cluster !!!! 这个要替换为定义自己的集群名称 -->
        <clickhouse_cluster>
 
 
 
            <!--
                集群的第一个分片 001  定义集群中的一个分片(shard)。一个分片可以包含一个或多个副本。所有副本的数据通常是相同的,但分片之间的数据可以不同。
                如何确定分片:顺序决定分片! 在 ClickHouse 中,分片是按顺序确定的,第一个 <shard> 是第一个分片,第二个 <shard> 是第二个分片,以此类推。
            -->
            <shard>
 
                <!--(可选): 定义分片的权重,用于负载均衡。权重较高的分片将处理更多的请求。  -->
                <weight>1</weight>
 
                <!-- (可选): 如果设置为 true,ClickHouse 将自动管理副本之间的数据复制。如果为 false,你需要自己管理复制。  -->
                <internal_replication>true</internal_replication>
 
                <!-- 定义分片中的一个副本。每个副本都有一个主机地址和端口号 -->
                <replica>
 
                    <!-- 副本所在服务器的主机名或 IP 地址。 -->
                    <host>11.22.33.41</host>
                    <!-- ClickHouse 服务器的端口号,默认是 9000。 -->
                    <port>9992</port>
                    <!--(可选): 用于连接远程 ClickHouse 服务器的用户名,默认是 default。 -->
                    <user>clickhouse</user>
                    <!--(可选): 用户的密码。如果没有设置密码,可以留空。 -->
                    <password>clickhouse</password>
                    <!-- 设置默认数据库 -->
                    <default_database>clickhouse_database</default_database>
 
                </replica>


                <replica>
                    <host>11.22.33.44</host>
                    <port>9992</port>
                    <user>clickhouse</user>
                    <password>clickhouse</password>
                    <default_database>clickhouse_database</default_database>    
                </replica>
 
            </shard>



            <!--集群的第一个分片 002-->
            <shard>
                <weight>1</weight>
                <internal_replication>true</internal_replication>
 
                <replica>
                    <host>11.22.33.42</host>
                    <port>9992</port>
                    <user>clickhouse</user>
                    <password>clickhouse</password>
                    <default_database>clickhouse_database</default_database>
                </replica>
                <replica>
                    <host>11.22.33.45</host>
                    <port>9992</port>
                    <user>clickhouse</user>
                    <password>clickhouse</password>
                    <default_database>clickhouse_database</default_database>
                </replica>
            </shard>
 
 
 
            <!--集群的第三个分片 003-->
            <shard>
                <weight>1</weight>
                <internal_replication>true</internal_replication>
 
                <replica>  
                    <host>11.22.33.43</host>
                    <port>9992</port>
                    <user>clickhouse</user>
                    <password>clickhouse</password>
                    <default_database>clickhouse_database</default_database>
                </replica>
                <replica>
                    <host>11.22.33.46</host>
                    <port>9992</port>
                    <user>clickhouse</user>
                    <password>clickhouse</password>
                    <default_database>clickhouse_database</default_database>
                </replica>
 
            </shard>
 
 
 
        </clickhouse_cluster>
 
 
    </remote_servers>
 
 
 
    <!-- zookeeper-servers 配置  -->  
    <zookeeper>
 
        <!--  index 属性表示 ZooKeeper 集群中的节点顺序。ClickHouse 会使用这些 ZooKeeper 节点进行集群中的协调工作。 -->
        <node index="1">
            <host>11.22.33.47</host>
            <port>2181</port>
        </node>
 
        <node index="2">
            <host>11.22.33.48</host>
            <port>2181</port>
        </node>
 
        <node index="3">
            <host>11.22.33.49</host>
            <port>2181</port>
        </node>
     
    </zookeeper>
 
 
    <!-- 本机绑定地址,不限制访问来源ip地址 -->
    <!--  配置块用于指定 ClickHouse 可以接受连接的 IP 地址范围 -->
    <networks>
        <!--
            ::/0: 这是一个 IPv6 通配符地址,表示允许所有 IPv6 地址连接。
            如果你想允许所有 IPv4 地址连接,你可以使用 0.0.0.0/0。此配置没有限制访问来源的 IP 地址,任何地址都可以连接到 ClickHouse 服务器。
        -->
        <ip>::/0</ip>
    </networks>
 
 
    <!--
        宏(macros)是一种用于简化和动态生成 SQL 查询的机制。它们主要用于配置文件中,以便在 SQL 查询中动态地替换特定的值或表达式,从而提高查询的灵活性和可维护性。
        在 SQL 查询中使用宏   
            SELECT * FROM {cluster:shard} WHERE column = 'value';
            SELECT * FROM shard_1 WHERE column = 'value';
       常见宏的类型
            {default_database}: 表示默认数据库名。
            {shard}: 表示当前使用的分片名,常用于分布式查询。
            {replica}: 表示当前使用的副本名。
            {cluster}: 表示集群名。
 
        注意事项
            宏只在特定的场景下有效,例如配置文件中的 macros 标签内定义的宏可以在查询或分布式表的配置中使用。
            宏的使用必须符合 ClickHouse 的语法规则,否则可能导致查询错误
    -->
             
<!--    
    <macros>
        <cluster>cluster_name</cluster>
        <shard>02</shard>
        <replica>cluster01-02-1</replica>
    </macros>
-->
 
</yandex>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值