求教 clickhouse 的副本问题

2020-09-20 15:48:25 +08:00
 liunaijie

在部署 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());

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

955 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708760

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX