clickhouse相关内容简记 drop后重新建表提示 /clickhouse/tables/s1/dwd/xxxx/replicas/dt_fault already exists

1、clickhouse集群有分片和副本的概念;

比如3分片,2副本的集群:
三分片的意思是所有数据分为三份存储进三个分片内,具体数据分配比例取决于配置内的weight权重;
两副本的意思是针对每一个分片,存在两个副本,这两个副本保存的数据都是一样的,相互备份;

2、clickhouse集群依靠zookeeper做数据同步和状态同步,replicaedmergetree也就是复制表在副本之间的数据同步就是依赖zookeeper进行的

3、在集群上创建和删除表时使用on cluster clustername;

4、 drop on cluster 后再次创建提示 /clickhouse/tables/s1/dwd/xxxx/replicas/dt_fault already exists,这是因为删除状态没有同步到zookeeper,这是因为删除状态同步给zookeeper是异步的,解决方法如下:

a. 使用drop table table1 on cluster clustername sync,加了sync后就会立刻将删除状态同步到zookeeper,再次创建就不会报错了;
b.将使用的数据库引擎由atomic(默认库引擎)改为ordinary;
c.建表语句的replicatedMergeTree的第一个参数(在zookeeper存储此表元信息的文件夹地址),指定为带uuid的格式,这样和前面drop的表区分开就好了:

/clickhouse/tables/{layer}-{shard}-{uuid}/{database name}/{tablename}

5、集群内使用replicatedMergeTree引擎创建的表是本地物理表(local表),使用分布式表引擎Distributed创建逻辑表(逻辑视图)一般是物理表名字后加_all(all表);clickhouse集群外侧使用nginx做负载均衡,这样每次查询只会发送到一个分片内,所以如果查物理表只能查到一部分数据;因此需要修改查询逻辑改为查询分布式表(all表)可以查询到全部数据;

6、还遇到一个问题,使用all表做子查询的时候in关键字可能会报错,改为global in即可;详细见:

https://blog.csdn.net/qq_35448165/article/details/110682206

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HiddenWorld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值