clickhouse集群:数据未复制



我有一个有2个节点的集群用于测试。1个碎片和2个副本。zookeeper集群中的3个节点

<remote_servers>
<ch_cluster>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch1</host>
<port>9000</port>
</replica>
<replica>
<host>ch2</host>
<port>9000</port>
</replica>
</shard>
</ch_cluster>
</remote_servers>

宏在ch1:

<macros>
<shard>shard_01</shard>
<replica>replica-01</replica>
</macros>

宏在ch2:

<macros>
<shard>shard_01</shard>
<replica>replica-02</replica>
</macros>

zookeeper配置:

<zookeeper>
<node>
<host>zoo1</host>
<port>2181</port>
</node>
<node>
<host>zoo2</host>
<port>2181</port>
</node>
<node>
<host>zoo3</host>
<port>2181</port>
</node>
</zookeeper>

创建第一个表

CREATE TABLE IF NOT EXISTS test.hits_local ON CLUSTER ch_cluster
(
`date` Datetime,
`user_id` String,
`pageviews` Int32
)
ENGINE = ReplicatedMergeTree('/clickhouse/ch_cluster/tables/{shard}/hits_local', '{replica}')
PARTITION BY toStartOfHour(date)
ORDER BY (date)

,然后创建一个分布式表:

CREATE TABLE IF NOT EXISTS test.hits ON CLUSTER 'ch_cluster'
AS test.hits_local 
(
`date` Datetime,
`user_id` String,
`pageviews` Int32
)
ENGINE = Distributed('ch_cluster', 'test', 'hits_local')
test.hits_localch1select data fromtest.hits_localch2没有数据

然后我尝试从中选择test.hits分布式表ch25-6分钟后出现数据test.hits_localch2

我的问题当数据复制到ch2?谁负责将数据复制到另一个节点?是zookeeper还是我应该把数据插入到ch1和ch2的表中?我是否应该更改<<strong>internal_replication真正的在& lt;/internal_replication比;到

?是否需要将数据复制到测试中。ch2

?谢谢。

我应该更改true

不,你不应该。如果你使用了ReplicatedMergeTree, internal_replication必须为true.

复制由ReplicatedMergeTree表引擎内部完成。

副本使用其主机名和端口=9009进行通信。检查系统。Replication_queue table for errors

最有可能是节点"ch1"在Zookeeper中宣布自己的主机名,即"localhost"。所以第二个节点" 2"无法访问localhost:9009或其他内容。这些问题可以在clickhouse-server.log或system. log中找到。Replication_queue(它有一个包含错误的列).

即使在非常高负载的设置中,通常复制延迟也小于2秒。

相关内容

  • 没有找到相关文章

最新更新