V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liunaijie
V2EX  ›  问与答

求教 clickhouse 的副本问题

  •  1
     
  •   liunaijie · 2020-09-20 15:48:25 +08:00 · 950 次点击
    这是一个创建于 1306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在部署 clickhouse 的集群模式时,想加几个副本。
    但是根据教程配置完成后,数据不会同步到副本节点上,看了好多教程,文章都是这样的配置,所以想请教一下在哪里出了问题。
    环境:本地 docker 起了两个 clickhouse 实例,1 个 zookeeper 实例。
    主要配置文件为:

        <clickhouse_remote_servers>
            <ckcluster_1_2>
                <!--分片 1-->
                <shard>
                	<internal_replication>true</internal_replication>
                    <!--副本 1-->
                    <replica>
                        <host>172.17.0.3</host>
                        <port>9000</port>
                    </replica>
                    <!--副本 2-->
                    <replica>
                        <host>172.17.0.4</host>
                        <port>9000</port>
                    </replica>
                </shard>
            </ckcluster_1_2>
        </clickhouse_remote_servers>
    
        <zookeeper-servers>
            <node index="1">
                <host>172.17.0.2</host>
                <port>2181</port>
            </node>
        </zookeeper-servers>
        
        <macros>
        	<shard>01</shard>
            <replica>172.17.0.3</replica>	##另一个为 172.17.0.4
        </macros> 
       
    

    这个配置可以执行分布式 DDL 命令,例如下面这个语句,执行后在两个节点都能查到这张表。

    CREATE DATABASE cluster_test ON CLUSTER ckcluster_1_2;
    CREATE TABLE cluster_test.user_local ON CLUSTER ckcluster_1_2 (
    	name String,
    	address Nullable(String),
    	age UInt8
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ckcluster_1_2/user_local', '{replica}')
    PARTITION BY age
    ORDER BY tuple()
    SETTINGS index_granularity = 8192;
    

    但是向这个表插入数据,数据并不会同步到另一个节点上,这个问题困扰了我好久,如果集群之间不能同步,为什么创表能同步。

    然后又创建了一个分布式表

    CREATE TABLE IF NOT EXISTS cluster_test.user_all ON CLUSTER ckcluster_1_2 
    AS cluster_test.user_local 
    ENGINE = Distributed(ckcluster_1_2, cluster_test, user_local, rand());
    

    这个表也可以集群同步,但是向这个表插入数据还是同步不了。
    十分困惑,希望有大佬能指教一下。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5054 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:15 · PVG 09:15 · LAX 18:15 · JFK 21:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.