明心见性者 2023-07-28 17:36 采纳率: 100%
浏览 24
已结题

clickhouse集群删除数据能在任意节点删除所有节点数据吗

环境配置:
clickhouse 集群,
集群有三个主节点
集群有三个slave节点

建表语句:

CREATE TABLE IF NOT EXISTS schematest.test_lq ON CLUSTER clustername 
( id UInt64, column1 String)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{uuid}/{shard}','{replica}')
ORDER BY id;

create table schematest.test_lq_all on cluster clustername 
( id UInt64, column1 String)
engine = Distributed(clustername ,schematest, test_lq,hiveHash(id))
SETTINGS  fsync_after_insert=1,fsync_directories=1;

insert into schematest.test_lq_all values(1,'xsssssss')(2,'xxxxxx')(3,'yyyxxx');
insert into schematest.test_lq_all values(4,'xsssssss')(5,'xxxxxx')(6,'yyyxxx');
insert into schematest.test_lq_all values(7,'xsssssss')(8,'xxxxxx')(9,'yyyxxx');

删除语句,删除物理表:

ALTER TABLE test_lq ON CLUSTER clustername DELETE WHERE id='dd'

在master1 插入数据后,在master1和master2 都能在test_lq_all 中查询到数据。但是在master2的test_lq 表中查看不到。这种现象我觉得是正常的。

然而在master2 删除数据,在master1 中查询不到数据了,这个是为什么,按照我的理解不会删除master1中的数据,但是实际情况缺删除了。

  • 写回答

2条回答 默认 最新

  • 家有娇妻张兔兔 优质创作者: Java技术领域 2023-07-28 17:52
    关注

    使用分布式任务了,
    ALTER TABLE test_lq ON CLUSTER clustername DELETE WHERE id='dd'
    在整个集群中的所有节点上都会执行删除操作的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 已采纳回答 7月31日
  • 创建了问题 7月28日