将新节点添加到 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 集群的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章