ITPub博客

首页 > 数据库 > SQL on Hadoop > ClickHouse查询分布式表数据总变? 数据同步错副本?

ClickHouse查询分布式表数据总变? 数据同步错副本?

原创 SQL on Hadoop 作者:chenoracle 时间:2024-10-06 20:32:53 0 删除 编辑

架构说明:
ck部署在3台服务器上,每台服务器上配置两个ck实例,端口分别为9100和9200,架构是3分片2副本架构。
问题现象1:
节点1,节点3查询分布式表,数据总变,节点2查询数据正常。
其中t1_all表插入了10条数据。
节点1执行多次查询,结果不稳定,总变,6、10、12 .....每次查询都不一样。

select * from t1_all;

问题现象2:

节点1:9100实例 和 节点2:9200实例 互为副本;
节点2:9100实例 和 节点3:9200实例 互为副本;
节点3:9100实例 和 节点1:9200实例 互为副本;

当向节点1:9100实例写入时间时,发现节点2:9200实例可以正常同步实例,

但是节点3:9200实例居然也同步了数据,实际上不应该同步。
问题分析:
检查配置文件副本配置部分,并没有发现异常,节点1:9100实例的副本只有节点2:9200实例。

<ck_cjc_cluster>
  <shard>
     <internal_replication>true</internal_replication>
     <replica>
       <host>192.0.10.11</host>
       <port>9100</port>
       <user>default</user>
       <password>******</password>
     </replica>
     <replica>
       <host>192.0.10.12</host>
       <port>9200</port>
       <user>default</user>
       <password>******</password>
     </replica>
   </shard>
......

那么还有哪些参数会影响数据同步呢?
最终发现节点3:9200实例的<macros>参数配置有问题,

原以为这个参数只起到默认标签的作用,没想到还有副本作用,

正是因为<replica>和<macros>都影响副本行为,

数据不一致时就可能会出现这种看上去奇怪的问题。

<macros>
  <shard>01</shard>
  <replica>cjc03-xx-x</replica>
</macros>

解决方案:
修改为

<macros>
  <shard>02</shard>
  <replica>cjc03-xx-x</replica>
</macros>

再次测试,恢复正常。
###chenjuchao 20241002###
欢迎关注我的公众号《IT小Chen》

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-3035165/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2719599