ReplicatedMergeTree 数据同步问题
发布于 7 个月前 作者 liangchen 692 次浏览 来自 问答

我部署2台clickhouse,都创建可表:create table if not exists test.timelocal(created Date, id UInt16) engine=ReplicatedMergeTree(’/clickhouse/tables/{shard}/hits’,’{replica}’,created,(created,id),8192) 当我在A节点 操作:insert into timelocal values (‘2018-02-03’,1)后,在A节点通过select * from timelocal 是可以查到这行记录的,但是在B节点通过select * from timelocal却查不到。 如果我在B节点也尝试操作insert into timelocal values (‘2018-02-03’,1),会提示插入成功,但是在B节点通过select * from timelocal却查不到,貌似被去重了。 如果我在B节点也尝试操作insert into timelocal values (‘2018-02-03’,2),会提示插入成功,同时在B节点通过select * from timelocal也可以找到这条id=2记录。

我的问题是,ReplicatedMergeTree不是会把相互节点的表内容作同步,然后可以在任一节点上查看到相同的数据的吗?另外,如果不同步,为啥B节点尝试插入A节点相同的记录会被去重?

A节点 metrika.xml 配置(修改成B节点的IP就成了B节点的配置) WX20180119-144843.png

5 回复

我一开始也是发现不能同步,把 config.xml 中的 listen_host 改成 0.0.0.0 后就可以了,猜测是节点之间不能互相通信

@wayhome 谢谢回复,我是因为没有配置interserver_http_host所以没同步的~

您好, 我这边怎么都没法同步过去,不知道哪里出了问题. 是想做一个分片三个副本 我看你的配置里面zookeeper-servers只配置了一个,如果要多个副本的话,是不是要配置多个节点的ip进去? 另外macros里的配置是只要每个副本用不一样的名字就可以了吧 搞了一两天了,现在弄得是ABC三个节点, 要分别建立ReplicatedMergeTree 表, 然后B插入数据A能看到,C看不到, AC插入数据别人都看不到,迷茫

@xm1987911 写个问答,把config.xml和metrika.xml的配置张贴出来看看

@liangchen 多谢,找到问题了, 当时因为怕host的问题,把所有地方都改成了ip,但是还是有其他地方要用到host,导致消息发不出去. 所以还是把用到ip的地方尽量改成host,这样出问题的概率小点.

回到顶部