将新节点添加到 Clickhouse 集群的正确方法是啥?

Posted

技术标签:

【中文标题】将新节点添加到 Clickhouse 集群的正确方法是啥?【英文标题】:What's is the correct way of adding new nodes to a Clickhouse cluster?将新节点添加到 Clickhouse 集群的正确方法是什么? 【发布时间】:2021-08-01 10:27:30 【问题描述】:

目前我们在 20.4.8.99 版本上运行 CH。 我们有 3 个节点填充了 ReplicatedReplacingMergeTree 表。

添加额外节点的正确步骤是什么?互联网上充斥着关于设置集群的信息,但没有太多关于扩展它的信息(在文档中也找不到任何信息)。

我尝试使用 DDL 从现有节点简单地创建新表,但只出现了很多错误。主要是关于具有表的现有数据目录的节点(好像表在某个时候被分离了)。

ATTACH 也会导致语法警告:

ATTACH TABLE table FROM 'path' (columns types) engine = ReplicatedReplacingMergeTree(...)

结果:

Syntax error: failed at position 34 ... Expected one of: storage definition, ENGINE (version 20.4.8.99 (official build))

【问题讨论】:

【参考方案1】:

您应该在每个新节点上执行相同的 CREATE TABLE。 CREATE TABLE -- 创建一个新的副本/分片。

您可以从现有节点获取 ATTACH TABLE 并将 ATTACH 替换为 CREATE 并执行 CREATE TABLE 命令。

有一个新的 DATABASE 引擎 -- Replicated 可以缓解这种情况。使用 ReplicatedDatabase,您只需将新节点添加到集群。 ReplicatedDatabase 将自动创建表。 Altinity Operator(如果您使用 K8s)也有同样的魔力。

20.4 -- 不支持。尝试至少升级到 20.8(尽管它也几乎 EOL)。

【讨论】:

以上是关于将新节点添加到 Clickhouse 集群的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将节点添加到 Kubernetes 中的现有集群

Cassandra:将新节点引导到集群时,Long Par New GC 暂停

如何将节点添加到 mnesia 集群?

常见ClickHouse集群部署架构

ClickHouse安装及集群搭建

将新文档添加到现有集群中