更新时间:2024-04-29 GMT+08:00
怎么删除ClickHouse集群ZooKeeper节点的副本表格?
问题现象
连接ClickHouse集群后并创建表格,删除表格后出现ZooKeeper节点未删除干净现象。
图1 结果显示图
原因分析
由于创建表格的命令中携带了ON CLUSTER default_cluster,所以会在每一个节点上都创建一个本地表。
处理方法
删除其他节点上的表格以及存放的数据,可解决此问题。
- 创建数据库。
create database demo ON CLUSTER default_cluster;
- 使用数据库,在新建的数据库中创建表。
use demo;
创建表test。
CREATE TABLE demo.test ON CLUSTER default_cluster(`EventDate` DateTime, `id` UInt64)ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/test', '{replica}') PARTITION BY toYYYYMM(EventDate) ORDER BY id;
- 删除表格。
drop table test SYNC;
- 再次创建同名表格,出现以下现象。
┌─host──────────┬─port─┬─status─┬─error──────────────────────────────────────────────────────────────────────────────────────────────┬─num_hosts_remaining─┬─num_hosts_active─┐ │ 192.168.2.185 │ 9000 │ 57 │ Code: 57. DB::Exception: Table demo.test already exists. (TABLE_ALREADY_EXISTS) (version 22.3.2.1) │ 1 │ 1 │ └───────────────┴──────┴────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────┴──────────────────┘ ┌─host─────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ 192.168.2.16 │ 9000 │ 0 │ │ 0 │ 0 │ └──────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
- 方法一:用以下删除命令会删除每个节点上的表以及存放的相关数据。
drop table test ON CLUSTER default_cluster SYNC;
创建同名表格,创建成功。
- 方法二:进入其他节点删除表格。
drop table test SYNC;
父主题: 数据读写类