首页/数据/NoSQL 速查/ON CLUSTER 集群 DDL
ClickHouse56 条

ON CLUSTER 集群 DDL

ON CLUSTER 让一条 DDL 在集群所有节点执行:创建库表、改结构、删表都可以用;执行进度与结果记录在 system.distributed_ddl_queue。

NoSQL 速查数据更新于 2026-10-12
语法CREATE/ALTER/DROP … ON CLUSTER <cluster>
查看进度SELECT * FROM system.distributed_ddl_queue 按 query_id/状态过滤
注意事项各节点结构必须一致,否则副本表会出现同步异常

示例

示例
CREATE DATABASE IF NOT EXISTS analytics ON CLUSTER prod;

CREATE TABLE analytics.events_local ON CLUSTER prod
(
    ts DateTime,
    id UInt64
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/events_local', '{replica}')
ORDER BY (id, ts);

SELECT entry, status, status_stopped_host
FROM system.distributed_ddl_queue
ORDER BY entry DESC LIMIT 10;
分布式 DDL 需要一个健康的协调服务与同名集群配置;部分节点失败时可用 SYSTEM RESTART REPLICA 或重跑语句处理。

易错点

  • 单机直连执行不带 ON CLUSTER 的 DDL 只会改一台机器,集群副本结构随后不一致
  • 网络抖动导致个别节点漏执行时,重跑前先查 distributed_ddl_queue 的实际状态

数据来源与参考

  • ClickHouse Docs: ON CLUSTER clause
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌