文档首页/ 表格存储服务 CloudTable/ 常见问题/ 数据读写类/ 怎么删除ClickHouse集群ZooKeeper节点的副本表格?
更新时间:2024-04-29 GMT+08:00

怎么删除ClickHouse集群ZooKeeper节点的副本表格?

问题现象

连接ClickHouse集群后并创建表格,删除表格后出现ZooKeeper节点未删除干净现象。

图1 结果显示图

原因分析

由于创建表格的命令中携带了ON CLUSTER default_cluster,所以会在每一个节点上都创建一个本地表。

处理方法

删除其他节点上的表格以及存放的数据,可解决此问题。

  1. 创建数据库。

    create database demo ON CLUSTER default_cluster;

  2. 使用数据库,在新建的数据库中创建表。

    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;

  3. 删除表格。

    drop table test SYNC;

  4. 再次创建同名表格,出现以下现象。

    ┌─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 │
    └──────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

  5. 方法一:用以下删除命令会删除每个节点上的表以及存放的相关数据。

    drop table test ON CLUSTER default_cluster SYNC;

    创建同名表格,创建成功。

  6. 方法二:进入其他节点删除表格。

    drop table test SYNC;